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 を切り替えることもできますが、これは効率的ではなく、シンボリック リンクが展開されるディレクトリの権限管理が複雑になります。