我在 Digital Ocean 上运行 Ubuntu 14.04.1 LTS 服务器。我试图使我能够/srv/www
从我的普通用户帐户编辑文件,而无需成为 root。
目前,/srv/www
归以下公司所有www-data:www-data
:
sudo chown -R www-data:www-data /srv/www
我还将所有文件的权限设置为664
,并将目录的权限设置为755
:
sudo find /srv/www/ -type f -exec sudo chmod 644 {} \;
sudo find /srv/www/ -type d -exec sudo chmod 755 {} \;
然后我将我的用户添加shea
到该www-data
组:
sudo adduser shea www-data
但是,当我尝试时touch /srv/www/foo
,收到以下错误:
touch: cannot touch ‘/srv/www/foo’: Permission denied
如果我将该sudo
命令添加到前面,它会正常工作,但我不想一直这样做;而且它不能通过 SFTP 工作。
将所有者更改为shea:www-data
允许我写入文件,但 WordPress 无法更新插件和主题。
sudo chown -R shea:www-data /srv/www
有没有办法让www-data
和shea
用户都有权访问/srv/www
?我以为将两个用户都添加到一个组就可以解决问题,但我似乎无法让它发挥作用。
答案1
您设置的是 644,即组读,而不是组写!
sudo chown -R www-data:www-data /srv/www
sudo chmod -R g+w /srv/www
答案2
我在 DigitalOcean 上运行 16.04 时遇到了类似的问题。以下是我遵循的步骤:
授予与文件关联的组写入权限
/var/www/html
sudo find /srv/www/ -type f -exec sudo chmod 664 {} \;
添加
myuser
到www-data
群组:sudo adduser myuser www-data
确认权限,例如:
ls -la /var/www/html/wp-content/themes/responsive/style.css
给出
-rw-rw-r-- www-data www-data 3892 Jan 1 2017 style.css
确认组成员身份
id myuser
:uid=1000(myuser) gid=1000(myuser) groups=1000(myuser),33(www-data),110*lxd)
style.css
但是,当我尝试不sudo
使用我的帐户进行更新时myuser
,出现permission denied
错误。
解决方案
myuser
我必须从新权限生效前登录的所有会话中注销并重新登录。不知道为什么,但希望这可以帮助其他处于类似情况的人。