sftp账号权限配置

linken 538 2022-08-12

需要在CentOS系统的服务器上创建sftp账号,但出于安全须限制此账号不能ssh登录,且仅能访问工作目录,即设置数据上传路径为根目录。

环境说明

  • sftp用户为:sftpuser1
  • sftp用户组为:sftp
  • 数据上传目录为:/data/test_dir

修改sshd配置文件

vim /etc/ssh/sshd_config
#注释下面这行
#Subsystem sftp /usr/lib/openssh/sftp-server

#添加以下几行
Subsystem sftp internal-sftp 
Match group sftp
#Match user sftpuser1
#匹配整个sftp组,如仅设置单个用户可用:Match user 用户名;
ChrootDirectory /data/test_dir
#指定用户被锁定到的那个目录,为了能够chroot成功,该目录必须属主是root,并且其他用户或组不能写
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

添加用户组和用户

添加用户组:

groupadd sftp

添加用户:

useradd -d /data/test_dir -m -s /bin/false -g sftp sftpuser1

修改密码:

echo "123456passwd" |passwd --stdin sftpuser1

配置数据目录权限

对数据目录需要遵循的权限规则为:

  • ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root
  • ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,权限最大设置只能是755

即,修改/data/test_dir目录权限为755,且应确保其上级目录属主属组均为root:

chmod 755 /data/test_dir -R

重启sshd服务

systemctl restart sshd

# linux # centos # sftp # ssh