linux sftp创建新用户,只允许访问某个目录。

  1. 背景,作用、
    系统:centos
    公司需要新建一个sftp账户,只允许访问和操作对应的目录文件。其他文件夹则不显示。

  2. 创建用户

    adduser sftpuser
    
  3. 给新建的用户设置密码

    passwd sftpuser
    

    输入密码,回车,确认密码。

  4. 禁止该用户登录 SSH

    usermod -s /bin/false sftpuser
    

    因为我们只想这个用户作用于ftp工具,所以禁用SSH登录。

  5. 设置该用户的主目录

    usermod -d /data/wwwroot/test/ sftpuser
    

    这样用户登入的时候就会直接跳到该目录,但是用户还是可以访问其他目录,需要做一下限制。(注意这里的目录根据自己的需求选择,但是目录所属必须是root,下面会讲到。)

  6. 修改sshd_config

    vi /etc/ssh/sshd_config
    

    找到 Subsystem sftp 这一行,修改成

    Subsystem sftp internal-sftp
    UsePAM yes
    Match User sftpuser
    ForceCommand internal-sftp
    ChrootDirectory /data/wwwroot/test/
    

    同时将sftpuser换成自己的用户,/data/wwwroot/test/换成该用户的主目录。
    如果有多个用户需要做此操作的话,重复复制这段,将用户名和目录换成对应的就行,例如:

    Subsystem sftp internal-sftp
    UsePAM yes
    Match User sftpuser
    ForceCommand internal-sftp
    ChrootDirectory /data/wwwroot/test/
    
    Subsystem sftp internal-sftp
    UsePAM yes
    Match User sftpuser1
    ForceCommand internal-sftp
    ChrootDirectory /data/wwwroot/test1/
    
    Subsystem sftp internal-sftp
    UsePAM yes
    Match User sftpuser2
    ForceCommand internal-sftp
    ChrootDirectory /data/wwwroot/test2/
    

    最后保存退出。重启sshd服务。

    /etc/init.d/sshd restart
    

好了,到此该用户登入后只会限制在自己的主目录下,也看不到别的目录。

注意:用户登录后可能会发现以下问题

  1. 显示一片空白,可能登入不上去,或者登上去但是没有目录显示。
    因为ChrootDirectory设置的目录开始往上到系统根目录只能属于root用户。
    ChrootDirectory设置的目录开始往上到系统根目录为止都不可以具有群组写入权限(最大权限 755)
    所以/data/wwwroot/test/该目录往上所属都只能是root用户,这点需要注意一下。

  2. 用户不能做编辑上传等操作
    这是因为当前用户并没有权限操作。
    所以只需要在data/wwwroot/test/下新建一个新的目录供这个用户进行操作。

    mkdir /data/wwwroot/test/upload
    chown -R sftpuser:root /data/wwwroot/test/upload
    

    这样用户就可以在upload目录下进行操作了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值