我遇到了权限问题

我遇到了权限问题

我在同一台服务器上托管一些网站,但该服务器没有 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 种选择:

  1. 更改服务器设置以使用更广泛的权限运行文件。这可能是一个安全问题。
  2. 将网站移至“ubuntu”用户目录,并在 /var/www 中创建链接。您可能需要更改其他设置才能使其正常工作(请参阅FollowSymLinks),但一旦设置完成,所有文件都将具有适当的权限并将ubuntu成为所有者。
  3. 使用拥有 /var/www/[project]/public_html 中文件的用户连接到服务器。您需要允许该用户连接,这可能会带来安全问题。

PS:您不需要usermod多次运行该命令。一旦用户加入组,它就属于该组,不应该有任何进程将其从组中删除。

相关内容