ディレクトリを削除することはできませんが、その中に新しいファイルを作成できますか?

ディレクトリを削除することはできませんが、その中に新しいファイルを作成できますか?

私の課題の質問には次のような内容がありました。

すべてのユーザーにすべての権限を付与して削除できない一時ディレクトリを作成します。

hello.sh をそのディレクトリにコピーしてすべてのユーザーに実行権限を付与しますが、hello.sh は所有者として実行されます。

だからtempというディレクトリを作成し、次の権限を与えました。

chmod 555 temp

しかし、hello.shをtempとしてcpしようとすると、tempの権限が555であるため、エラーが発生します。ここで教授は正確に何を尋ねたいですか?ディレクトリの削除を許可せずにファイルをディレクトリにコピーする方法は?

答え1

これが宿題であることを考えると、正確な答えは提供されませんが、次の点を考慮してください。この課題が割り当てられた場合、setuid合計とビットが記述されたことを意味します。stickyこの知識は作業を完了するのに十分でなければなりません。

答え2

Linuxは権限設定を3つのグループに分けます。

  • 所有者 - ファイルを所有するユーザー
  • グループ - ユーザーセット
  • World - 所有者でもなく、グループの一部でもありません。

次の権限を付与できます。

  • 読む
  • 書く
  • 実装する

このコマンドを使用すると、各グループに必須()ラベルを適用して、各グループchmod()の権限を設定できます。権限の設定に使用される数値は、実際には各グループに設定されたバイナリ()フラグを10進数で表したものです。たとえば、次を許可する権限を設定したいとします。Owner/User/WorldRead/Write/Execute0/1

  • 所有者 - 読み取り、書き込み、実行
  • グループ - 読み取りと実行(書き込みではありません)
  • 世界 - 権限なし

したがって、この場合、私たちは許可を得て次のようにOwnerなります。read=1write=1execute=1

111 -> 7

、ライセンスがGroup付与されます。read=1write=0execute=1

101 -> 5

最終的には次のものがWorldあります:read=0、許可をwrite=0受けてexecute=0

000 -> 0

また、いわゆる設定も可能です。粘り強いビットディレクトリに。これにより、他のユーザーがこのディレクトリ内のファイルを削除したり名前を変更したりするのを防ぎます。所有者だけがこのディレクトリにあるファイルを削除または名前変更できます。したがって、あなたの場合、正しいchmodコマンドは次のようになります。

chmod 1777 temp

3つのグループをすべて777許可し、追加read/write/execute1粘り強いビット

関連情報