开发者社区> 问答> 正文

linux新建用户指定目录权限

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

展开
收起
a123456678 2016-06-23 15:27:48 2631 0
1 条回答
写回答
取消 提交回答
  • 用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.

    2019-07-17 19:46:25
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载