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

时间:2013-04-04 00:46:59

标签: unix ubuntu chmod

我正在尝试以递归方式更改“data”目录的目录和子目录的权限,并运行到以下错误中。有人提供有关以下错误的输入吗?

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

2 个答案:

答案 0 :(得分:49)

目录需要执行权限集才能查看其内容。

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

  

您可以通过这种方式考虑对目录进行读取和执行:目录是包含每个文件的两条信息的数据文件,文件的名称和它的inode编号。需要读取权限才能访问目录中的文件名。如果您已经知道文件的名称,则需要执行(a.k.a。搜索)权限来访问目录中文件的inode。

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

你需要这样做:

$ chmod -R 0755 .

如果您只是想关闭

,更好的方法是使用字符串权限

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

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

$ chmod -R go-w .

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

您也可以使用find设置目录或仅设置文件:

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

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

答案 1 :(得分:0)

我猜想,因为您正在使用递归,而您正试图将CD刻录到没有执行权限的目录。