也许我应该换个说法——满足我的需求最安全的方法是什么?
细节
我正在使用 WinSCP 修改我的 Apache document_root。目录 /var/www/html 的所有者和组为 root。使用 WinSCP,我必须以 root 身份登录才能修改这些文件,因为 sudo -s 需要密码。我不想用 root 远程登录,所以我想做的是为 /var/www/html 添加一个不需要密码的 sudoer。那可能吗?
答案1
Sudo 不是适合这项工作的工具。它控制您可以运行哪些命令,而不是您可以访问哪些文件。
适合这项工作的工具是文件权限,其中访问控制列表如果 Unix 传统用户/组/其他权限不够。
创建一个组,我们将其命名为webroot
,并使其拥有该目录/var/www/html
和其中的文件。
sudo addgroup webroot
chgrp -R /var/www/html
chmod -R g+ws /var/www/html
目录上的位s
导致文件从目录继承组所有权。您还需要确保那里的文件是组可写的。
如果您希望能够/var/www/html
使用用于上传文件的帐户进行访问,请将该帐户添加到webroot
组中:
sudo adduser iusemagentonow webroot
如果您在维护新创建文件的组所有权和组写入权限时遇到困难,请使用 ACL 而不是chgrp
.
sudo setfacl -d -R group:webroot:rwX /var/www/html
sudo setfacl -R group:webroot:rwX /var/www/html
请注意,/var/www/html
运行 Apache 或您正在使用的任何 Web 服务器的用户和组不得写入其中的文件。除了应该由 Web 应用程序更新的数据文件之外,不得允许运行 Web 服务器的用户写入任何文件。特别是,不要允许 Web 服务器写入任何可执行文件,因为这往往会使攻击变得容易。