如何设置新建文件的权限?

如何设置新建文件的权限?

我已经设置了 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 值含义的出色解释:

http://en.wikipedia.org/wiki/Umask

答案2

很高兴你解决了这个问题。

/var/www 目录已启用“设置组 ID”或“setgid”位(drwxrwsr-x 中的“s”)。因此,当在 /var/www 中创建新文件时,这些文件将归目录的组所有,而不是用户组。新目录也采用父目录的组,并且它们将使用 setgid 位。(因此,在某个时候,您做了一个sudo chmod g+s /var/www。)

我在 ACL 上发布了一些......

编辑和添加文件到“/var/www”的最简单方法是什么?

php 用户 www-data 的默认文件权限

答案3

我找到解决办法了。

我的 umask 是

022

因此,每个新文件都应该像我希望的那样,为我组外的所有用户提供读取和执行的权限。

问题出在我的模板文件中,它们具有不同的权限,现在我更改了它们,它可以正常工作

相关内容