В качестве FTP сервера будет использоваться vsftpd – “очень защищенный FTP-сервер” (Very Secure FTP Daemon — vsftpd), написанный с особым упором на безопасность.
На данный момент в репозитарии Version: 3.0.2-1ubuntu2
Задача:
Создать виртуального юзера с логином publisher
Создать для него root папку /web/uploads/publisher и “запереть” его там
1. Установка необходимых пакетов:
1 |
sudo apt-get install vsftpd apache2-utils |
apache2-utils – это нужно только для утилиты htpasswd
2. Создание бэкапов конфигов
1 2 |
sudo cp /etc/vsftpd.conf{,.bak} sudo cp /etc/pam.d/vsftpd{,.bak} |
3. Редактирование файла /etc/vsftpd.conf
Нужно удалить все его содержимое и прописать следующее:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
listen=YES anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 nopriv_user=vsftpd dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES secure_chroot_dir=/var/run/vsftpd/empty virtual_use_local_privs=YES pam_service_name=vsftpd guest_enable=YES user_sub_token=$USER local_root=/web/uploads/$USER chroot_local_user=YES hide_ids=YES guest_username=vsftpd |
4. Создание пользователя vsftpd
1 |
sudo useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd |
5. Добавление нового виртуального пользователя
1 2 |
sudo htpasswd -c -d -b /etc/vsftpd/passwd publisher qwe!@# # qwe!@# - тут указывается пароль |
6. Настройка PAM
Перед настройкой, определите, где у вас находятся pam*.so файлы security.
Я их нашел так:
1 |
cd /lib && find -type f -name "pam_pwdfile.so" |
Далее редактирование /etc/pam.d/vsftpd
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# Customized login using htpasswd file auth sufficient /lib/x86_64-linux-gnu/security/pam_pwdfile.so pwdfile /etc/vsftpd/passwd account sufficient /lib/x86_64-linux-gnu/security/pam_permit.so # Standard behaviour for ftpd(8). auth required /lib/x86_64-linux-gnu/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed # Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so. # Standard pam includes @include common-account @include common-session @include common-auth auth required /lib/x86_64-linux-gnu/security/pam_shells.so |
7. Создание директорий, и настройка прав доступа
1 2 3 4 5 |
mkdir /web/uploads/publisher sudo chown vsftpd:nogroup /web/uploads/publisher sudo chmod 0555 /web/uploads/publisher sudo mkdir /web/uploads/publisher/files sudo chmod 0777 /web/uploads/publisher/files |
8. На этом все, можно тестировать:
1 2 3 4 5 6 7 8 9 10 11 |
$ sudo service vsftpd restart $ ftp 127.0.0.1 Connected to 127.0.0.1. 220 (vsFTPd 3.0.2) Name (127.0.0.1:roman): publisher 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> |
Просмотров : 14837
Спасибо за мануал.
Только вместо etc следует home указать
sudo htpasswd -c -d -b /etc/vsftpd/passwd publisher qwe!@#
Удачи!
Что делать если нету папки web?
Использовать другую папку по своему усмотрению. Папка web указана просто для примера
sudo: htpasswd: command not found
Чё делать?