У меня есть внешние клиенты, которые загружают / скачивают файлы через vsftpd FTP на Ubuntu 18.04. Они используют учетные записи Linux (не виртуальные), привязаны к корневому каталогу и нуждаются (и видят) только в своих собственных каталогах.
Теперь их дома должны быть каким-то образом доступны из Windows для просмотра и, возможно, редактирования загрузок нашими администраторами приложений и конкретными операторами приложений, которые являются обычными пользователями Windows AD.
Я хотел бы переместить их весь / home из общего ресурса Windows AD на нашем файловом сервере и сделать доступным для определенных групп безопасности AD, но я не уверен, будет ли это работать с разрешениями Linux? Я явно хотел бы избежать совместного использования папок Ubuntu по сети.
Идея:
смонтируйте / home как общий ресурс CIFS с файлового сервера AD.
vsftpd - пользователи FTP подключаются к смонтированному / домашнему каталогу - каждый может читать / писать свой собственный каталог
Пользователи Windows AD - могут видеть каталоги под Windows на их существующем общем ресурсе, с соответствующей группой безопасности AD может читать / записывать любой файл в любом домашнем подкаталоге
Это сработает? Если нет, что еще я могу сделать? Может мне нужно перейти на виртуальных пользователей vsftpd?
У меня уже есть пара общих ресурсов CIFS, установленных на Ubuntu, но все они соответствуют одному uid / gid, и я не уверен, будет ли / как vsftpd работать с вышеуказанной настройкой.
Оказывается, работает даже сочетание виртуальных и реальных пользователей! Руководство предназначено для Ubuntu 18.04 LTS, но должно работать и на других Linux, хотя расположение файлов может измениться.
Итак, один из способов сделать это:
/etc/fstab
://Your_CIFS_Server/share /mnt/cifs_homes cifs credentials=/etc/your_AD_password_data_file,uid=ftpuser,gid=ftpusers,file_mode=0770,dir_mode=0770 0 0
Очевидно, не забудьте установить файл паролей, доступный только root, для небольшого бонуса безопасности.
/etc/vsftpd.conf
должно быть хотя бы эти строки:
local_enable=YES
nopriv_user=ftpuser
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
user_config_dir=/etc/vsftpd.userconf
/etc/pam.d/vsftpd
для поддержки как виртуальных, так и локальных пользователей:Виртуальные пользователи:
auth sufficient pam_pwdfile.so pwdfile /etc/vsftpd.passwd
account sufficient pam_permit.so
Добавление виртуальных пользователей осуществляется через htpasswd -d
в файле /etc/vsftpd.passwd. Этот файл также может иметь root-доступ только для некоторой незначительной меры безопасности.
Обратите внимание, что pam_pwdfile похоже, поддерживает только CRYPT-шифрование файла vsftpd.passwd при использовании htpasswd, что небезопасно, поэтому вам следует сгенерировать пароли с помощью openssl, как описано в ссылке, или дополнительно использовать ограничение SSL или IP-адреса для доступа по FTP.
Локальные пользователи:
auth required pam_shells.so
Все эти строки должны присутствовать вместе с обычными строками @include common- * и всем остальным, что вам нужно в pam-файле vsftpd.
Добавьте файлы для каждого локального и виртуального пользователя в /etc/vsftpd.conf/ с именем пользователя.
У локального пользователя должны быть только обычные значения idle_session_timeout или все, что вам нужно. Его домашний адрес будет обычным / home или любым другим, установленным в / etc / passwd.
Виртуальные пользователи должны иметь в дополнение к тому, что вам нужно для локального пользователя, следующие строки:
chroot_local_user=YES
local_root=/mnt/cifs_homes/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
guest_enable=YES
nopriv_user=ftpuser
guest_username=ftpusers
В итоге вы получите:
1) Со стороны Windows доступ контролируется любыми пользователями и группами AD, для которых вы установили разрешения AD. Просто имейте в виду, что unix_server_user @ domain должен иметь доступ на запись к нему, если вам не нужен FTP только для чтения.
2) Из Unix доступ всех виртуальных пользователей отображается на ftpuser.ftpusers. Локальные пользователи обычно используют Unix server / home.
3) Все FTP логины имеют chroot для своего домашнего адреса и могут читать и писать в нем.
Угадаю, но я бы попробовал 3 способа: