我有一台运行 Apache 的 Ubuntu 服务器。我有一个将文件写入文件夹的 Web 应用程序。Apache 以 身份运行www-data:www-data
,因此所有文件都使用该用户和组创建。
我还有一个用户shabbyrobe
,我使用它来登录机器并进行非 root 更改。如果我想更改已被修改的内容www-data
,我发现自己破解了它并直接执行sudo -i
,然后在我意识到之前,我已经在提升的权限级别上执行了所有操作,我真的觉得我root
根本不需要这样做。
我将其添加shabbyrobe
到www-data
组并chmod -R 2775
在充满由我的 Web 应用程序编写的文件的文件夹中运行,但仍在创建新文件755
,因此用户shabbyrobe
无权访问。
基本上,我只是想知道是否可以安全地将 umask/etc/profile
从 022(似乎是默认值)更改为 002,而不会损害我的服务器的安全性。我想我只是认为一定有一个原因为什么默认情况下它是 022,我不想在没有理解原因的情况下就轻易地改变它。
更新:回应 Caleb 的建议,我对此进行了更多的思考,考虑到可以只为 Apache 设置 umask,我觉得在系统范围内设置 umask 不是一个好主意。那么,如果我将 umask 更改为 002 而不是/etc/apache2/envvars
,/etc/profile
还有哪些安全注意事项?
答案1
将 umask 设置为 002 将使创建的所有文件也可由与写入文件的用户位于同一组中的任何人写入。
根据您的系统配置,这可能会引发严重的安全问题。我不建议在整个系统范围内执行此操作。如果您有特定的用户或程序可以从创建可由其组中的其他用户写入的文件中受益,则可以在本地将其设置为该程序或脚本的执行,但将其设为默认行为将是一个坏主意™。
请注意,允许对其他用户可以执行的任何内容进行写访问是特别危险的,因为对可执行文件的偷偷更改可能会被其他用户在不知情的情况下运行,并允许恶意代码以其用户身份执行,从而危害他们的帐户。