Linux 限制SFTP用户只能访问某个目录
需求:其他机器需要向我方服务器传数据,要求只能看我方指定目录新建用户并设置密码groupadd boss_useruseradd -d /data/boss_user -g boss_user boss_userpasswd boss_user设置sshd配置文件cd /etc/ssh/cp sshd_config sshd_config.back// 备份vi sshd_config#下面这行需
需求:其他机器需要向我方服务器传数据,要求只能看我方指定目录
目录最好放在/var/opt/sftp/,如果存储不够可以软链接过去
- 新建用户并设置密码
groupadd boss_user
useradd -d /data/boss_user -g boss_user boss_user
passwd boss_user
- 设置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 boss_user
ChrootDirectory /data/ftp/
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
boss_user
是我们要配置的用户
/data/ftp/
是我们要制定的目录
- 重启sshd服务
service sshd restart
其实我到这一步,已经成功实现了Linux 限制SFTP用户只能访问某个目录,我的需求是只允许boss_user用户访问/data/ftp/这个目录
- 创建目录并设置权限
mkdir /data/ftp
chown -R root:boss_user /data/ftp/
chmod -R 750 /data/ftp/
至关重要的是:
ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root;
ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,也就是说权限最大设置只能是755。
注意
:由于权限是755,导致非root用户都无法在目录中写入文件,所以需要在ChrootDirectory指定的目录下建立子目录,重新设置属主和权限。
如:
[root@hadoop100 ssh]# cd /data/ftp/
[root@hadoop100 ftp]# ll
total 0
[root@hadoop100 ftp]# mkdir testdir
[root@hadoop100 ftp]# chmod -R 755 testdir/
[root@hadoop100 ftp]# chown boss_user:boss_user /data/ftp/testdir/
- 测试一下
sftp测试只有一个“/”目录,根目录下只有“testdir“
[dop@hadoop101 ~]$ sftp boss_user@192.168.10.100
boss_user@192.168.10.100's password:
Connected to 192.168.10.100.
sftp> ls
testdir
sftp> pwd
Remote working directory: /
ssh是拒绝的
[dop@hadoop101 ~]$ ssh boss_user@192.168.10.100
boss_user@192.168.10.100's password:
This service allows sftp connections only.
Connection to 192.168.10.100 closed.
常见报错:
- 登陆时报错:Write failed: Broken pipe, Couldn’t read packet: Connection reset by peer
原因:权限的问题,必须设置目录为属root用户,属sftp用户组。权限为750
- 重启sshd时报错:Starting sshd: /etc/ssh/sshd_config line 141: Subsystem ‘sftp’ already defined.
原因:忘记把Subsystem注释,导致/etc/ssh/sshd_config同时存在有两个Subsystem节点
- /etc/ssh/sshd_config line 148: Directive ‘UseDNS’ is not allowed within a Match block
把添加的写在文件最后就好了
更多推荐
所有评论(0)