web-dev-qa-db-ja.com

chmod:ディレクトリ `。 'を読み取れません:許可が拒否されました

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

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

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

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

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

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

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

$ chmod -R 0755 .

より良い方法は、単にオフにしたい場合に文字列の許可を使用することです

それ以外の場合、ディレクトリは表示できますが、そのディレクトリの情報にはアクセスできません。

絶対アクセス権の代わりに相対アクセス権を使用した方が良いかもしれません:

$ chmod -R go-w .

グループおよびその他から書き込み許可を削除しますが、実行許可に触れません。

findを使用して、ディレクトリを設定したり、ファイルを設定したりすることもできます。

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

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

52
David W.

再帰を使用しているため、実行権限のないディレクトリにCDをアクセスしようとしていると思います。

0
Marichyasana