Я пытаюсь ограничить пользователя определенным каталогом, который называется gclegal
с помощью chroot jail. Я раскомментировал строку в /etc/vsftpd.conf
файле
chroot_local_user=YES
Создан новый пользователь с именем kg
:
$ sudo groupadd xenomai
$ sudo useradd -d /var/www/html/gclegal -g xenomai kg
$ sudo passwd kg
С этой конфигурацией я могу войти в систему через vsftpd под учетной записью kg
пользователя, но я также могу вернуться к родительским каталогам и изменить их до /var/www/html
.
Как отключить все операции за пределами дома пользователя ( /var/www/html/gclegal
)?
решение1
Начиная с vsftpd
версии 2.2.2, существует два варианта содержания пользователей в chroot
тюрьме:
chroot_list_enable
Просто добавьте пользователей в chroot
список, например ( /etc/vsftpd/chroot_list
), которых вы хотите поместить в chroot jail
.
chroot_local_user
Это посадит всех локальных пользователей в chroot
тюрьму,однако, если это установлено, то chroot_list
становится списком пользователей, которыеНЕзайти в chroot jail
.
Поэтому проверьте, не содержит ли ваш список пользователей, kg
если вы chroot_local_user=YES
его настроили.
vsftpd
Очевидно, что после внесения изменений в конфигурацию необходимо перезапустить демон.
Выдержка из man vsftpd.conf
chroot_list_enable
If activated, you may provide a list of local users who are placed in a chroot() jail in their home directory upon login. The meaning is slightly different if
chroot_local_user is set to YES. In this case, the list becomes a list of users which are NOT to be placed in a chroot() jail. By default, the file containing this list
is /etc/vsftpd/chroot_list, but you may override this with the chroot_list_file setting.
Default: NO
chroot_local_user
If set to YES, local users will be (by default) placed in a chroot() jail in their home directory after login. Warning: This option has security implications, especially
if the users have upload permission, or shell access. Only enable if you know what you are doing. Note that these security implications are not vsftpd specific. They
apply to all FTP daemons which offer to put local users in chroot() jails.
Default: NO
Я настроил vsftpd для chroot
пользователей, и вот какие /etc/vsftpd.conf
настройки я использовал ( Ubuntu 14.04
):
listen=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
chroot_list_enable=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
allow_writeable_chroot=YES
ПРИМЕЧАНИЕ:
Убедитесь , что /etc/vsftpd.chroot_list
или /etc/vsftpd/chroot_list
пусты.
Если после того, как все заработает, вы захотите отслеживать ftp
входы в систему, вы можете настроить команду, session_support=YES
и она должна появиться last
:
username vsftpd:12025 IP address Tue Oct 14 14:05 - 14:10 (00:05)
username vsftpd:12011 IP address Tue Oct 14 14:04 - 14:05 (00:00)
ПРИМЕЧАНИЕ. Поддержка utmp и wtmp предоставляется только в сборках с поддержкой PAM.
решение2
Я установил selinux permissive
и перезапустил vsftpd.service
, что решило проблему.