有点安全

时间:2010-10-14 14:20:20

标签: setuid

我在共享的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的风险。

1 个答案:

答案 0 :(得分:2)

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

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

我看到的安全风险是,现在Apache('www-data'组的一部分)可以完全访问您的Web根文件夹下的每个文件。如果您碰巧有一个带有安全漏洞的公共脚本,或者Apache在某种程度上受到了损害,那么您的整个/ var / www文件夹(至少)就是它的怜悯。

相反,我会创建一个单独的组(比如'开发人员'),让你的团队成为其中的一部分。将/ var / www文件夹的组所有者更改为'developers',并使Apache保持默认访问权限(对于目录为'rx',对于文件为'r--'),并选择性地仅在需要时分配更高权限(缓存,上传等)。

希望这会有所帮助,这是我的第一个回答/答案,并且超过我的睡觉时间:)