Не удалось su после создания chroot тюрьмы

На 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

Update1

После некоторых изменений мне удалось подключиться к user1, но сессия сразу же закрывается! Я предполагаю, что это проблема PAM, однако не могу найти способ исправить это.

Здесь запись в журнале для близких действий от /val/log/secure:

Oct  6 15:19:42 localhost su: pam_unix(su:session): session closed for user user1

Что заставляет сеанс выходить сразу после запуска?

2 ответа

Чтобы исправить 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, И для этой ОС мне пришлось добавить пустой файл /etc/profile в тюрьму (вы можете использовать его, чтобы вставить приглашение PS1).

Я нашел решение.

Прежде всего вы должны забыть о make_chroot_jail.sh и использовать Jailkit.

Я столкнулся с некоторыми проблемами при его использовании, но в конце концов все работает.

Вот шаги, как я использовал Jailkit и как я устранял возникающие проблемы:

А. До ./configure; make; make install как это описано в INSTALL.txt,

Б. Добавить /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
Другие вопросы по тегам