1

На 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 ответа2

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

0

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

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

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

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

A. Do ./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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .