在Debian系统中,配置SFTP用户权限通常涉及编辑SSH配置文件和使用chroot jail来限制用户的访问范围。以下是详细的步骤:
首先,确保你已经安装了openssh-server和openssh-sftp-server。
sudo apt update
sudo apt install openssh-server openssh-sftp-server
打开SSH配置文件/etc/ssh/sshd_config。
sudo nano /etc/ssh/sshd_config
在文件中找到或添加以下配置:
# 启用SFTP子系统
Subsystem sftp /usr/lib/openssh/sftp-server
# 限制用户只能使用SFTP
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
创建一个专门用于SFTP用户的组。
sudo groupadd sftpusers
添加一个新用户并将其分配到sftpusers组。
sudo adduser username
sudo usermod -aG sftpusers username
确保用户的家目录及其父目录的权限设置正确,以便chroot jail能够正常工作。
sudo chown root:root /home/username
sudo chmod 755 /home/username
# 创建一个上传目录并设置权限
sudo mkdir /home/username/uploads
sudo chown username:sftpusers /home/username/uploads
sudo chmod 755 /home/username/uploads
如果你启用了SELinux,可能需要调整相关的策略。
sudo setsebool -P ssh_sysadm_login on
sudo setsebool -P sftp_home_dir on
最后,重启SSH服务以应用更改。
sudo systemctl restart sshd
使用SFTP客户端连接到服务器,确保配置正确。
sftp username@your_server_ip
你应该能够登录并访问/home/username/uploads目录。
通过以上步骤,你可以在Debian系统上配置SFTP用户权限,确保用户只能通过SFTP访问指定的目录,并且不能进行SSH登录或其他操作。