web-dev-qa-db-ja.com

chownはシンボリックリンクを変えていません

次のコマンドでシンボリックリンクのユーザー/グループを変更しようとしています。

$ chown -h myuser:mygroup mysymbolic/ 

しかし、それは変わりません。私はrootとしてログインしています。現在のユーザー/グループはroot:rootに設定されています。何が悪かったのか?

305
rizidoro

私はターゲットの最後にスラッシュを入れていました:

chown -h myuser:mygroup mysymbolic/ 

最後にスラッシュを削除して動作します。正しい方法は次のとおりです。

 chown -h myuser:mygroup mysymbolic
375
rizidoro

私はこれを自分で試しました、そしてそれは私のために働きます。 -hを指定した場合はシンボリックリンクの所有者を変更しますが、指定しなかった場合はリンクではなくファイル自体の所有者を変更します。

しかし、シンボリックリンクがディレクトリにリンクされているようには見えません。

29
Arto Uusikangas

-hでもディレクトリをchownにすることはできませんでしたが、フルパスを使用するとうまくいきました。

# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 root   root     32 Dec 30 09:02 apps -> /u/apps/
# chown -h deploy:deploy apps
# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 root   root     32 Dec 30 09:02 apps -> /u/apps/
# chown -h deploy:deploy apps/
# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 root   root     32 Dec 30 09:02 apps -> /u/apps/
# pwd 
/var/www/html
# chown -h deploy:deploy /var/www/html/apps
# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 deploy deploy   32 Dec 30 09:02 apps -> /u/apps/
5
Steve Tauber

ターゲットはファイルですか、それともディレクトリですか?

ディレクトリの場合は、-Hを試してください(大文字のH)

4
Michael

Myuserさんの家にあるmyuserさんによるリンクを再作成し、このリンクをSudoさんによるターゲットの場所に移動します。

たとえば、(myuserとして)、ln -s somedir/ linkname(somedir /がユーザーのディレクトリに存在しない場合はリンク切れになります)

そして、Sudo mv linkname targetlocationtargetlocation/somedir/が存在すれば有効なリンクになります)

3
wangdong

単に。

chown -h myuser:mygroup <symlink> [without trailing slash]

十分で動作するはずです。

3
Aziz Zoaib

私は同様の問題を抱えていました。私にとっては、chmodを呼び出した方法に関係なく、rootであってもシンボリックリンクをchmodできませんでした。これに混乱を加えるために、nautilusは所有者/グループを何も表示していませんでした。所有者はただ空白でした。それで、chmodが動かずnautilusがクラッシュしたので、rootとして実行しているnautilusを使ってシンボリックリンクを変更しようとしました。

しかし、私は問題を考え出したと思います。シンボリックリンクが指していたディレクトリは、シンボリックリンクとは異なる権限を持っていました。そのため、ターゲットディレクトリを(-hを使用して)自分のユーザー/グループ名に変更しました。それから同じものへのシンボリックリンクをchmodして、それはうまくいった!そしてnautilusで(root権限で)シンボリックリンクの詳細を表示してもクラッシュしなくなりました。

したがって、同様の問題を抱えている他の人にとっては、ターゲットディレクトリ/ファイルのパーミッションをチェックし、それがシンボリックリンクを設定しているパーミッションと互換性があることを確認してください。

1
cgrey

シンボリックリンクのownerを変更することはあなたがそれを割り当てたい新しいユーザによってターゲットがアクセス可能である場合にのみ働くことができることに注意してください。

例えば、あなたのターゲットがあなたがそれを割り当てようとしているユーザーが十分な権限を持っていないフォルダの中にある場合、ln -s commandの振る舞いはそれが全く何もしないようなものです。

1
AnomalySmith

Solaris(S11.3で検証済み)の場合は、ディレクトリへのシンボリックリンクを作成する必要があります。

root@ac11x017:/var/tmp$ ls -lal dumpdir
lrwxrwxrwx   1 root     root          16 Jun 15 09:08 dumpdir -> /data/dumpdir/
root@ac11x017:/var/tmp$ chown -RP Oracle:oinstall dumpdir
lrwxrwxrwx   1 Oracle   oinstall      16 Jun 15 09:09 dumpdir -> /data/dumpdir/
1
RaamEE