我正在尝试递归地更改"data“目录的目录和子目录的权限,并遇到以下error..can有人提供关于以下错误的输入?
<username:/local/mnt/workspace/data>chmod -R 0644 .
chmod: cannot read directory `.': Permission denied发布于 2013-04-04 09:09:43
目录需要设置execute权限才能查看其内容。
来自http://content.hccfl.edu/pollock/AUnix1/FilePermissions.htm
您可以这样考虑对目录进行读取和执行:目录是数据文件,其中包含关于每个文件的两部分信息,即文件名及其inode编号。需要拥有读权限才能访问目录中的文件名。执行(也称为搜索)权限才能访问目录中文件的inode,如果您已经知道文件的名称。
当您将目录权限更改为644时,您将无法读取该目录中的文件,尽管您可以读取该目录以查看其是否存在。
您需要这样做:
$ chmod -R 0755 .更好的方法可能是使用字符串权限,如果您只是想关闭
否则,您可以看到该目录,但无法访问该目录中的信息。
您最好使用相对权限,而不是绝对权限:
$ chmod -R go-w .将从组和其他组中删除写权限,但不会接触执行权限。
您还可以使用find来设置目录或文件:
$ find . -type d -exec chmod 755 {} \;这将只触及目录,设置所有目录的读取和执行权限,并设置所有者的写入权限。这样,您就不需要在文件本身上设置执行权限。
发布于 2013-04-04 09:11:38
我猜想,由于您使用的是递归,所以您正在尝试CD到一个没有执行权限的目录。
https://stackoverflow.com/questions/15800742
复制相似问题