Вопрос или проблема
Я хотел бы настроить vsftpd в 11.10 так, чтобы при подключении пользователя ему показывалась или перенаправлялась на определенную папку. Имя папки не связано с пользователем или домашней папкой. Это связано с папкой в /var/www. Например:
Если пользователь cyrex входит в ftp, его перенаправляют в /var/www/gamers или, по крайней мере, показывают папку gamers внутри его домашней папки, которая перенаправляет в /var/gamers. Если пользователь camelot входит в ftp, его перенаправляют в /var/www/food или, по крайней мере, показывают папку food внутри его домашней папки, которая перенаправляет в /var/food.
Пользователь не должен покидать свою домашнюю папку и может получить доступ только к папкам внутри своей домашней папки, которые перенаправляют в другие части, такие как /var/www/FOLDERS.
ОБНОВЛЕНИЕ: В одном способе конфигурации пользователь должен видеть свою домашнюю папку и также папку, которая перенаправляет его в /var/www/UserFolder. В другом способе конфигурирования VSFTPD пользователь должен просто быть перенаправлен в /var/www/UserFolder, не видя даже своей домашней папки, только var/www, специфичный для него. Могут ли оба метода быть показаны в одном ответе, чтобы я мог протестировать оба и посмотреть, какой из них лучше.
Какой самый простой способ сделать это.
Вам просто нужно изменить стартовый вызов для vsftpd
. Аргумент user_config_dir
укажет серверу искать конфигурацию в директории /etc/vsftpd_user_conf/luis
, если пользователь luis
входит в систему. Аналогично для любого другого пользователя, который заходит в систему. Я предполагаю, что если файл конфигурации не найден, сервер вернется к стандартному.
Тем не менее, ознакомьтесь с этой страницей справки (которую вы также можете открыть из терминала с помощью man vsftpd
) : http://vsftpd.beasts.org/vsftpd_conf.html
Этот другой гид может помочь вам с использованием пользовательских директорий для вашего сервера: http://gofedora.com/how-to-configure-secure-ftp-server-vsftpd/
Неясно из некоторых источников, работает ли это с виртуальными пользователями или с обычными (локальными) пользователями. Это также работает для локальных пользователей.
Мне также было неясно, что я могу установить в файле, специфичном для пользователя.
Итак, вот что вы можете сделать:
- отредактируйте файл конфигурации:
sudo vim /etc/vsftpd.conf
- добавьте в него эту строку:
user_config_dir=/etc/vsftpd/user_config_dir/
- выйдите из редактора с сохранением изменений (
ESC
и затем:wq
в случаеvim
, который мы использовали выше) - отредактируйте файл, специфичный для пользователя, например, если пользователь
alice
, тоsudo vim /etc/vsftpd/user_config_dir/alice
- добавьте настройки, специфичные для пользователя, в файл, например
local_umask=0737
- выйдите из редактора с сохранением изменений (см. выше)
- повторите последние три шага для каждого пользователя, для которого вы хотите указать какие-либо настройки, специфичные для пользователя.
- перезапустите ftp-сервер:
sudo service vsftpd restart
Обратите внимание: Приведенный выше пример заставляет пользователя alice
создавать файлы с правами доступа ----r-----
. Это полезно, если alice
является вашим сканером, который только загружает файлы на сервер. Сканер никогда не хочет читать, изменять или выполнять загруженные файлы, но другим пользователям из той же группы разрешается читать эти файлы, например, копируя их для редактирования. Эти пользователи все еще могут удалять загруженные файлы, если права доступа для директории установлены правильно.
Это может работать с несколькими пользователями, но я не могу найти способ, чтобы настройки, сделанные в отдельных конфигурационных файлах пользователей в назначенной user_config_dir
, применялись.
Что я получил с всего лишь 2 FTP-учетными записями на одном сервере, например, веб-сайт @myserver.org и [email protected], так это то, что он игнорировал local_root
местоположения, назначенные в файлах website.conf
и otherstuff.conf
внутри папки user_config_dir
и просто направлял FTP-сессии в домашнюю директорию пользователя в обоих случаях. Все это несмотря на то, что я пробовал с chroot_local_user=NO
и chroot_local_user=YES
.
С одним пользователем и только файлом vsftpd.conf
, необходимым для настройки, я могу без проблем направить FTP-учетную запись, например, в /var/www/html/mysite.org
, при условии, что у меня есть соответствующая собственность, группа и права доступа.
Я не сдался совсем с vsftpd, поскольку это самый широко используемый FTP-сервер на YouTube и в онлайн-уроках по настройке собственного сервера. Но я имею в виду немного больше, чем могу сделать, чтобы заставить его работать для нескольких пользователей – и это то, что я должен сделать, поскольку я хостингую более одного домена на своем сервере, и на каждом из них есть веб-сайт, который требует как минимум 1 защищенную FTP-учетную запись.
Что вызывает у меня подозрения, так это полное отсутствие установленного форума пользователей VSFTPD, где более опытные могли бы помочь менее опытным.
Настроить такой форум, например, на GitHub было бы довольно просто. Вы могли бы подумать, что такой форум – фактически также ловушка для ошибок – был бы необходим для продолжающегося проекта.
Но владельцы VSFTPD, похоже, думают иначе.
ИЗМЕНЕНИЕ
Какой-то форум VSFTPD здесь, но он не выглядит слишком активным.
Ответ или решение
Настройка vsftpd для нескольких пользователей с конкретными директориями
Для настройки сервера FTP с использованием vsftpd (Very Secure FTP Daemon) на Ubuntu 11.10 для нескольких пользователей с индивидуальным доступом к разным директориям, можно использовать следующие подходы. Мы рассмотрим оба варианта: в одном из них пользователи увидят свои домашние директории и дополнительные папки с перенаправлением, в другом — будут перенаправлены непосредственно в заданные папки без доступа к своим домашним директориям.
1. Установка и начальная настройка vsftpd
-
Установка vsftpd:
Откройте терминал и выполните следующую команду для установки vsftpd:sudo apt-get update sudo apt-get install vsftpd
-
Редактирование конфигурационного файла:
Откройте файл конфигурации vsftpd:sudo vim /etc/vsftpd.conf
Добавьте следующую строку, чтобы указать каталог с пользовательскими конфигурациями:
user_config_dir=/etc/vsftpd/user_config_dir
Проверьте и отредактируйте другие параметры, чтобы удостовериться, что у вас есть:
chroot_local_user=YES allow_writeable_chroot=YES
Сохраните изменения и закройте редактор.
-
Создание каталога пользовательских конфигураций:
sudo mkdir /etc/vsftpd/user_config_dir
2. Конфигурация учетных записей пользователей
Для каждого пользователя создайте файл в user_config_dir
с индивидуальными настройками:
-
Для пользователя
cyrex
:sudo vim /etc/vsftpd/user_config_dir/cyrex
Внутри файла добавьте следующие строки:
local_root=/var/www/gamers
-
Для пользователя
camelot
:sudo vim /etc/vsftpd/user_config_dir/camelot
Внутри файла добавьте:
local_root=/var/www/food
-
Настройка прав доступа:
Убедитесь, что директории/var/www/gamers
и/var/www/food
имеют правильные права доступа и принадлежат группе, к которой принадлежат ваши пользователи.sudo chown -R www-data:www-data /var/www/gamers sudo chown -R www-data:www-data /var/www/food sudo chmod -R 755 /var/www/gamers sudo chmod -R 755 /var/www/food
3. Перезапуск сервиса vsftpd
После внесения всех изменений необходимо перезапустить службу:
sudo service vsftpd restart
Методы доступа пользователей
Теперь рассмотрим два метода доступа пользователей:
Метод 1: Доступ к домашней директории и папке перенаправления
Пользователи увидят свою домашнюю директорию и дополнительную папку, которая будет перенаправлять их в /var/www
.
Для этого создайте символическую ссылку в домашней директории пользователя:
ln -s /var/www/gamers /home/cyrex/gamers
ln -s /var/www/food /home/camelot/food
Метод 2: Прямое перенаправление в папку
Если нужно, чтобы пользователь не видел свою домашнюю директорию, просто укажите путь в local_root
без создания символических ссылок:
local_root=/var/www/gamers # Для пользователя cyrex
local_root=/var/www/food # Для пользователя camelot
Теперь пользователи будут входить непосредственно в соответствующую папку.
Заключение
Настройка vsftpd для нескольких пользователей с индивидуальными директориями предоставляет гибкость и режимы работы для различных сценариев использования. Вы можете выбрать подход, который наилучшим образом соответствует вашим требованиям. Не забывайте следить за безопасностью и регулярно обновлять настройки вашего FTP-сервера.