搭建sftp,并限制账号访问目录

  1. 创建一个专门的用户组和用户
    #创建sftp组
    groupadd sftp
    cat /etc/group |grep sftp
    cat /etc/passwd |grep sftp
    #创建一个sftp用户,用户名为user
    useradd -g sftp -s /bin/false user
    #/bin/false使其没有登陆的权限,也无返回信息
    #修改密码
    passwd user
    XXXXXX

2.指定目录
#sftp组的用户的home目录指定到/ftpuser/DataUser/data_gateway/data下
mkdir -p /ftpuser/DataUser/data_gateway/data/

#然后指定user的home为/ftpuser/DataUser/data_gateway/data/
usermod -d /ftpuser/DataUser/data_gateway/data/ user

3.编辑/etc/ssh/sshd_config
#编辑sshd_config
vi /etc/ssh/sshd_config
#输入/Subsystem搜索到下列内容,注释掉原有的
#Subsystem sftp /usr/libexec/openssh/sftp-server
#改为internal-sftp
Subsystem sftp internal-sftp

#使用 internal-sftp 而不用默认的 sftp-server,是因为:
这是一个进程内的 sftp 服务,当用户 ChrootDirectory 的时候,将不请求任何文件;
更好的节约性能,不用为 sftp 再开一个进程。

4.设定属于用户组sftp的用户都只能访问他们自己的home文件夹
#匹配用户组,如果要匹配多个组,多个组之间用逗号分割
Match Group sftp
#指定登陆用户到自己的用户目录
ChrootDirectory /data/sftp/%u
#或指定登录同一个目录
ChrootDirectory /ftpuser/DataUser/data_gateway/data
#指定 sftp 命令
ForceCommand internal-sftp
#这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
X11Forwarding no
AllowTcpForwarding no

5.增加上传权限
chown -R root:sftp /ftpuser/
chown root:sftp data
chmod 755 /ftpuser/DataUser/data_gateway/data/

6、重启sshd服务
systemctl restart sshd

遇到的问题:
sftp登录报错
在这里插入图片描述
ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主必须是root, 用户组可以不是 root
chown -R root:sftp /ftpuser

sftp无法上传文件
在这里插入图片描述
传输的目录data的属主需是uesr,属组需是root
chown user:root /ftpuser/DataUser/data_gateway/data

需求:
a) 不能影响ftpuser用户的权限,ftpuser用户可以在这个目录下读取数据(ftpuser拥有最大权限)
b) stfp用户可以往这个目录上传文件

vi /etc/passwd
修改user的uid,gid为ftpuser的uid,gid
在这里插入图片描述
在这里插入图片描述
#user用户需在ftpuser用户下方,否则它的属主和属组就为: 在这里插入图片描述
以root为例:
在这里插入图片描述
root:(账号名称):x(:账号密码):0(:账号UID):0(:账号GID):root(:用户说明):/root(:用户家目录):/bin/bash(:shell解析)
在这里插入图片描述
uid=1002(ftpuser) gid=1003(sftp) 组=1003(sftp)
uid:是用户的UID号,用于标识用户的
gid:是用户所属组的ID号,用于标识一个组的
groups:用户所属群组

配置后user可以往/ftpuser/DataUser/data_gateway/data传文件,属主和属组都为ftpuser
在这里插入图片描述在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章