Настраиваем vsftp или как параноидально разрешать доступ

K

kenny

Гость
Что понадобится?
-mysql server
-vsftp server
-прямые руки и ясная голова
Опишу структуру.
Что хочу реализовать. Хочу сделать виртуальных пользователей с хранением паролей и логинов в БД mysql , так же хочу открыть некоторым доступ только для чтения.
Установку и настройку mysql server я пропущу, как и установку vsftpd.
Ставим pam_mysql
Код:
cd /usr/ports/security/pam-mysql
make install clean
Далее нужно сделать ссылку
Код:
ln -sf /usr/local/lib/pam_mysql.so /usr/lib/pam_mysql.so
Создаем базу, пользователя для базы
Код:
#mysql -u root
CREATE DATABASE vsftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, \
DROP ON ftpserver.* TO ' ftpserver '@'localhost' IDENTIFIED BY ' ftpserver ';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, \
DROP ON vsftpd.* TO ' ftpserver '@'localhost.localdomain' IDENTIFIED BY ' ftpserver ';
FLUSH PRIVILEGES;
Создаем таблицу:
Код:
USE vsftpd;
CREATE TABLE `accounts` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 30 ) NOT NULL ,
`pass` VARCHAR( 50 ) NOT NULL ,
UNIQUE (
`username`
)
) ENGINE = MYISAM ;
quit;
Создаем юзвера vsftpd с помощью adduser, должно получиться что-то наподобе
Код:
mail# cat /etc/passwd |grep vsftp
vsftpd:*:1002:1002:User &:/home/vsftpd:/usr/sbin/nologin
Правим конфиг
Код:
/usr/local/etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=077
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=YES
chown_username=vsftpd
nopriv_user=vsftpd
async_abor_enable=NO
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to FTP service.
chroot_local_user=YES
write_enable=YES
listen=YES
secure_chroot_dir=/home/test
pam_service_name=vsftpd
guest_enable=YES
guest_username=vsftpd
local_root=/home/test2/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
user_config_dir=/usr/local/etc/vsftpd_user_conf
background=YES
Создадим директорию где будем хранить настройки для пользователей
Код:
mkdir /usr/local/etc/vsftpd_user_conf
теперь надо настроить механизм подключения к базе данных
Код:
ee /etc/pam.d/vsftpd
auth required pam_mysql.so user= ftpserver passwd= ftpserver \
host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
account required pam_mysql.so user= ftpserver passwd= ftpserver \
host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
Теперь потестируем
Код:
mysql -u root
USE vsftpd;
INSERT INTO accounts (username, pass) VALUES('testuser', PASSWORD('secret'));
INSERT INTO accounts (username, pass) VALUES('testuser2', PASSWORD('secret2'));
quit;
Создаем папку и выставляем права
Код:
mkdir  /home/test2/testuser
chown vsftpd:nogroup /home/test2/testuser
А теперь разделим права межу двумя пользователями, предположим testuser должен иметь полный доступ к каталогу, а testuser2 только на чтение
Создаем в папке /usr/local/etc/vsftpd_user_conf/ два файла testuser и testuser2
Код:
mail# cat /usr/local/etc/vsftpd_user_conf/testuser2
dirlist_enable=YES
download_enable=YES
local_root=/home/ test2/testuser
write_enable=NO
и
Код:
mail# cat /usr/local/etc/vsftpd_user_conf/testuser2
dirlist_enable=YES
download_enable=YES
local_root=/home/ test2/testuser
write_enable=YES
Запускаем/перезапускаем сервер
И в итоге у нас поставленная задача выполнена testuser отлично читает/пишет в папку, а testuser2 может только скачать )))
Скажите параноидально? Нет конечно не всем следует разрешать редактировать/удалять файлы на сервере
 
K

kenny

Гость
dimka3210,
спасибо за правку :) не удалять не стоит, не люблю когда строят из себя идеал :) все могут ошибаться.
p.s: если найдете еще ошибки просьба сообщить))) так как у меня с русским траблы (хотя я ж не русский :))
 

Dwolfix

Пользователь
Есть хороший скрипт для управления пользователями сервера vsftp (см. вложение). Позволяет создавать, удалять (создавая при этом резервную копию каталога ftp), менять пароль пользователей.
 

Вложения

  • vsftpd_users.txt
    5.6 KB · Просмотры: 9
Сверху