chmod:无法读取目录`。':权限被拒绝

我试图recursion更改“数据”目录的目录和子目录的权限,并运行到以下错误..有人可以提供input上的错误?

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

目录需要设置执行权限才能看到其内容。

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

您可以这样思考读取和执行目录:目录是包含每个文件的两个信息的数据文件,文件的名称和它的inode编号。 需要读取权限才能访问目录中文件的名称。 如果您已经知道该文件的名称,则需要执行(又名搜索)权限才能访问目录中文件的索引节点。

当您将目录权限更改为644时,您无法读取该目录中的文件,尽管您可以读取该目录以查看该文件是否存在。

你需要这样做:

 $ chmod -R 0755 . 

如果您只是想关闭,更好的方法可能是使用字符串权限

否则,您可以看到该目录,但不能访问该目录中的信息。

你最好使用相对权限而不是绝对权限:

 $ chmod -R go-w . 

将删除组和其他组的写权限,但不触及执行权限。

您也可以使用find来设置目录或只是设置文件:

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

这只会触摸目录,设置所有目录的读取和执行权限,并为所有者设置写入权限。 这样,你不会在文件本身设置执行权限。

我猜想,因为你正在使用递归,你正在尝试CD到一个没有执行权限的目录。