SFTP指定用户配置

sftp指定登录账号访问指定目录及读写权限

1、创建用户与目录

创建一个系统用户(如果尚未创建)。为了安全,建议将其Shell设置为不可登录,例如 /sbin/nologin

#Shell设置为不可登录
useradd -m -s /sbin/nologin sftpuser 
# 为该用户设置密码
passwd sftpuser  

为用户建立目录(如 uploads)用于实际的文件上传和下载。

# 创建上传目录
mkdir -p /home/sftpuser/uploads

2、设置目录权限

755(用户完全控制)555(所有者、组、其他用户都只有读和执行权限)或 444(仅读权限)

# 设置根目录为root所有,权限755
chown root:root /home/sftpuser
chmod 755 /home/sftpuser

# 设置上传目录为用户所有,权限按需设置(如755)
chown sftpuser:sftpuser /home/sftpuser/uploads
chmod 755 /home/sftpuser/uploads
# 目录下的所有内容和目录权限改为只读(555允许进入目录,444仅能读文件)
chmod 555 /home/sftpuser/uploads
chmod -R 555 /home/sftpuser/uploads/*

3、配置SSH服务器

编辑/etc/ssh/sshd_config添加以下配置

#客户端请求使用 内置SFTP服务
Subsystem sftp internal-sftp

Match User sftpuser  # 匹配特定用户,也可用 "Match Group sftpgroup" 匹配用户组
   ChrootDirectory /home/sftpuser  # 禁锢目录,必须绝对路径
   ForceCommand internal-sftp      # 强制使用内置SFTP
   #ForceCommand internal-sftp -R  # 某些SFTP服务器支持 -R 参数强制只读会话
   AllowTcpForwarding no           # 禁止端口转发
   X11Forwarding no                # 禁止X11转发
   PermitTunnel no                 # 禁用 SSH 隧道功能

4、重启SSH服务

systemctl restart sshd