linux限制只能访问用户主目录不能cd,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

Subsystemsftp 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节点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值