GNU/Linux >> Linux の 問題 >  >> Linux

シンボリックリンクから所有権を変更するには?

Linux システムで、chown を使用してシンボリック リンクの所有権を変更する場合 、デフォルトではターゲットを変更します シンボリック リンクの ).

リンク自体の所有権を変更したい場合は、-h を使用する必要があります chown へのオプション :

<ブロック引用>

-h, --no-dereference 参照ファイルではなく、各シンボリック リンクに影響を与えます (シンボリック リンクの所有権を変更できるシステムでのみ有用です)

例:

$ touch test
$ ls -l test*
-rw-r--r-- 1 mj   mj   0 Jul 27 08:47 test
$ sudo ln -s test test1
$ ls -l test*
-rw-r--r-- 1 mj   mj   0 Jul 27 08:47 test
lrwxrwxrwx 1 root root 4 Jul 27 08:47 test1 -> test
$ sudo chown root:root test1
$ ls -l test*
-rw-r--r-- 1 root root 0 Jul 27 08:47 test
lrwxrwxrwx 1 root root 4 Jul 27 08:47 test1 -> test

ターゲット リンクの所有者は root になりました。

$ sudo chown mj:mj test1
$ ls -l test*
-rw-r--r-- 1 mj   mj   0 Jul 27 08:47 test
lrwxrwxrwx 1 root root 4 Jul 27 08:47 test1 -> test

繰り返しますが、リンク test1 test であっても、依然として root によって所有されています が変更されました。

$ sudo chown -h mj:mj test1
$ ls -l test*
-rw-r--r-- 1 mj mj 0 Jul 27 08:47 test
lrwxrwxrwx 1 mj mj 4 Jul 27 08:47 test1 -> test

最後に -h を使用してリンクの所有権を変更します オプション。


シンボリックリンクを操作するときは、ほとんどのツール (chown、chmod、ls...) にリンクを逆参照しないように指示する必要があります:-h を追加する必要があります マンページに記載されているパラメータ:

-h, --no-dereference
          affect symbolic links instead of any referenced file (useful only on systems that can change the ownership of a symlink)

試してみてください:sudo chown -h askar.admin /etc/init.d/jboss1


上記のエラーにも注意してください

ln: creating symbolic link `/etc/init.d/jboss1': Permission denied

シンボリックリンクの所有者が元のファイルの所有者以外の誰かによるものではありません。これは (おそらく) ユーザー askar がディレクトリ /etc/init.d への書き込みアクセス権を持っていないことが原因です。 .


Linux
  1. Linux サーバーからポート [TCP/UDP] 接続をテストする方法

  2. ターミナルカーソルをボックスから行に変更するには?

  3. Cron からのメールの From:フィールドを変更するには?

  1. Linuxでハードリンクとシンボリックリンクを作成する方法

  2. Linuxでchownコマンドを使用して所有権を変更する方法

  3. Linux 内から NTFS シンボリック リンクを作成する

  1. Unix または Linux でのシンボリック リンクのグループ所有権の変更

  2. コマンドラインでスクリプトから関数を実行するにはどうすればよいですか?

  3. シンボリックリンクをコピーするには?