我已经设置了 apache 和 php,并且我在 /var/www 中工作,因此我已将此文件夹的权限从我的用户更改为拥有它的用户,并授予所有其他用户只读访问权限。
但是,当我使用右键单击->创建文档来创建新文件时,其他用户和我的组都认为这些文件“无权限”,而文件夹权限则授予所有用户只读权限。
我该如何解决?
这是 ls -la /var/www 的输出
matteo@matteo-stable:~$ ls -la /var/www
totale 24
drwxrwsr-x 5 matteo matteo 4096 2011-12-17 13:55 .
drwxr-xr-x 18 root root 4096 2011-12-17 14:03 ..
drwxrwsr-x 5 matteo matteo 4096 2011-12-18 19:34 CloudNotesCI
drwxrwsr-x 6 matteo matteo 4096 2011-12-11 19:52 CloudNotesLayout
-rw-rw-r-- 1 matteo matteo 25 2011-12-11 20:26 info.php
drwxrwsr-x 7 matteo matteo 4096 2011-12-17 13:55 OldP
答案1
您需要设置“umask”。如果您想在系统范围内进行此操作,您可以在 /etc/login.defs 中更改该值。如果您想针对每个用户进行此操作,请在每个用户的 .profile 中进行此操作。
您可以通过给出不带参数的命令“umask”来检查当前的 umask。它可能会输出类似以下内容的内容:
0002
使用此值,您创建的文件将对您和您的组可读可写,而其他所有人则只能读取。如果您想创建可供所有人写入的文件(关于此安全影响的讨论超出了本文的范围),请将 umask 更改为 0000:
umask 000
正如我所提到的,要为您的用户持久更改此设置,请编辑 .profile,取消注释包含“umask 022”的行,然后相应地更改值。
在 Wikipedia 中可以找到有关 umask 值含义的出色解释:
答案2
很高兴你解决了这个问题。
/var/www 目录已启用“设置组 ID”或“setgid”位(drwxrwsr-x 中的“s”)。因此,当在 /var/www 中创建新文件时,这些文件将归目录的组所有,而不是用户组。新目录也采用父目录的组,并且它们将使用 setgid 位。(因此,在某个时候,您做了一个sudo chmod g+s /var/www
。)
我在 ACL 上发布了一些......
答案3
我找到解决办法了。
我的 umask 是
022
因此,每个新文件都应该像我希望的那样,为我组外的所有用户提供读取和执行的权限。
问题出在我的模板文件中,它们具有不同的权限,现在我更改了它们,它可以正常工作