我有一个正在运行的 Debian 8 服务器,该服务器归文件和子目录所有,并且/var/www
对其www-data
拥有权限。drwxr-xr-x
由于我需要通过 SFTP 上传文件(公钥/私钥认证;密码和非加密 FTP 被阻止),我认为将我的用户帐户添加到组应该没有问题www-data
。因此,我执行了:
sudo usermod --append --groups www-data my-user
我已经退出当前 SSH 会话以触发权限的重新加载。id my-user
现在显示:
uid=1000(my-user) gid=1000(my-user) groups=1000(my-user),33(www-data)
但是,我仍然无法通过 SFTP 写入数据/var/www
。甚至touch test.txt
直接通过 SSH 进行简单的操作也会失败Permission denied
。
我认为rwx
是read
和。显然write
我execute
对目录/文件权限的理解不完整。有人能帮忙吗?
答案1
您声明 /var/www 的权限是drwxr-xr-x
仅供rwx
所有者使用的。组具有r-x
权限,这意味着即使您将自己添加到www-data
组中,目录也不允许组对 /var/www 具有写入权限。
chmod g+w /var/www
允许您的帐户能够将文件添加到 /var/www。
如果 /var/www 下有任何子目录,您将需要执行相同的chmod
命令,如果您需要能够写入这些目录。
还可以考虑设置组粘性位,以便在 /var/www 中创建的所有文件都属于www-data
该组。
chmod g+s /var/www
同样,对于 /var/www 下的任何子目录,您也需要添加此内容。
答案2
你说的权限是drwxr-xr-x,所以是755,而你将自己添加到www-data组,所以你需要775,也就是drwxrwxr-x。