ディレクトリの内容を読み取り専用として表示

ディレクトリの内容を読み取り専用として表示

ディレクトリの内容が読み取り専用になるようにディレクトリを読み取り専用として表示したいと思います。 chmod a = rxを使用してディレクトリを読み取り/実行専用に設定すると、ディレクトリとその内容を削除できません。半分ほど完了しても、内容は依然として修正される可能性があります。 chmod a = rはコンテンツを読み取らないようにします。

どんなアイデアがありますか?

答え1

探しているようですね。

chmod a-w -R your_directory

ディレクトリ内のファイルが変更されないようにするには、ファイル自体から書き込み属性を削除する必要があります。

答え2

簡単に言うと:

  1. ディレクトリとその中のすべての既存/新しいファイルを読み取り専用に繰り返し設定します。

    sudo chmod a=r -R /path/to/the/folder/

  2. 誰もが入るようにディレクトリ自体の権限を設定します。

    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高い権限が必要です。sudoread所有者(私たちのアカウント):

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」をタッチできません:権限が拒否されました。

関連情報