次のコマンドでシンボリックリンクのユーザー/グループを変更しようとしています。
$ chown -h myuser:mygroup mysymbolic/
しかし、それは変わりません。私はrootとしてログインしています。現在のユーザー/グループはroot:rootに設定されています。何が悪かったのか?
私はターゲットの最後にスラッシュを入れていました:
chown -h myuser:mygroup mysymbolic/
最後にスラッシュを削除して動作します。正しい方法は次のとおりです。
chown -h myuser:mygroup mysymbolic
私はこれを自分で試しました、そしてそれは私のために働きます。 -hを指定した場合はシンボリックリンクの所有者を変更しますが、指定しなかった場合はリンクではなくファイル自体の所有者を変更します。
しかし、シンボリックリンクがディレクトリにリンクされているようには見えません。
-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/
ターゲットはファイルですか、それともディレクトリですか?
ディレクトリの場合は、-Hを試してください(大文字のH)
Myuserさんの家にあるmyuserさんによるリンクを再作成し、このリンクをSudoさんによるターゲットの場所に移動します。
たとえば、(myuserとして)、ln -s somedir/ linkname
(somedir /がユーザーのディレクトリに存在しない場合はリンク切れになります)
そして、Sudo mv linkname targetlocation
(targetlocation/somedir/
が存在すれば有効なリンクになります)
単に。
chown -h myuser:mygroup <symlink> [without trailing slash]
十分で動作するはずです。
私は同様の問題を抱えていました。私にとっては、chmodを呼び出した方法に関係なく、rootであってもシンボリックリンクをchmodできませんでした。これに混乱を加えるために、nautilusは所有者/グループを何も表示していませんでした。所有者はただ空白でした。それで、chmodが動かずnautilusがクラッシュしたので、rootとして実行しているnautilusを使ってシンボリックリンクを変更しようとしました。
しかし、私は問題を考え出したと思います。シンボリックリンクが指していたディレクトリは、シンボリックリンクとは異なる権限を持っていました。そのため、ターゲットディレクトリを(-hを使用して)自分のユーザー/グループ名に変更しました。それから同じものへのシンボリックリンクをchmodして、それはうまくいった!そしてnautilusで(root権限で)シンボリックリンクの詳細を表示してもクラッシュしなくなりました。
したがって、同様の問題を抱えている他の人にとっては、ターゲットディレクトリ/ファイルのパーミッションをチェックし、それがシンボリックリンクを設定しているパーミッションと互換性があることを確認してください。
シンボリックリンクのowner
を変更することはあなたがそれを割り当てたい新しいユーザによってターゲットがアクセス可能である場合にのみ働くことができることに注意してください。
例えば、あなたのターゲットがあなたがそれを割り当てようとしているユーザーが十分な権限を持っていないフォルダの中にある場合、ln -s command
の振る舞いはそれが全く何もしないようなものです。
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/