30

「データ」ディレクトリのディレクトリとサブディレクトリのアクセス許可を再帰的に変更しようとしていますが、次のエラーが発生します.誰かが以下のエラーで入力を提供できますか?

<username:/local/mnt/workspace/data>chmod -R 0644 .
chmod: cannot read directory `.': Permission denied
4

2 に答える 2

63

ディレクトリの内容を表示するには、実行権限セットが必要です。

http://content.hccfl.edu/pollock/AUnix1/FilePermissions.htmから

ディレクトリの読み取りと実行は、次のように考えることができます。ディレクトリは、ファイル名と inode 番号の各ファイルの 2 つの情報を保持するデータ ファイルです。ディレクトリ内のファイル名にアクセスするには、読み取り権限が必要です。ファイルの名前がわかっている場合、ディレクトリ内のファイルの inode にアクセスするには、実行 (検索) パーミッションが必要です。

ディレクトリのアクセス許可を 644 に変更すると、そのディレクトリを読み取ってその存在を確認することはできますが、そのディレクトリ内のファイルを読み取ることはできません。

これを行う必要があります:

$ chmod -R 0755 .

単純にオフにしたい場合は、文字列の許可を使用することをお勧めします

そうしないと、ディレクトリは表示されますが、そのディレクトリ内の情報にはアクセスできません。

絶対的なアクセス許可ではなく、相対的なアクセス許可を使用することをお勧めします。

$ chmod -R go-w .

グループなどから書き込み権限を削除しますが、実行権限には触れません。

findディレクトリを設定するためだけに、またはファイルを設定するためだけに使用することもできます。

$ find . -type d -exec chmod 755 {} \;

これは、ディレクトリのみにアクセスし、すべてのディレクトリに読み取りおよび実行権限を設定し、所有者に書き込み権限を設定します。この方法では、ファイル自体に実行権限を設定していません。

于 2013-04-04T01:09:43.480 に答える