VSFTPD, как chroot не chrooted пользователи в / домой?

Я должен 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
3
задан 19 February 2016 в 21:13
1 ответ

Вы либо используете 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-сервер и проверьте его поведение, как и ожидалось.

.
2
ответ дан 3 December 2019 в 07:02

Теги

Похожие вопросы