在Ubuntu系统中,SFTP(SSH File Transfer Protocol)的权限设置主要涉及到以下几个方面:
-
用户和用户组权限: 确保SFTP用户属于正确的用户组,通常情况下,SFTP用户应该属于
sftp-users
或类似的组。你可以使用以下命令将用户添加到相应的组:sudo usermod -a -G sftp-users username
然后,确保
/etc/ssh/sshd_config
文件中的Subsystem sftp
配置如下:Subsystem sftp /usr/lib/openssh/sftp-server
-
目录权限: 为了确保SFTP用户只能访问其主目录,你需要设置正确的目录权限。以下是一些建议的权限设置:
- 根目录(例如
/home/username
):755权限,所有者为root。 - 用户主目录(例如
/home/username
):755权限,所有者为SFTP用户。 - 用户上传目录(例如
/home/username/uploads
):775权限,所有者为SFTP用户,用户组为sftp-users。
使用以下命令设置权限:
sudo chmod 755 /home/username sudo chown root:root /home/username sudo chmod 755 /home/username/uploads sudo chown username:sftp-users /home/username/uploads
- 根目录(例如
-
chroot环境: 如果你希望限制SFTP用户只能访问其主目录,可以使用chroot环境。要实现这一点,请按照以下步骤操作:
-
编辑
/etc/ssh/sshd_config
文件,找到或添加以下配置:Match Group sftp-users ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no
-
确保chroot目录(例如
/home/username
)的权限设置正确:sudo chmod 755 /home/username sudo chown root:root /home/username
-
在chroot目录中创建一个子目录,用于存放用户的文件,例如
uploads
,并设置正确的权限:sudo mkdir /home/username/uploads sudo chown username:sftp-users /home/username/uploads
-
重启SSH服务以应用更改:
sudo systemctl restart ssh
-
按照以上步骤设置权限后,你应该能够成功配置Ubuntu系统上的SFTP权限。