如果我们需要给某个用户提供访问权限,但是又不想让他看所有的资源,可以通过配置ssh,修改登录用户的根目录。
1、这里建一个测试账号test
ubuntu@localhost:~$ tail -n 1 /etc/passwd test:x:1001:1001:,,,:/home/test:/bin/bash ubuntu@localhost:~$ ls -l /home/ total 8 drwxr-xr-x 4 test test 4096 Feb 19 15:53 test drwxr-xr-x 10 ubuntu ubuntu 4096 Feb 19 16:07 ubuntu
2、在test目录下创建一个jail目录,用作test用户登陆的根目录,然后搭建一个chroot环境,为了方便,这里将根目录绑定到jail目录
ubuntu@localhost:~$ sudo mount --bind / /home/test/jail ubuntu@localhost:~$ ls /home/test/jail/ bin boot dev etc home initrd.img initrd.img.old lib lib64 lost+found media mnt opt proc root run sbin snap srv sys tmp usr var vmlinuz vmlinuz.old ubuntu@localhost:~$
3、修改jail路径上的目录的所有者为root:root,这里test到原所有者是test
ubuntu@localhost:~$ ls -l /home total 8 drwxr-xr-x 4 test test 4096 Feb 19 15:53 test drwxr-xr-x 10 ubuntu ubuntu 4096 Feb 19 16:07 ubuntu ubuntu@localhost:~$ sudo chown root:root /home/test ubuntu@localhost:~$ ls -l /home total 8 drwxr-xr-x 4 root root 4096 Feb 19 15:53 test drwxr-xr-x 10 ubuntu ubuntu 4096 Feb 19 16:07 ubuntu
4、修改sshd配置文件,在/etc/ssh/sshd_config末尾加上下面语句
Match User test
ChrootDirectory %h/jail
5、重启sshd服务,使用test账户连接,可以看到,新的根目录的proc没有挂载proc系统
test@localhost:~$ ls / bin boot dev etc home initrd.img initrd.img.old lib lib64 lost+found media mnt opt proc root run sbin snap srv sys tmp usr var vmlinuz vmlinuz.old test@localhost:~$ ls /proc/