#1
Что понадобится?
-mysql server
-vsftp server
-прямые руки и ясная голова
Опишу структуру.
Что хочу реализовать. Хочу сделать виртуальных пользователей с хранением паролей и логинов в БД mysql , так же хочу открыть некоторым доступ только для чтения.
Установку и настройку mysql server я пропущу, как и установку vsftpd.
Ставим pam_mysql
Создаем в папке /usr/local/etc/vsftpd_user_conf/ два файла testuser и testuser2
И в итоге у нас поставленная задача выполнена testuser отлично читает/пишет в папку, а testuser2 может только скачать )))
Скажите параноидально? Нет конечно не всем следует разрешать редактировать/удалять файлы на сервере
-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 может только скачать )))
Скажите параноидально? Нет конечно не всем следует разрешать редактировать/удалять файлы на сервере