为什么我使用 chown 命令后无法访问该目录?

为什么我使用 chown 命令后无法访问该目录?

我不太熟悉 Linux,但遇到了以下问题。

我已经安装了专用于开发的 Ubuntu Linux 系统的 LAMP 环境(它在我的 PC 上,它不是生产服务器)。

因此,我尝试将 /var/www 设置为 Aptana(我用于 PHP 开发的 IDE)的工作区,但是我无法做到这一点,因为我没有在此目录中写入的权限(我认为是我的登录用户没有此权限)。

所以我做了:

sudo chown -R andrea:www-data /var/www/
sudo chmod -R g+s /var/www/

所以:

  1. 首先我设置我的用户(名为安德里亚)作为/var/www/目录(所以我认为它可以写入该目录)并分配www-数据团体。

  2. 然后我用以下方式设置该目录加加使所述目录中创建的所有新文件的组设置为该目录的组。

问题是,当我尝试访问这个/var/www/目录我获得没有权限错误信息,类似这样的:

andrea@andrea-virtual-machine:/var$ cd www/
andrea@andrea-virtual-machine:/var/www$ ls
ls: impossibile aprire la directory .: Permesso negato

该文本是意大利语,意思是:无法打开目录:拒绝访问

为什么?我遗漏了什么?我该如何解决这个问题?

编辑-1:这是sudo ls -al /var/www命令:

andrea@andrea-virtual-machine:/var/www$ sudo ls -al /var/www
[sudo] password for andrea: 
totale 16
d-wx--s--x  4 andrea www-data 4096 apr 27 15:19 .
drwxr-xr-x 14 root   root     4096 apr 27 11:53 ..
drwxr-sr-x  2 andrea www-data 4096 apr 27 12:08 html
drwxrwsr-x  3 andrea www-data 4096 apr 27 15:20 .metadata

答案1

如果你有执行没有目录的权限,你可以将它包含在路径中,但你无法看到它的内容,因此,如果你在 中,你可以使用 来查看子目录/var/www的内容,即使你无法使用简单的 来查看。你需要运行:htmlls htmlhtmlls

sudo chmod uga+r /var/www

您可能不需要sudo:您当然可以先尝试一下不用它。

答案2

这不是 Ubuntu 的差异,而是 Linux 权限的工作方式。执行 (x) 权限是访问目录,读取 (r) 权限是列出其内容。

维基百科上的这篇文章,我建议你全部阅读:

当为目录设置此权限时,[处决]如果知道文件名称,则授予访问文件内容和元信息的能力,但不列出目录内的文件,除非也设置了读取。

当为目录设置此权限时,[读]授予读取目录中文件名称的权限,但不能查找有关它们的任何进一步信息,例如内容、文件类型、大小、所有权、权限。

答案3

andrea@andrea-virtual-machine:/var/www$ sudo ls -al /var/www
d-wx--s--x  4 andrea www-data 4096 apr 27 15:19 .

对于用户 andrea: (w) 允许
写入权限(x) 进入文件夹。 当前文件夹未设置 (r),因此您无权列出其内容。这就是 ls 失败的原因。

对组和其他组设置相同的权限(也不对)

相关内容