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
make_chroot_jail.sh를 완전히 버리지 않고 문제를 해결하려면 라이브러리 could not open session
도 복사해야 합니다 /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의 경우 감옥에 빈 /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