Попробуйте воспользоваться этим руководством. Может быть, это сработает для Вас.
Как это сделать
Установите vsftpd и библиотеку PAM
Редактировать /etc/vsftpd.conf
и /etc/pam.d/vsftpd
Создавайте учетные записи пользователей с помощью пользовательских каталогов (например, в /var/www/)
Установите каталоги с правильным chmod
и chown
Создайте пользователя-администратора с полным доступом к серверу
- Устанавливать
vsftpd
(Очень безопасный FTP-демон) и libpam-pwdfile
для создания виртуальных пользователей
Я хотел создать пользователей FTP, но я не хотел добавлять локальных пользователей unix (нет доступа к оболочке, нет домашнего каталога и так далее). PAM (Подключаемые модули аутентификации) поможет вам создавать виртуальных пользователей.
sudo apt-get install vsftpd libpam-pwdfile
- Редактировать
vsftpd.conf
Сначала вам нужно создать резервную копию исходного файла
sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak
Затем создайте новый
sudo vim /etc/vsftpd.conf
Скопируйте и вставьте следующие строки. Файл должен содержать ТОЛЬКО эти строки:
listen=YESanonymous_enable=NOlocal_enable=YESwrite_enable=YESlocal_umask=022nopriv_user=vsftpdvirtual_use_local_privs=YESguest_enable=YESuser_sub_token=$USERlocal_root=/var/www/$USERchroot_local_user=YEShide_ids=YESguest_username=vsftpd
- Регистрация виртуальных пользователей
Для регистрации пользователя вы используете 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
- Настройте PAM в
/etc/pam.d/vsftpd
Опять же, вам необходимо создать резервную копию исходного файла
sudo mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
и создайте новый
sudo vim /etc/pam.d/vsftpd
Скопируйте и вставьте эти 2 строки (это должно быть единственное содержимое). Я настаиваю только на этих 2 строках, я потратил много времени на сохранение оригиналов и просто добавил их.
auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwdaccount required pam_permit.so
- Создайте локального пользователя без доступа к оболочке
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, как и все deamon
sudo /etc/init.d/vsftpd restart
sudo service vsftpd restart
- Создание каталогов
В соответствии с конфигурацией все пользователи будут помещены в эту папку: /var/www/user1.
Вам нужно создать их с определенными правами: корневая папка не может быть доступна для записи!
/ [root = /var/www/user1] => 555www [ /var/www/user1/www ] => 755docs [ /var/www/user1/docs ] => 755
Примечание: пользователь не может создавать файлы или папки в корневом каталоге.
В vsftpd.conf
у нас есть chroot_local_user=YES
таким образом, пользователь не может видеть ничего за пределами своей папки. Для него сервер выглядит следующим образом:
Так что просто запустите эти команды:
mkdir /var/www/user1`chmod -w /var/www/user1mkdir www/user1/wwwchmod -R 755 /var/www/user1/wwwchown -R vsftpd:nogroup /var/www/user1
То /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
.
Перезагрузите сервер, и все готово!