无法以属于该组的用户身份编辑该组拥有的文件

she*_*hea 10 permissions apache2 www user-management

我在 Digital Ocean 上运行 Ubuntu 14.04.1 LTS 服务器。我正在尝试这样做,以便我可以/srv/www从我的普通用户帐户中编辑文件,而无需成为 root。

目前,/srv/wwwwww-data:www-data

sudo chown -R www-data:www-data /srv/www 
Run Code Online (Sandbox Code Playgroud)

我还将所有文件的权限设置为664,并将目录的权限设置为755

sudo find /srv/www/ -type f -exec sudo chmod 644 {} \;
sudo find /srv/www/ -type d -exec sudo chmod 755 {} \;
Run Code Online (Sandbox Code Playgroud)

我将我的用户 , 添加sheawww-data组中:

sudo adduser shea www-data
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试时touch /srv/www/foo,我收到以下错误:

touch: cannot touch ‘/srv/www/foo’: Permission denied
Run Code Online (Sandbox Code Playgroud)

如果我sudo在该命令前面添加它就可以正常工作,但我宁愿不一直这样做;另外它不能通过 SFTP 工作。

将所有者更改为shea:www-data允许我写入文件,但 WordPress 无法更新插件和主题。

sudo chown -R shea:www-data /srv/www
Run Code Online (Sandbox Code Playgroud)

反正是www-datashea用户都有访问/srv/www?我的印象是将两个用户添加到一个组中会成功,但我似乎无法让它工作。

小智 17

您正在设置 644,这是组读,而不是写!

sudo chown -R www-data:www-data /srv/www
sudo chmod -R g+w /srv/www
Run Code Online (Sandbox Code Playgroud)


小智 11

我在 DigitalOcean 上运行 16.04 时遇到了类似的问题。以下是我遵循的步骤:

  1. 授予与下文件关联的组的写访问权限 /var/www/html

    sudo find /srv/www/ -type f -exec sudo chmod 664 {} \;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 添加myuserwww-data组:

    sudo adduser myuser www-data
    
    Run Code Online (Sandbox Code Playgroud)
  3. 确认权限,例如:

    ls -la /var/www/html/wp-content/themes/responsive/style.css
    
    Run Code Online (Sandbox Code Playgroud)

    -rw-rw-r-- www-data www-data 3892 Jan  1 2017 style.css
    
    Run Code Online (Sandbox Code Playgroud)
  4. 确认组成员身份:id myuser给出

    uid=1000(myuser) gid=1000(myuser) groups=1000(myuser),33(www-data),110*lxd)
    
    Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在style.csssudo使用我的myuser帐户的情况下进行更新时,出现permission denied错误。

解决方案

myuser在新权限开始生效之前,我必须注销并重新登录所有已登录的会话。不知道为什么,但希望这可以帮助其他处于类似情况的人。