在Linux系统中,设置SFTP用户权限通常涉及以下几个步骤:
创建新用户(如果需要):
sudo adduser username
设置用户密码:
sudo passwd username
限制用户的shell访问: 为了安全起见,你可以将用户的默认shell更改为/sbin/nologin
或/bin/false
,这样用户就不能通过SSH登录,只能使用SFTP。
sudo usermod -s /sbin/nologin username
配置SSH和SFTP: 编辑/etc/ssh/sshd_config
文件,确保以下配置存在并且没有被注释掉:
Subsystem sftp internal-sftp
这告诉SSH服务器使用内置的SFTP子系统。
创建一个组来管理SFTP用户(可选): 创建一个专门用于SFTP用户的组,并将SFTP用户添加到这个组中。
sudo groupadd sftpusers sudo usermod -aG sftpusers username
设置用户的主目录权限: 确保用户的主目录权限设置正确,以防止用户访问其他用户的文件。
sudo chown root:root /home/username sudo chmod 755 /home/username
限制用户访问特定目录(可选): 如果你想限制SFTP用户只能访问特定的目录,可以使用chroot
jail。首先,确保用户的主目录及其所有父目录的所有者和组都是root。
sudo chown root:root /home/username sudo chmod 755 /home/username
然后,在sshd_config
文件中添加或修改以下配置:
Match Group sftpusers ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no
这会将属于sftpusers
组的用户限制在他们自己的主目录中。
重启SSH服务: 使配置生效,重启SSH服务。
sudo systemctl restart sshd
通过以上步骤,你可以设置Linux系统中的SFTP用户权限,确保用户只能通过SFTP访问文件,并且不能通过SSH登录。