我对 ubuntu 中的权限和 sftp 访问感到困惑。
我有一个有权访问 www 文件夹的用户:
<username>:www-data
我在 sshd_config 中设置了以下内容:
Subsystem sftp internal-sftp
Match group www-data
X11Forwarding no
ChrootDirectory /var/www
AllowTcpForwarding no
ForceCommand internal-sftp
Match
Match user <username>
X11Forwarding no
ChrootDirectory /var/www/<theirwebsite>
AllowTcpForwarding no
ForceCommand internal-sftp
Match
我在 sshd_config 中更改了 authorized_keys 的位置(由于 ubuntu 加密了主文件夹)
AuthorizedKeysFile /etc/ssh/%u/authorized_keys
我有chown -R username:www-data to all the www directories
并将它们 chmod 为 755
有时我可以通过 sftp 访问,但它不允许我编辑文件。其他时候我根本无法访问。
我将非常感激任何解释,或者也许指向某处的帮助文件。
干杯
答案1
有两种不同的元素发挥作用:
- 通过 ssh 登录服务器的能力
- 文件的权限。
您对 SSH 文件所做的更改均与允许访问系统有关,但这些文件将归通过 SSH 登录的用户所有。
您可以读取这些文件,因为755
权限规定“所有者可以读取、写入和执行”,其他任何人都可以读取和执行。
解决该问题的黑客方法(也是不太安全的方法)是确保文件是 chmod 777
(即任何人都可以读取、删除和编辑它们)。
更好的方法是将用户名放入www-data
组(在/etc/groups
)并赋予文件775
权限(即所有者和组可以读取,写入和执行,其他所有人只能读取和执行)
我以前没见过,但这些sshd_config
命令,假设它们有效——我没有理由相信它们不会——将用户限制在他们自己的目录中,并且只能执行sftp
。它无法改变文件的所有权。