64ビットCentOSホストではスクリプトを使用していますmake_chroot_jail.sh
ユーザーを監獄に閉じ込め、自宅以外の場所を見ることを許可しないようにします/home/jail/home/user1
。
私は次のように入力しました:
sudo ./make_chroot_jail.sh user1
その後、最初に user1 に接続しようとすると、次のようなエラーが発生しました:
/bin/su: user guest does not exist
不足しているライブラリをいくつかコピーすることでこれを修正しました:
sudo cp /lib64/libnss_compat.so.2 /lib64/libnss_files.so.2 /lib64/libnss_dns.so.2 /lib64/libxcrypt.so.2 /home/jail/lib64/
sudo cp -r /lib64/security/ /home/jail/lib64/
しかし、今、user1 に接続しようとしてsu user1
、パスワードを入力すると、次のエラーが発生します。
could not open session
問題は、この状況で user1 に接続するにはどうすればよいかということです。
PS: いくつかのファイルの権限は次のとおりです。これは解決策を提供するのに役立つかもしれません:
-rwsr-xr-x 1 root root /home/jail/bin/su
drwxr-xr-x 4 root root /home/jail/etc
-rw-r--r-- 1 root root /home/jail/etc/pam.d/su
-rw-r--r-- 1 root root /home/jail/etc/passwd
-rw------- 1 root root /home/jail/etc/shadow
更新1
いくつかの変更を行った後、user1 に接続できましたが、セッションはすぐに閉じられます。これは PAM の問題だと思いますが、修正方法が見つかりません。
以下は、クローズアクションのログエントリです/val/log/secure
:
Oct 6 15:19:42 localhost su: pam_unix(su:session): session closed for user user1
起動後すぐにセッションが終了するのはなぜですか?
答え1
このcould not open session
問題を解決するには、make_chroot_jail.sh を完全に放棄せずに、/usr/lib/libcrack*
ライブラリもコピーする必要があります。次のスクリプトを編集します。
# If you are using a 64 bit system and have strange problems with login comment
# the following lines in, perhaps it will work (motto: if you can't find the
# needed library just copy all of them)
#
# cp /lib/*.* ${JAILPATH}/lib/
# cp /lib/lib64/*.* ${JAILPATH}/lib/lib64/
への変更:
cp /lib/*.* ${JAILPATH}/lib/
cp /lib64/*.* ${JAILPATH}/lib64/
cp -rp /lib64/security ${JAILPATH}/lib64/
cp /usr/lib64/libcrack* ${JAILPATH}/usr/lib64/
簡単に補足すると、上記により、64 ビット SuSE - SLES 11 sp2 でこの問題が修正されました。 の名前も に変更しました$JAILPATH/lib
。$JAILPATH/lib64
また、その OS では、jail に空の /etc/profile ファイルを追加する必要がありました (これを使用して PS1 プロンプトを表示できます)。
答え2
解決策を見つけました。
まず、make_chroot_jail.shを忘れて、ジェイルキット。
使用中にいくつか問題が発生しましたが、最終的にはすべて機能しました。
Jailkit を使用した手順と、発生していた問題の解決方法は次のとおりです。
A../configure; make; make install
で説明されているとおりに実行してくださいINSTALL.txt
。
B.まだ存在しない場合は/usr/sbin
追加します。$PATH
C. 次の操作を実行します。
jk_init -v -j /home/jail basicshell editors extendedshell netutils ssh sftp scp
次のようなエラー メッセージが表示されて失敗する場合があります。
`ERROR: configfile /usr/jk_init.ini does not exist`
これを修正するには、を に/usr/sbin/jk_init
変更し てもう一度試してください。INIPREFIX='/usr'
INIPREFIX='/etc/jailkit'
D. 次の操作を実行します。
jk_jailuser -v -m -j /home/jail customer01
次のようなエラー メッセージが表示されて失敗する場合があります。
invalid shell, /home/jail/usr/sbin/jk_lsh does not exist
修正するには、次のようにします。
jk_init -v -j /home/jail jk_lsh
もう一度試してください。代わりに、jk_lsh
手順 C でリストに追加することもできます。
E. customer01 に接続しようとすると、起動直後に接続が終了する場合があります。この問題を解決するには、/home/jail/etc/passwd
customer01 のシェルを変更し、次のように bash に設定します。
customer01:x:518:601::/home/customer01:/bin/bash
これの代わりに:
customer01:x:518:601::/home/customer01:/usr/sbin/jk_lsh