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

Linux/POSIX に lchown があるのに lchmod がないのはなぜですか?

Linux は、ほとんどの Unix 系システム (Apple OS/X はまれな例外の 1 つです) と同様に、たとえばターゲットの解決に関しては、シンボリック リンクのアクセス許可を無視します。

ただし、他のファイルと同様に、シンボリックリンクの所有権は、t を持つディレクトリ内のエントリの名前を変更またはリンク解除する許可に関して関連しています。 /tmp などのビット セット .

/tmp でファイル (シンボリック リンクかどうか) を削除または名前変更できるようにする 、ファイルの所有者である必要があります。これが、シンボリック リンクの所有権を変更したい理由の 1 つです (リンク解除/名前変更の許可を付与または削除するため)。

$ ln -s / /tmp/x
$ rm /tmp/x
# OK removed

$ ln -s / /tmp/x
$ sudo chown -h nobody /tmp/x
$ rm /tmp/x
rm: cannot remove ‘/tmp/x’: Operation not permitted

また、削除された回答で Mark Plotnick が述べたように、バックアップとアーカイブのアプリケーションには lchown() が必要です。 シンボリックリンクを元の所有者に復元します。別のオプションとして、シンボリック リンクを作成する前に euid と egid を切り替えることもできますが、これは効率的ではなく、シンボリック リンクが展開されるディレクトリの権限管理が複雑になります。


Linux
  1. Linux –なぜSuだけでなくSuを使用するのですか?

  2. Linux –ロケールEs_mxは機能するがEsは機能しないのはなぜですか?

  3. Linux – / usr/binと/usr/sbinを/bin(gnu / linux)にマージしますか?

  1. CentOS / RHEL 7 で systemd-tmpfiles が /tmp/ または /var/tmp (tmpwatch の置き換え) をクリーンアップする方法

  2. Linux では time.h で timer_t が定義されているのに、OS X では定義されていないのはなぜですか

  3. なぜ wine は Linux では 64 ビット プログラムを実行できるのに、Mac では実行できないのですか?

  1. Linuxで削除された/tmpディレクトリを復元する方法

  2. Linuxは複数の連続したパスセパレーター(/ home //// username /// file)をどのように処理しますか?

  3. /home、/usr、/var などのディレクトリがすべて同じ inode 番号 (2) を持っているのはなぜですか?