怎样设置SFTP用户权限
导读:SFTP用户权限设置步骤 SFTP(SSH File Transfer Protocol)权限设置的核心目标是限制用户仅能通过SFTP传输文件,无法通过SSH登录,并通过Chroot Jail(目录隔离)约束其访问范围。以下是详细操作流程:...
SFTP用户权限设置步骤
SFTP(SSH File Transfer Protocol)权限设置的核心目标是限制用户仅能通过SFTP传输文件,无法通过SSH登录,并通过Chroot Jail(目录隔离)约束其访问范围。以下是详细操作流程:
1. 创建专用SFTP用户
首先创建一个专门用于SFTP的用户(如sftpuser
),并设置密码:
sudo adduser sftpuser # 按提示输入密码及用户信息
sudo passwd sftpuser # 确认密码
2. 限制用户Shell访问(防止SSH登录)
将用户的默认Shell更改为/sbin/nologin
或/bin/false
,禁止其通过SSH登录:
sudo usermod -s /sbin/nologin sftpuser
3. 创建用户组并添加用户(可选但推荐)
为便于批量管理,创建一个SFTP用户组(如sftpusers
),并将用户加入该组:
sudo groupadd sftpusers # 创建组
sudo usermod -aG sftpusers sftpuser # 将用户添加到组
4. 配置SSH服务器(关键步骤)
编辑SSH配置文件/etc/ssh/sshd_config
,添加以下内容以启用SFTP并限制用户权限:
sudo nano /etc/ssh/sshd_config
在文件末尾添加(若已有Subsystem sftp
行,需注释原行并替换):
# 启用内置SFTP子系统(推荐,更安全)
Subsystem sftp internal-sftp
# 限制SFTP用户的Chroot目录(%h代表用户家目录)
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
说明:
Match Group sftpusers
:匹配sftpusers
组内的所有用户;ChrootDirectory %h
:将用户限制在其家目录(如/home/sftpuser
),无法访问上级目录;ForceCommand internal-sftp
:强制用户只能使用SFTP,无法执行SSH命令。
5. 设置目录权限(核心安全配置)
SFTP用户的家目录及子目录权限需严格遵循以下规则:
- 家目录:必须属于
root
用户,权限设为755
(用户可读/执行,组和其他用户仅可读/执行),防止用户修改目录结构:sudo chown root:root /home/sftpuser sudo chmod 755 /home/sftpuser
- 上传目录:为用户创建一个可写的子目录(如
uploads
),所有权归用户及其所属组,权限设为755
(或775
,若需组内其他用户写入):
注意:sudo mkdir /home/sftpuser/uploads sudo chown sftpuser:sftpusers /home/sftpuser/uploads sudo chmod 755 /home/sftpuser/uploads
ChrootDirectory
指定的目录(如/home/sftpuser
)必须由root
拥有,且不能有写权限(避免用户逃逸Chroot环境)。
6. 重启SSH服务(应用配置)
保存配置文件后,重启SSH服务使更改生效:
sudo systemctl restart sshd
7. 验证配置(测试权限)
使用SFTP客户端(如FileZilla
或命令行)连接服务器,验证用户权限:
sftp sftpuser@your_server_ip
- 测试Chroot限制:尝试
cd ..
(切换至上层目录),应提示Permission denied
; - 测试上传功能:进入
uploads
目录,尝试上传文件(如put localfile.txt
),应成功; - 测试Shell登录:尝试
ssh sftpuser@your_server_ip
,应提示This service allows sftp connections only.
(或类似信息)。
8. 可选:配置SELinux(若系统启用)
若服务器启用了SELinux,需调整上下文以允许SFTP访问:
sudo setsebool -P sftp_home_dir on # 允许SFTP访问家目录
sudo chcon -Rv --reference=/home/sftpuser /home/sftpuser/uploads # 设置上传目录上下文
通过以上步骤,即可完成SFTP用户权限的设置,确保用户只能通过SFTP传输文件,且访问范围被严格限制在其家目录内。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 怎样设置SFTP用户权限
本文地址: https://pptw.com/jishu/726408.html