Centos6新建用户并且限制用户的访问权限在某个指定目录中

需求
新建一个新的用户,并且为了保证系统的安全性,指定该用户在指定的目录内进行访问

  1. 新建用户组
1
groupadd sftpusers
  1. 新建用户并将用户添加到分组中

1)使用root权限建立新用户的主目录,注意这里必须是root权限,否则后续的sftp不能连接

1
adduser sftpuser1 -d /sftp/sftpuser1 --shell /bin/false -g sftpusers

如果上面已经用root建立了一个主目录。所以会有一个warning,不用管他。

2)设置密码

1
passwd sftpuser1

3)查看group情况

1
groups sftpuser1
  1. 修改sshd_config,使用 chroot 监狱限制 SSH 用户访问指定目录
1
vim /etc/ssh/sshd_config

1)
注释

1
Subsystem sftp    /usr/libexec/openssh/sftp-server

新加

1
Subsystem sftp internal-sftp

2)
在文件的最后加入:

1
2
3
4
5
Match User sftpuser1           #也可设置为用户组  Match group sftpusers
ChrootDirectory /sftp/sftpuser1    
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

这一段的意思是对visitors分组里的所有用户,我们只给他们通过sftp访问/home/fangke的权限,不能直接通过ssh登录服务器

3)重启sshd

1
2
3
# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

1
systemctl restart sshd
  1. 目录和权限设置

1)/sftp/sftpuser1
ChrootDirectory设置的目录/sftp/sftpuser1的所有者必须是root,并且该目录的上级目录/sftp的所有者也必须是root.
而且只有所有者拥有写权限,/sftp/sftpuser1和/sftp的权限最大设置只能是755.

1
2
chown root:root /sftp/sftpuser1
chmod -R 755 /sftp

2)/sftp/sftpuser1/download
由于上一层目录的权限是755,
因此所有非root用户都无法在目录中写入文件.
我们需要在ChrootDirectory指定的目录下建立子目录比如download,重新设置属主和权限.

1
2
3
mkdir /sftp/sftpuser1/download
chown sftpuser1:sftpusers /sftp/sftpuser1/download
chmod 755 /sftp/sftpuser1/download

这样就可以在读写download目录了.

  1. 测试

sftp -oPort=22 [email protected]
输入密码

1
2
3
4
5
6
# sftp -oPort=22 [email protected]
Connecting to 127.0.0.1...
[email protected]'s password:
sftp> ls
download
sftp>

在这里插入图片描述
6. 问题和经验教训
按照网上的教程设置后,出现过几种情况
1)Write failed: Broken pipe
错误: Received unexpected end-of-file from SFTP server
错误: 无法连接到服务器

解决:
这个问题是由于ChrootDirectory指定的目录的权限问题。
注意归属和权限

drwxr-xr-x 3 root root 4096 Jun 17 16:12 sftp

drwxr-xr-x 3 root root 4096 Jun 17 15:21 sftpuser1

drwxr-xr-x 2 sftpuser1 sftpusers 4096 Jun 17 15:24 download

我最后的解决方案是: 单独建/sftp/sftpuser1 文件夹, 不要放在/home底下。

————————————————
参考资料:
Centos新建用户并且限制用户的访问权限在某个指定目录中
https://blog.csdn.net/xuelangqingkong/article/details/103327925

centos6.6 创建sftp用户 只允许访问指定目录_mshaiting的博客-CSDN博客 https://blog.csdn.net/mshaiting/article/details/80269091

linux新建用户指定目录权限 - 的回答 - SegmentFault 思否 https://segmentfault.com/q/1010000004142147/a-1020000004143211