2012-10-25 41 views
2

我正在建立一个运行apache的Linux网络服务器。我上传并解开了我的网站文件。当我SSH进入系统时,主目录中的文件全部可见。但是,我被所有子目录阻止。 如果我写:为什么我无法在Linux中查看目录?

# cd images 

然后我得到的错误:

-bash: cd: images: Permission denied 

我登入为EC2用户。我将这些东西解压为ec2-user,并且我怀疑tar文件中有任何权限,因为我在Windows系统上创建了归档文件。 奇怪的是我是这个目录的所有者。下面是此命令的一个片段: ls -l命令

drw-rw-r-- 19 ec2-user ec2-user  4096 May 4 04:09 images 

当我做“命令苏”,然后键入命令cd图像,一切都很好。 如果我是所有者并获得许可,为什么我会获得“权限被拒绝”作为ec2用户?

回答

1

它错过了目录中的可执行位,这对于在那里能够执行cd是必不可少的。

速战速决将在目录中运行你解开你的东西:

# find . -type d | xargs chmod a+x 

如果您有空格的目录,使用以下命令:

# find . -type d -exec chmod a+x "{}" \; 
+0

谢谢。这有效。现在作为EC2用户,我可以“CD映像”。但“图片”下方的任何子目录现在都被阻止。该命令是否可以修改为包含所有级别的子级? – Thread7

+0

'find'应该照顾所有的子餐桌。你可以运行只是'找到。 -type d'并查看它是否列出了所有的子目录?另外,你有名字中有空格的目录吗? – favoretti

+1

如果你知道你的命令对空格有问题,你应该首先修改它:'find。 -type d | xargs -d \\ n chmod a + x'或'find。 -type d -print0 | xargs -0 chmod a + x'或者只是'find。 -type d -exec xargs chmod a + x {} +'。 – glglgl

2

您需要执行许可:

chmod +x images 

应该照顾它。目录的执行权限转换为“遍历目录”权限。

+0

有趣的是,对于搜索和列表,你只需要'r'位,而使用它时,你需要'x'。因此,如果您准确知道它们的命名方式,则可以列出可以列出但不使用的'rw -'命令,或者使用'--x'来指示可以使用哪些文件。 – glglgl

相关问题