首页 > linux新建用户指定目录权限

linux新建用户指定目录权限

我想在centos上建立一个用户,指定一个目录给它,只能在这个目录下操作,不能返回到向上一级等等的目录。就好像ftp那种类似,但是以ssh登陆进去的,应该怎么做?谢谢.


useradd还是adduser, 貌似两个都有. 默认是会创建/home/Name的目录, 而且只有这个目录的读写权限, 其他目录的是可以看的


构建chroot环境,修改sshd配置指定用户登录目录


用ChrootDirectory限制SFTP登录的用户只能访问指定目录且不能进行ssh登录

创建不能ssh登录的用户sftpuser1,密码用于sftp登录:

sudo adduser sftpuser1 --home /sftp/sftpuser1 --shell /bin/false

sudo nano /etc/ssh/sshd_config (执行man sshd_config查看配置说明)
Ubuntu/Debian上把Subsystem sftp /usr/lib/openssh/sftp-server
Redhat/CentOS上把Subsystem sftp /usr/libexec/openssh/sftp-server
修改为 Subsystem sftp internal-sftp
并加入:

Match User sftpuser1
    ChrootDirectory /sftp/sftpuser1
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

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

sudo chown root:root /sftp/sftpuser1
sudo service ssh reload

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

mkdir /sftp/sftpuser1/data
chown sftpuser1:sftpuser1 /sftp/sftpuser1/data
chmod 755 /sftp/sftpuser1/data

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

配置好后,用户sftpuser1只能通过sftp访问指定目录,而且不能进行ssh登录:
sftp sftpuser1@127.0.0.1 登录成功,执行 ls -lha / 可见根目录为 /sftp/sftpuser1, 执行cd ..可见无法进入上一层目录.
ssh sftpuser1@127.0.0.1 提示:
Could not chdir to home directory /sftp/sftpuser1: No such file or directory
This service allows sftp connections only.
Connection to 127.0.0.1 closed.

把 AllowTcpForwarding no 改为 AllowTcpForwarding yes 表示允许用户进行端口转发, X11Forwarding 含义类似.

【热门文章】
【热门文章】