Мне нужно иметь возможность добавить виртуальных пользователей в vsftpd, которые имеют доступ только к подпапке. Причина, по которой я хочу использовать виртуальных пользователей, заключается в том, что я хочу, чтобы на сервере был только один реальный пользователь.
Структура FTP:
www
website_name1
sub_folder1
website_name2
sub_folder2
sub_folder3
website_name3
website_name4
Основная учетная запись имеет доступ к папке www и всем подкаталогам, и я хочу добавить виртуального пользователя, который может иметь доступ к sub_folder1 и только sub_folder1
Также, чтобы избежать путаницы, я бы также потребовал, чтобы другой пользователь имел доступ к sub_folder3 и только к sub_folder3 . Моя точка зрения заключается в том, что мне нужно иметь возможность выбирать, какие папки и подпапки для пользователя для каждого пользователя.
Я нашел способы добавления пользователей для просмотра целого Strucutre или настройки именованных папок, обе из которых мне не нужны.
Я нашел похожий вопрос, размещенный здесь:
Как настроить VSFTPD для нескольких пользователей, включая добавление определенных каталогов
но он рекомендует, proftpd
хотя я был вообще менее безопасным.
Или я здесь упустил смысл?
источник
Ответы:
Немного поиграв, мне удалось придумать полу-решение (не идеальное, но достаточно хорошее)
используя ответ 2707974 и информацию, которую я получил в другом месте, где я смог получить то, что мне нужно.
Сначала вам нужно установить vsftp и PAM
Отредактируйте /etc/vsftpd.conf
затем вставьте следующее
Редактируйте в соответствии с вашими потребностями. Самый важный бит для виртуальных пользователей - это все после комментария к настройкам виртуального пользователя.
Создание пользователя
Вы можете использовать базу данных или
htpasswd
я нашелhtpasswd
быстрее и проще в использовании.создать каталог для хранения ваших пользователей
добавление дополнительных пользователей просто опустите
-c
Мне только удалось заставить его работать, используя CRYPT, который ограничивается 8 символами, чтобы использовать более 8 символов, используя openssl для генерации совместимого хэша и передачи напрямую в htpasswd
После того, как ваши пользователи созданы, вы можете изменить свой конфигурационный файл PAM.
и удалите все внутри этого файла и замените следующим
Это позволит войти в систему для ваших виртуальных пользователей, определенных в
/etc/vsftpd/ftpd.passwd
и отключит локальных пользователейДалее нам нужно добавить пользователя для использования этими виртуальными пользователями. Эти пользователи не будут иметь доступа к оболочке и будут называться
vsftpd
пользователь должен соответствовать
guest_username=vsftpd
в файле конфигурации vsftpdОпределение доступа к каталогу
Важная строка здесь следующая
это означает, что при
user1
входе в систему он будет искать следующий файлэтот файл так же, как,
vsftpd.conf
так что вы можете определить новыйlocal_root
Возвращаясь к вопросу, к которому мы хотим
user1
иметь доступvar/www/website_name1/sub_folder1
, поэтому нам нужно создатьvsftpd_user_conf
папку:Теперь создайте файл пользователя:
и введите следующую строку
Теперь перезапустите vsftp
Теперь вы сможете войти в систему как user1, который сможет видеть только
var/www/website_name1/sub_folder1
любые папки и файлы внутри него.Теперь вы можете добавить столько пользователей, сколько захотите, и ограничить их доступ к любой папке.
важно помнить, что если вы не создадите файл conf пользователя, он по умолчанию будет находиться в папке var / www от имени пользователя root (в приведенном выше примере)
Если подпапка предназначена для изменения пользователем, может потребоваться изменить владельца общей подпапки:
источник
Попробуйте с этим руководством. Может быть, будет работать для вас.
Как это сделать
Установите vsftpd и библиотеку PAM
Изменить
/etc/vsftpd.conf
и/etc/pam.d/vsftpd
Создавайте учетные записи пользователей с помощью пользовательских каталогов (например, в / var / www /)
Установите каталоги с правильными
chmod
иchown
Создать администратора с полным доступом к серверу
vsftpd
(Very Secure FTP Deamon) иlibpam-pwdfile
создать виртуальных пользователейЯ хотел создать пользователей FTP, но не хотел добавлять локальных пользователей Unix (без доступа к оболочке, без домашнего каталога и т. Д.). PAM (Pluggable Authentication Modules) поможет вам создать виртуальных пользователей.
sudo apt-get install vsftpd libpam-pwdfile
vsftpd.conf
Сначала вам нужно сделать резервную копию исходного файла
sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak
Затем создайте новый
sudo vim /etc/vsftpd.conf
Скопируйте и вставьте следующие строки. Файл должен содержать ТОЛЬКО эти строки:
Чтобы зарегистрировать пользователя, которого вы используете
htpasswd
, я предполагаю, что выapache2
работаете на своем сервере. Создайтеvsftpd
папку, затем поместите в нее файлы конфигурации.sudo mkdir /etc/vsftpd
тогда
sudo htpasswd -cd /etc/vsftpd/ftpd.passwd user1
-c означает, что мы создадим файл, если он еще не существует -d форсирует MD5, он нужен вам в Ubuntu 12.04, просто используйте его всегда
Команда запросит пароль.
Если вы хотите добавить новых пользователей впоследствии:
sudo htpasswd -d /etc/vsftpd/ftpd.passwd user2
/etc/pam.d/vsftpd
Опять же, вам нужно создать резервную копию оригинального файла
sudo mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
и создать новый
sudo vim /etc/pam.d/vsftpd
Скопируйте и вставьте эти 2 строки (это должен быть единственный контент). Я настаиваю только на этих двух строках, я потратил много времени на сохранение оригиналов и просто добавил их.
sudo useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
Вы можете проверить, что он был создан с помощью команды id: id vsftpd. Мы определяем пользователя с помощью оболочки / bin / false из-за параметра check_shell (даже если вы его не используете). Когда конечный пользователь подключается к FTP-серверу, они будут использоваться для прав и собственности:
chmod
иchown
.vsftpd
Обычный способ - использовать init.d, как и все остальные.
sudo /etc/init.d/vsftpd restart
sudo service vsftpd restart
Согласно конфигурации все пользователи будут помещены в эту папку: / var / www / user1.
Вам нужно создать их с определенными правами: корневая папка не может быть доступна для записи!
Примечание: пользователь не может создавать файлы или папки в корневом каталоге.
У
vsftpd.conf
насchroot_local_user=YES
так, что пользователь не может видеть ничего за пределами своей папки. Для него сервер выглядит так:Так что просто запустите эти команды:
/var/www/user1
Папка должна существовать или соединение не будет.Прямо сейчас вы можете попробовать подключиться к вашему FTP
Чтобы создать пользователя с правами администратора, нам нужно зарегистрировать нового пользователя
htpasswd
.Прежде чем мы это сделаем, я посоветую вам проверить
/etc/ftpusers
файл, в котором определены определенные пользователи, которым не разрешено подключаться по FTP. Я думаю, что это только для локальных пользователей, а не виртуальных пользователей, но на всякий случай не выбирайте имя, содержащееся в этом файле.sudo htpasswd -d /etc/vsftpd/ftpd.passwd theadmin
Теперь нам нужно добавить новую строку в
/etc/vsftpd.conf
chroot_list_enable=YES
Это означает, что ваш пользователь будет помещен в их папку (в качестве тюрьмы), КРОМЕ пользователей в / etc /
vsftpd.chroot_list
Давайте создадим этот файл и добавим нашего пользователя, файл представляет собой простую строку, содержащую «theadmin». Добавьте по одному пользователю в строке. Это означает, что вам не нужно создавать
/var/www/theadmin
папку, пользователь войдет в систему и начнет/home/vsftpd
.Перезагрузите сервер, и все готово!
источник
да, вы можете, и для гибкости создайте каталог и файл userconfig,
mkdir /var/www/userconfs
или как хотите изменить имя userconfs, затем создайте конкретный файлвнутренний тип
local_root=/var/www
(или любой другой, к которому вы хотите обратиться с помощью dir)guest_username=www-data
(владелец ubuntu для редактирования файла)после обновления вы добавляете vsftpd.conf
user_config_dir=/var/www/userconfigs
(или как вы его заменили, эта учетная запись будет иметь доступ к любому указанному sdir yo)источник