我知道如何使用 chmod 和其他东西,所以这不是问题。我有一台小型服务器 (Ubuntu LTS),上面运行着 Apache,其中有标准文件夹/var/www/html/
。默认情况下,root 是该文件夹的所有者html/
。
问题:更改文件夹的所有者是否安全html/
?
答案1
更改文件的所有权是完全安全的/var/www
,并且您可以根据需要编辑和更改该文件夹中的任何内容。
例如,如果用户tsmith
需要能够写入文件,/var/www/myweb
那么将这些文件的所有者设置为 是完全没问题的tsmith
。或者,如果您愿意,保留所有者为 ,root
并要求tsmith
sudo 才能写入它们 - 如果您信任他/她使用 sudo。
如果您有多个用户需要能够编辑文件,而您不想授予他们 sudo,那么您也可以使用组成员身份,例如创建一个组并将用户添加到该组,然后设置组所有权和组写入相关文件,以使该组的成员能够修改这些文件。执行此操作时,您可能希望在chmod g+s dir
包含目录中使用 SetGID 位()以确保新文件继承相同的组所有权,并umask 002
在每个用户中~/.profile
确保他们获得组写入权限,否则任何新文件都只能由其创建者编辑,而不能由该组的其他成员编辑。
然而你应该注意以下不良做法:
不要将任何文件的所有权设置为
www-data
用户或www-data
组(如果您授予组写入权限)。用户的全部意义www-data
在于它是一个非特权用户,无法写入任何文件。可从外部网络访问的服务器守护程序(例如 Web 服务器)通常以非特权用户身份运行,因此,如果它们因漏洞而遭到黑客攻击,攻击者可以做的事情很少。例外:某些 Web 应用需要对某些文件和文件夹具有写访问权限,以实现附件存储等功能。在这些情况下,您应将所有权设置为
www-data
仅有的对于这些文件,保持可写入的文件数量处于www-data
最低限度。出于同样的原因,不要将任何文件设置为可全世界写入的。
如果创建组,请不要重新利用现有的用户组(例如或
admin
,sudo
尤其是 )www-data
,这些组在 Ubuntu 中已经有用途,因为如果这些组不打算写入文件,这可能会降低系统安全性。相反,请创建自己的组并向其中添加成员。
答案2
使用具有 root 权限(所有权或单一权限)的任何目录或文件都不太安全。对于静态 HTML 文件来说,这不是一个大的安全问题,但只要有运行脚本(PHP、JavaScript、任何表单等),您就会遇到严重的问题。
答案3
如果您只需要提供内容(html,图像等),则无需为中的目录/文件设置特殊所有权/var/www
,只要 apache2 用户(www-data
)有权访问该内容即可。
如果您需要做更多事情,您可能需要修改所有权。例如,如果您需要从 CMS(如 WordPress、Joomla 等)上传文件,则需要将上传目录的所有权更改为www-data
(或至少向该用户授予写入权限)
我个人拥有/var/www
的root
用户拥有的 mod 1777
(与 相同)以及拥有的/tmp
网站(即:)目录。/var/www/site1
www-data
希望能帮助到你!