Я должен chroot
у всех локальных пользователей к их корневым каталогам, но одного пользователя должен быть доступ ко всем пользовательским каталогам. Если я поместил admin_user
в chroot_list_file
у него есть доступ для целой файловой системы. Я хочу ограничить доступ для него только к /home
, но когда он входит в систему FTP-сервера, его каталог по умолчанию должен быть /home/admin_user
. Как может достигнуть этого? У меня есть vsftpd установка со следующей конфигурацией:
# /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=002
dirmessage_enable=YES
xferlog_enable=YES
dual_log_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
max_clients=0
max_per_ip=0
# /etc/vsftpd/chroot_list
admin_user
Вы либо используете VSFTP's chroot() для ограничения пользователей домашними каталогами, либо нет.
Если вы этого не сделаете, то будет открыта вся файловая система, и вы можете полагаться только на правильные разрешения файловой системы для защиты ваших непубличных данных.
Сказав это, vsftp имеет возможность (несколько) ограничить перемещения пользователей с помощью директивы deny_file
:
deny_file
This option can be used to set a pattern for filenames (and
directory names etc.) which should not be accessible in any way.
The affected items are not hidden, but any attempt to do
anything to them (download, change into directory, affect
something within directory etc.) will be denied. This option is
very simple, and should not be used for serious access control -
the filesystem's permissions should be used in preference.
However, this option may be useful ... ...
Создать файл deny_file, например:
# su -c 'rpm -e --noscripts zarafa*'
-24576- [121504]- . ls -d /*/ |grep -v home > /etc/vsftpd/forbidden_path
Лучше всего ограничивать deny_file
, чтобы он применялся только к вашему admin_user
, а не ко всем пользователям:
Добавьте user_config_dir=/etc/vsftpd/user. Переопределить/
директиву main vsftpd.conf
и создать пользовательское переопределение:
# /etc/vsftpd/user.overrides/admin_user
# admin_user is excluded from chroot() but restrict his access to /home
deny_file=/etc/vsftpd/forbidden_path
и перезапустите ftp-сервер и проверьте его поведение, как и ожидалось.
.