Linux 创建用户 限制SFTP用户只能访问某个目录

2023-06-02,,

Linux 限制SFTP用户只能访问某个目录

1. 新建用户并设置密码

useradd suser

passwd suser   // 输入密码

2. 设置sshd配置文件

cd /etc/ssh/

cp sshd_config sshd_config.back      // 备份

vi sshd_config

// 注释该行 不注释的话会报错

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

Subsystem sftp internal-sftp

Match User suser

        ChrootDirectory /var/opt/sftp

        X11Forwarding no

        AllowTcpForwarding no

        ForceCommand internal-sftp

3. 重启sshd服务

> service sshd restart

其实我到这一步,已经成功实现了Linux 限制SFTP用户只能访问某个目录​,我的需求是只允许test用户访问mnt这个目录。​

4. 创建目录并设置权限

mkdir /var/opt/sftp

chown -R root:suser /var/opt/sftp

chmod -R 750 /var/opt/sftp

至关重要的是:

ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root;

ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,也就是说权限最大设置只能是755。

注意:由于权限是755,导致非root用户都无法在目录中写入文件,所以需要在ChrootDirectory指定的目录下建立子目录,重新设置属主和权限。

如:

chown

suser:suser /var/opt/sftp/testdir

chmod

-R 755 /var/opt/sftp/testdir

5. 测试一下

sftp

-oPort=22 sftpuser@192.168.11.180

常见问题:

1. 登陆时报错:Write failed: Broken pipe, Couldn't read packet: Connection reset by peer

原因:权限的问题,必须设置目录为属root用户,属sftp用户组。权限为750

2. 重启sshd时报错:Starting sshd: /etc/ssh/sshd_config line 141: Subsystem 'sftp' already defined.

原因:忘记把Subsystem注释,导致/etc/ssh/sshd_config同时存在有两个Subsystem节点

Linux 创建用户 限制SFTP用户只能访问某个目录的相关教程结束。

《Linux 创建用户 限制SFTP用户只能访问某个目录.doc》

下载本文的Word格式文档,以方便收藏与打印。