2015-08-13 4 views
0

на стороне сервера на моем debian8, команды запускались:Как правильно установить chroot jail для службы sshd?

adduser --home /home/user1 user1 
nano /etc/ssh/sshd_config 
Match User user1 
ChrootDirectory /home/user1 #two lines were added 

service sshd restart 

На стороне клиента,

ssh [email protected] 
[email protected]'s password: 
Write failed: Broken pipe 

Почему нельзя установить CHROOT острог на/дома/user1?

+0

У ошибки 'sshd' в наличии ошибок? – larsks

ответ

1

Что, вероятно, происходит, что sshd выдает chroot() системный вызов, но тогда, когда система пытается запустить оболочку (которая, вероятно, что-то вроде /bin/bash), она не существует ... потому что вы в изолированной среде, поэтому нет каталога /bin.

Вы можете скопировать свою оболочку в /home/user1/bin/bash, но вам также потребуется скопировать файлы в любых необходимых общих библиотеках. Вы можете получить, запустив ldd /bin/bash:

# ldd /bin/bash 
linux-vdso.so.1 => (0x00007ffc3eff5000) 
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f21ceb47000) 
libdl.so.2 => /lib64/libdl.so.2 (0x00007f21ce943000) 
libc.so.6 => /lib64/libc.so.6 (0x00007f21ce586000) 
/lib64/ld-linux-x86-64.so.2 (0x00007f21ced71000) 

Вы можете скопировать каждый из этих в соответствующее место в вашей chroot среде, но если вы хотите запустить любую другую команду, вам нужно будет повторить описанный выше процесс ,

И вы можете обнаружить, что некоторые библиотеки загружаются динамически, и вам также нужно будет их скопировать.

И любые необходимые файлы конфигурации от /etc. И, возможно, некоторые узлы устройства от /dev. И т. Д.

Другими словами, это не стоит усилий, если только ваша цель - ограничить доступ к одной команде.