1. 程式人生 > >使用chroot構建linux沙盒

使用chroot構建linux沙盒

因為idc上掛了一個外部網站,idc許可權一般不外放,之前給一個登入shell為/bin/nologin的使用者建ftp,現在希望更進一步,可以ssh到該目錄中使用git命令進行程式碼管理但不能對其他目錄和系統有許可權。早先知道有個chroot命令,今天用了一下。如:

chroot /home/chroot /bin/bash

注意如果提示no such file or directory,實際上是提示/bin/bash或它需要的檔案(如so檔案)找不到,解決方法就是把所有需要目錄都拷貝過去(用ldd /bin/bash檢視)。

chroot的目錄必須是root所有的,相當於一個系統目錄沙盒,我看到網上有很多用chroot方法在一臺機器上構建不同linux發行版(centos,redhat,slackware)。

我的具體做法是這樣:

sudo mkdir /home/chroot

cd /home/chroot

sudo cp /bin . -rf

sudo cp /lib . -rf

sudo cp /lib64 . -rf

sudo cp /usr . -rf

sudo cp /sbin . -rf

sudo cp /etc . -rf

sudo mkdir ./dev

sudo mkdir ./proc

sudo mount  --bind /dev/ ./dev

sudo mount  --bind /proc/ ./proc

chroot /home/chroot /bin/bash

恩,這樣就可以了,現在要新增一個home/hopkins目錄在/home/chroot/中的使用者,登陸shell為/bin/bash的使用者,新增之後在/etc/password中看到是這樣:

hopkinsadmin:x:1004:1004::/home/hopkinsadmin:/bin/bash

修改/etc/ssh/sshd_config,新增:

Match User hopkinsadmin
ChrootDirectory /home/chroot/

重啟sshd:

sudo service ssh restart

現在ssh登陸就可以了,很棒吧。