2

我在一个共享的 Web 开发环境中工作。我的团队经常在服务器上创建新文件和文件夹,但之后他们总是需要更改组权限。

对于新文件的默认权限,我在 bashrc 中设置了 umask 002。但是对于新目录的默认权限:

$ sudo chmod g+s /var/www

/var/www 中的新目录现在显示为:

drwxrwsr-x 2 用户 www-data 4096 2010-10-14 08:49 测试

现在,此设置可以正常工作,即默认情况下新文件和目录是组可写的。在此设置中使用 sgid 是否存在任何安全问题?格外谨慎,因为我不完全了解 setuid 风险。

4

1 回答 1

2

我对您的设置的理解是,创建的每个文件都将具有权限 0775。您将 SGID(设置组 ID)位设置为 /var/www 目录,这将强制在其中创建的任何文件/目录继承现有的组所有者,而不是比创建它的所有者。至于 SUID(设置用户 ID)位,除非我弄错了您的描述,否则您似乎没有使用它。

我假设您拥有“www-data”组(默认 Apache 组)的每个用户部分,这就是现在一切顺利进行的原因。

我看到的安全风险是现在 Apache(“www-data”组的一部分)可以完全访问您的 Web 根文件夹下的每个文件。如果您碰巧有一个带有安全漏洞的公共脚本,或者 Apache 以某种方式受到损害,那么您的整个 /var/www 文件夹(至少)都将任其摆布。

相反,我会创建一个单独的小组(比如“开发人员”)并让您的团队参与其中。将 /var/www 文件夹的组所有者更改为“开发人员”,并为 Apache 保留默认访问权限(“rx”用于目录,“r--”用于文件)并仅在需要的地方选择性地分配更高的权限(缓存、上传等)。

希望这会有所帮助,这是我的第一个回复/答案,并且已经过了我的就寝时间:)

于 2010-10-26T06:32:36.350 回答