На хосте CentOS на 64 бита я использую сценарий 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 в этой ситуации?
P.S. Вот полномочия некоторых файлов, это могло бы быть полезно для предоставления решения:
-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
Что делает сессию для выхода сразу после запуска?
Я нашел решение.
В первую очередь, необходимо забыть о make_chroot_jail.sh и использовать Jailkit.
Я столкнулся с некоторыми проблемами при использовании его, но в конечном счете все работает.
Вот шаги, как я использовал 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 и установите его для избиения как это:
customer01:x:518:601::/home/customer01:/bin/bash
вместо этого:
customer01:x:518:601::/home/customer01:/usr/sbin/jk_lsh