K
kenny
Гость
Что понадобится?
-mysql server
-vsftp server
-прямые руки и ясная голова
Опишу структуру.
Что хочу реализовать. Хочу сделать виртуальных пользователей с хранением паролей и логинов в БД mysql , так же хочу открыть некоторым доступ только для чтения.
Установку и настройку mysql server я пропущу, как и установку vsftpd.
Ставим pam_mysql
Далее нужно сделать ссылку
Создаем базу, пользователя для базы
Создаем таблицу:
Создаем юзвера vsftpd с помощью adduser, должно получиться что-то наподобе
Правим конфиг
Создадим директорию где будем хранить настройки для пользователей
теперь надо настроить механизм подключения к базе данных
Теперь потестируем
Создаем папку и выставляем права
А теперь разделим права межу двумя пользователями, предположим testuser должен иметь полный доступ к каталогу, а testuser2 только на чтение
Создаем в папке /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;
Код:
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
Создаем в папке /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 может только скачать )))
Скажите параноидально? Нет конечно не всем следует разрешать редактировать/удалять файлы на сервере