我在同一台服务器上托管一些网站,但该服务器没有 root 登录名和密码,我只能访问 ubuntu 用户和密码,当我登录后,我可以使用命令sudo su -
转换为 root 用户。
但是我使用 sftp 编辑网站文件,并且我只能使用 ubuntu 用户登录,而不能使用 root 用户。
问题是当我尝试编辑某些文件时,权限被拒绝。文件必须具有权限644
,并且文件夹必须具有权限设置,755
如果权限不是这样,我的应用程序就无法运行。
所以我必须选择,是编辑文件并停止应用程序,还是运行应用程序并在编辑文件时被拒绝权限。我不能同时做这两件事,这很无聊。
所以我必须使用此命令来编辑我想要的任何内容,并且应用程序停止,因为文件的权限转到674
并且文件夹的权限转到775
:
sudo usermod -a -G ubuntu www-data
sudo setfacl -R -m u:ubuntu:rwx /var/www/
当我编辑所有内容时,我必须使用此命令,将权限返回到644
文件和755
文件夹中,然后应用程序恢复正常。
find /var/www -type d -exec chmod 755 {} \;
find /var/www -type f -exec chmod 644 {} \;
那么我该如何解决这个问题?我想同时做这两件事。
答案1
您使用的用户ubuntu
没有权限在 /var/www 中创建/编辑文件。因此,您授予它权限、上传新文件并删除权限。您需要删除权限,因为如果您的文件权限范围过广,服务器将拒绝您的权限。
您有 3 种选择:
- 更改服务器设置以使用更广泛的权限运行文件。这可能是一个安全问题。
- 将网站移至“ubuntu”用户目录,并在 /var/www 中创建链接。您可能需要更改其他设置才能使其正常工作(请参阅
FollowSymLinks
),但一旦设置完成,所有文件都将具有适当的权限并将ubuntu
成为所有者。 - 使用拥有 /var/www/[project]/public_html 中文件的用户连接到服务器。您需要允许该用户连接,这可能会带来安全问题。
PS:您不需要usermod
多次运行该命令。一旦用户加入组,它就属于该组,不应该有任何进程将其从组中删除。