シンボリックリンクに対する権限変更(学校練習) [重複]

シンボリックリンクに対する権限変更(学校練習) [重複]

私たちの学校では、ls -l出力が次のようにファイルとディレクトリを生成するように要求します(XXに関係なく)。

ここに画像の説明を入力してください。

最後のシンボリックリンクを除いて、すべての操作が正しく行われました。いつも777でなければならないシンボリックリンクの権限を変更することはできないようですが、私たちの学校では明示的に755で設定を要求します。

"chmod go -w test6"は間違いなく動作しませんが、どうすればいいですか?

私のオペレーティングシステムはUbuntu 20.04です。

答え1

難しい質問のようです。複数のシステムでは、fchmodat(2)フラグ付きのシステムコールを使用したり、システムコールとオプションを含むコマンドをAT_SYMLINK_NOFOLLOW使用してシンボリックリンクの権限を変更したりできますが、UbuntuなどのLinuxベースのオペレーティングシステムでは変更できません。lchmod(2)chmod-h

これらの権限の変更を許可する多くのシステムでは、とにかく無視されます(macosはIIRC例外です)。したがって、権限を変更する必要はほとんどありません。とにかくwシンボリックリンクは変更できないため、システム権限は重要ではないと予想しています。シンボリックリンクの宛先を変更するには、親ディレクトリへの書き込み+検索権限を必要とする新しい宛先にシンボリックリンクを再作成する必要があります1。

ここでは、次のようにだまされて上書きできますls

ls() (
  set -o pipefail
  command ls "$@" | sed 's/^lrwxrwxrwx/lrwxr-xr-x/'
)

ls(stdoutはパイプなので、ほとんどのls実装が端末デバイスに到達したときに異なる(より人間に優しい)出力を提供することが多いため、フォーマットに影響を与える可能性があることに注意してください。)


¹ 以下の場合です。所有権t(削除制限)ビットがディレクトリに設定され、そのディレクトリを所有していない場合、そのディレクトリを所有していない場合はシンボリックリンクを削除できるため、シンボリックリンクが重要になる可能性があります。

関連情報