2013-04-04 16 views
18

" data "ディレクトリのディレクトリとサブディレクトリのアクセス権を再帰的に変更しようとしています。chmod:ディレクトリ `。 'を読み取ることができません:許可が拒否されました

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

'sudo chmod -R 0644 .'を試してください。それが失敗した後に – Blender

+0

'sudo !!' – alex

+1

@Blender: 'sudo chmod -R -644 .'は現在のディレクトリとその下にあるすべてのディレクトリから実行(検索)権限を削除します。 –

答えて

40

ディレクトリには、その内容を見るために実行権限が必要です。

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

から、あなたは、読み取りを考えるとディレクトリにこの方法を実行することができます。ディレクトリは、各ファイルの名前、内のファイルとそれのinode番号のために2つの情報を保持するデータファイルです。ディレクトリ内のファイル名にアクセスするには、読み取り権限が必要です。ディレクトリ内のファイルのinodeにアクセスするには、ファイル名をすでに知っていれば実行(a.k.a.検索)権限が必要です。

ディレクトリのアクセス権を644に変更すると、そのディレクトリ内のファイルを読み取ることはできませんが、そのディレクトリを読み取って存在することを確認できます。あなたは、単にそれ以外の場合は

をオフにしたい場合は、より良い方法は、文字列の許可を使用するのが良いかもしれない

$ chmod -R 0755 . 

、あなたがディレクトリを参照してくださいが、情報にアクセスすることはできません:あなたはこれを実行する必要が

そのディレクトリに保存します。

あなたに代わりに絶対の権限の相対的な権限を使用してオフに多分よりよい:

$ chmod -R go-w . 

は、グループや他からの書き込み権限を削除しますが、実行権限を触れないだろう。

またfindだけのディレクトリを設定するために使用することができるか、単にファイルを設定する:これは読み取り専用とすべてのディレクトリに実行権限を設定し、所有者のために書き込み権限を設定し、ディレクトリに触れます

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

。この方法では、ファイル自体に対する実行許可を設定していません。

+0

基本的に私はディレクトリとサブディレクトリのファイルに対して実行権限を削除したいが、directoreisのexecure permissionsはそのままにしておきたい。 – user2125827

+1

これはほとんど同じことです。 'find'で' -type f'フラグを使って、ディレクトリとファイルを返すだけです。 'find。 -type f -exec ugo-x {} \; 'それは記号的な名前を使用しています(u =ユーザg =グループo =その他。-xは実行許可を削除することを意味します)。この方法では、ファイルには触れていません。実行権限を最初に削除したディレクトリに追加する必要があります。そのため、 'find'はその内容を読むことができます。 –

0

私はあなたがあなたのための実行許可を持っていないディレクトリにCDをしようとしている再帰を使用していると思います。

関連する問題