ディレクトリの内容が読み取り専用になるようにディレクトリを読み取り専用として表示したいと思います。 chmod a = rxを使用してディレクトリを読み取り/実行専用に設定すると、ディレクトリとその内容を削除できません。半分ほど完了しても、内容は依然として修正される可能性があります。 chmod a = rはコンテンツを読み取らないようにします。
どんなアイデアがありますか?
答え1
探しているようですね。
chmod a-w -R your_directory
ディレクトリ内のファイルが変更されないようにするには、ファイル自体から書き込み属性を削除する必要があります。
答え2
簡単に言うと:
ディレクトリとその中のすべての既存/新しいファイルを読み取り専用に繰り返し設定します。
sudo chmod a=r -R /path/to/the/folder/
誰もが入るようにディレクトリ自体の権限を設定します。
sudo chmod a=rx /path/to/the/folder/
私がコメントする評判が足りないので、これについて徹底した答えを差し上げます。
私の言葉はSS64 chmodページchmodについて覚えていない場合はクイックリファレンスです。
ホームディレクトリにテストディレクトリを作成し、テストファイルを作成し、最後にディレクトリの内容を一覧表示します。
mkdir ~/testaubs
cd ~/testaubs
touch testfile.aubs
ls -l
合計0
-rw-r--r-- 1 aubs aubs 0 12月4日、03:19 testfile.aubs
このファイルはread-write
次の目的で使用されます。所有者、read
のためのグループread
そしてユーザー(他に誰が)。
提供するパラメータによっては、a=rx
誰もがファイルを読み取ることができるだけでなく実行することもできます。質問のタイトルは次のとおりです。読み取り専用。
実行する場合:
chmod a=rx testfile.aubs
ls -l
合計0
-r-xr-xr-x 1 aubs aubs 0 12月4日、03:19 testfile.aubs
これで、ファイルread-execute
に次のものが含まれます。所有者、read-execute
のためのグループread-execute
そしてユーザー(他に誰が)。
read
次のコマンドを実行して、このファイルに対する権限をすべての人に適用するように設定できます。
chmod a=r testfile.aubs
ls -l
合計0
-r--r--r-- 1 aubs aubs 0 12月4日、03:19 testfile.aubs
これで、ルート以外の誰もファイルを変更できません。ユーザーも同様です。
同じディレクトリに別のファイルを作成すると、次の問題が発生します。
touch testfile2.aubs
ls -l
合計0
-rw-r--r-- 1 aubs aubs 0 12月4日、03:35 testfile2.aubs
-r--r--r-- 1 aubs aubs 0 12月4日、03:19 testfile.aubs
新しいファイルは、そのファイルが配置されているtestfile2.aubs
親ディレクトリの権限を継承します。read-write
所有者、read
のためのグループread
そしてユーザー(他に誰が)。
誰かをブロックしたい場合作るディレクトリの新しいファイルにも親ディレクトリの権限を設定する必要があります。
まず、その権限が何であるかを確認し、1つ上のレベルに上がってすべてのファイルを一覧表示しますが、テストディレクトリのみを表示できるように制限します。
cd ..
ls -l | grep test
drwxr-xr-x 2 aubs aubs 4096 12月4日03:35にテストされました。
親ディレクトリにread-write-execute
次の権限があることがわかります。所有者、read-execute
のためのグループread-execute
そしてユーザー(他に誰が)。
ディレクトリ内のすべての既存ファイルと新しいファイルに対して再帰的な権限を設定できます。所有者、グループそしてユーザーただし、最初のファイルを次の目的でのみ有効にしたので、read
高い権限が必要です。sudo
read
所有者(私たちのアカウント):
sudo chmod a=r -R test/
ls -l | grep test
dr--r--r-- 2 aubs aubs 4096 12月4日03:35にテストされました。
その後、ディレクトリ自体の権限を設定できます。所有者、グループそしてユーザーどちらにも読み取り実行機能があります(ディレクトリに入るには実行する必要があります。そうしないとエラーが発生しますbash: cd: test/: Permission denied
)。また、次のように高い権限が必要ですsudo
。
sudo chmod a=rx test/
ls -l | grep test
dr-xr-xr-x 2 aubs aubs 4096 12月4日03:35にテスト済み
sudo
アカウント(所有者)から「書き込み」を削除すると、再度変更する権限が失われるため、上記の一部を使用する必要があります。
これで、フォルダに移動してコンテンツを一覧表示できます(各コンテンツがread
一意であることを確認)。
cd test/
ls -l
合計0
-r--r--r-- 1 aubs aubs 0 12月4日、03:35 testfile2.aubs
-r--r--r-- 1 aubs aubs 0 12月4日、03:19 testfile.aubs
しかし、新しいファイルを作成することはできません。
touch testfile3.aubs
タッチ:「testfile3.aubs」をタッチできません:権限が拒否されました。