私の課題の質問には次のような内容がありました。
すべてのユーザーにすべての権限を付与して削除できない一時ディレクトリを作成します。
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/World
Read/Write/Execute
0/1
- 所有者 - 読み取り、書き込み、実行
- グループ - 読み取りと実行(書き込みではありません)
- 世界 - 権限なし
したがって、この場合、私たちは許可を得て次のようにOwner
なります。read=1
write=1
execute=1
111 -> 7
、ライセンスがGroup
付与されます。read=1
write=0
execute=1
101 -> 5
最終的には次のものがWorld
あります:read=0
、許可をwrite=0
受けてexecute=0
:
000 -> 0
また、いわゆる設定も可能です。粘り強いビットディレクトリに。これにより、他のユーザーがこのディレクトリ内のファイルを削除したり名前を変更したりするのを防ぎます。所有者だけがこのディレクトリにあるファイルを削除または名前変更できます。したがって、あなたの場合、正しいchmod
コマンドは次のようになります。
chmod 1777 temp
3つのグループをすべて777
許可し、追加read/write/execute
1
粘り強いビット。