首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >chmod:无法读取目录`.':权限被拒绝

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

Stack Overflow用户
提问于 2013-04-04 08:46:59
回答 2查看 87K关注 0票数 30

我正在尝试递归地更改"data“目录的目录和子目录的权限,并遇到以下error..can有人提供关于以下错误的输入?

代码语言:javascript
复制
<username:/local/mnt/workspace/data>chmod -R 0644 .
chmod: cannot read directory `.': Permission denied
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-04 09:09:43

目录需要设置execute权限才能查看其内容。

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

您可以这样考虑对目录进行读取和执行:目录是数据文件,其中包含关于每个文件的两部分信息,即文件名及其inode编号。需要拥有读权限才能访问目录中的文件名。执行(也称为搜索)权限才能访问目录中文件的inode,如果您已经知道文件的名称。

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

您需要这样做:

代码语言:javascript
复制
$ chmod -R 0755 .

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

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

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

代码语言:javascript
复制
$ chmod -R go-w .

将从组和其他组中删除写权限,但不会接触执行权限。

您还可以使用find来设置目录或文件:

代码语言:javascript
复制
$ find . -type d -exec chmod 755 {} \;

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

票数 62
EN

Stack Overflow用户

发布于 2013-04-04 09:11:38

我猜想,由于您使用的是递归,所以您正在尝试CD到一个没有执行权限的目录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15800742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档