在CentOS上设置SFTP用户权限,可以按照以下步骤进行:
1. 创建新用户
首先,使用useradd
命令创建一个新用户。例如,创建一个名为sftpuser
的用户:
sudo useradd sftpuser
2. 设置用户密码
使用passwd
命令为新用户设置密码:
sudo passwd sftpuser
按照提示输入并确认密码。
3. 配置SSH和SFTP
编辑SSH配置文件/etc/ssh/sshd_config
,以允许SFTP访问:
sudo nano /etc/ssh/sshd_config
找到并修改以下行:
Subsystem sftp /usr/libexec/openssh/sftp-server
确保这一行没有被注释掉(即前面没有#
)。
4. 限制SFTP用户的根目录
为了安全起见,通常希望限制SFTP用户只能访问特定的目录。可以使用ChrootDirectory
指令来实现这一点。
首先,确保目标目录存在并且属于root用户:
sudo mkdir -p /home/sftpuser/uploads sudo chown root:root /home/sftpuser/uploads
然后,在sshd_config
文件中添加或修改以下内容:
Match User sftpuser ChrootDirectory /home/sftpuser/uploads ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no
5. 重启SSH服务
保存并关闭sshd_config
文件后,重启SSH服务以应用更改:
sudo systemctl restart sshd
6. 测试SFTP连接
使用SFTP客户端连接到服务器,验证配置是否正确:
sftp sftpuser@your_server_ip
如果一切配置正确,你应该能够成功登录并访问/home/sftpuser/uploads
目录。
7. 可选:使用PAM进行更细粒度的控制
如果你需要更细粒度的控制,可以使用PAM(Pluggable Authentication Modules)。编辑/etc/pam.d/sshd
文件,添加以下行:
auth required pam_listfile.so item=user sense=allow file=/etc/ssh/sftpusers onerr=succeed
然后创建/etc/ssh/sftpusers
文件,并列出允许使用SFTP的用户:
sudo nano /etc/ssh/sftpusers
在文件中添加用户名:
sftpuser
保存并关闭文件。
通过以上步骤,你应该能够在CentOS上成功设置SFTP用户权限,并确保用户只能访问指定的目录。