次のコマンドでシンボリックリンクのユーザー/グループを変更しようとしています。
$ chown -h myuser:mygroup mysymbolic/
しかし、それは変わりません。私はルートとしてログインしています。現在のユーザー/グループはroot:rootに設定されます。何が悪かったのか?
/
はすべてディレクトリです。あなたは意味mysymbolic
シンボリックリンク、されていない、mysymbolic/
おそらくそれが指すディレクトリです。
次のコマンドでシンボリックリンクのユーザー/グループを変更しようとしています。
$ chown -h myuser:mygroup mysymbolic/
しかし、それは変わりません。私はルートとしてログインしています。現在のユーザー/グループはroot:rootに設定されます。何が悪かったのか?
/
はすべてディレクトリです。あなたは意味mysymbolic
シンボリックリンク、されていない、mysymbolic/
おそらくそれが指すディレクトリです。
回答:
ターゲットの最後にスラッシュを入れていました。
chown -h myuser:mygroup mysymbolic/
最後にスラッシュを削除して動作します。正しい方法は次のとおりです。
chown -h myuser:mygroup mysymbolic
-h
フラグを覚えていれば、Ubuntuでも機能しました。
-h
ても付けなくても Ubuntu で動作します。
私は自分でこれを試してみましたが、それは私のために機能します。-hを指定すると、シンボリックリンクの所有者が変更されますが、削除しない場合は、リンクではなくファイル自体の所有者が変更されます。
しかし、シンボリックリンクはディレクトリにリンクされているので機能していないようです
chown
でもディレクトリに移動できませんでしたが、-h
フルパスを使用するとうまくいきました。
# 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/
myuserのホームでmyuserによってそのリンクを再作成し、このリンクをsudoによってターゲットの場所にmvします。
例:(myuserとして)、ln -s somedir/ linkname
(somedir /がユーザーのディレクトリに存在しない場合、壊れたリンクになります)
次に、sudo mv linkname targetlocation
(targetlocation/somedir/
存在する場合は有効なリンクが提供されます)
同様の問題がありました。私にとっては、chmodの呼び出し方法に関係なく、シンボリックリンクをルートとしてもchmodできませんでした。これに混乱を加えるために、nautilusは所有者/グループを何も表示していませんでした。所有者はただ空白でした。それで、chmodが機能せず、nautilusがクラッシュしたため、rootとして実行されているnautilusを使用してシンボリックリンクを変更しようとしました。
しかし、私は問題を理解したと思います。シンボリックリンクが指しているディレクトリには、シンボリックリンクとは異なる権限がありました。そこで、ターゲットディレクトリを(-hを使用して)ユーザー/グループ名にchmodしました。次に、同じものへのシンボリックリンクをchmodし、それが機能しました!また、nautilusでシンボリックリンクの詳細を表示(ルート権限を使用)してもクラッシュしなくなりました。
したがって、同様の問題を抱えている他のユーザーについては、ターゲットディレクトリ/ファイルのアクセス許可を確認し、シンボリックリンクを設定するアクセス許可と互換性があることを確認してください。
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/