Jawley.com RSS Feed
 
 
 
 

Linux下用chroot和pam限制特定用户

买了小黑以后,决定把以前的旭日本本扔在实验室24小时开机了。装了ssh可以在家里远程使用,蛮爽。顺便开了个guest账户,想留给别人scp传东西啥的,但是发现安全问题很难解决。想把这个用户限制在某一目录之下,但又不干扰其他用户的正常使用,Linux并没有直接方式可以实现。研究许久之后,终于用chroot和pam搞定。chroot的原理是将某一目录模拟成根目录,使之无法访问目录之外的资源,类似于虚拟机。而pam的作用是针对特定用户,自动执行chroot。记录一下大致步骤。

1、新建guest账户。

2、我用的是Ubuntu 8.04 Desktop,默认没有装libpam-chroot。装之。

sudo apt-get install libpam-chroot

3、把chroot环境搞起来,我设置的是/chroot。

sudo mkdir /chroot
sudo mkdir /chroot/bin
sudo mkdir /chroot/etc
sudo mkdir /chroot/home
sudo mkdir /chroot/lib
sudo mkdir /chroot/usr
等等

4、把需要用到的命令cp过去。

sudo cp /bin/bash /chroot/bin/
sudo cp /bin/ls /chroot/bin/
sudo cp /bin/cp /chroot/bin/
sudo cp /bin/mv /chroot/bin/
sudo cp /bin/rm /chroot/bin/
等等

5、把这些命令用到的库cp过去,这个比较麻烦,用ldd命令可以查到每个命令都需要哪些库,然后一个个cp。嫌麻烦的话可以把整个/lib和/usr/lib都搬过去,然后有些明显没用的再删掉,比如图形界面相关的,剩下100来兆分辨不清楚,就都扔在那里,也还可以忍。

6、建立/chroot/etc/passwd,内容为/etc/passwd里面guest那一行。只要那一行,别的不要。

sudo tail -1 /etc/passwd > /chroot/etc/passwd

7、修改/etc/pam.d/ssh 加一句。

session required pam_chroot.so

8、修改/etc/security/chroot.conf 加一句。

guest /chroot

当然/etc/ssh/sshd_config里面要允许guest远程登录。

然后差不多就可以了,我印象中就这些。想起来再补充吧。

Leave a Reply

Wikipedia Affiliate Button

Fav Blogs

Fav Forums

Friends

Meta

Canlendar

March 2010
M T W T F S S
« Dec    
1234567
891011121314
15161718192021
22232425262728
293031