|
Ключевые слова: ftp, vsftpd, virtual, (найти похожие документы)
Автор: Виталий Исаев <ndragon@mail.ru> Newsgroups: email Date: Mon, 21 Oct 2009 17:02:14 +0000 (UTC) Subject: Запуск двух копий VSFTP под разные задачи Ситуация из моей жизни (возможно похожая у кого-то еще возникала) Есть программа, хранящая и сортирующая изображения в древовидную структуру, своего рода электронный каталог продукции. Прямого доступа к этим картинкам юзеры не должны иметь. И есть админы, которые админят сеть и проектируют сайты, им нужен свой доступ, а так как они админы, то доступ будет полный. Мне показался более привлекательный способ реализации через FTP и по разным портам. Наиболее простой способ - создать два FTP сервера, каждый со своими настройками. И так реализация. VSFTP - скомпиленый и установленный из исходников и сервер на базе OpenSUSE 11.0 Cоздаем папку (если такой нет) /etc/vsftp - общая папка с настройками Cоздаем папку /etc/vsftp/admin - в этой папке будут настройки для админского сервера Cоздаем папку /etc/vsftp/virtual - в этой папке будут настройки для программного сервера с виртуальными пользователями FTP с виртуальными пользователями для программы Создаем пользователя picmanager в системе, указав необходимый домашний каталог (каталог с картинками в моем случае). Через этого пользователя будут ходить все виртуальные. Настраиваем сервер с виртуальными пользователями. В каталоге /etc/vsftp/virtual создаем такие файлы login.txt vsftpd.conf И создадим скрипт для создания базы данных для PAM аутентификации create_db: #!/bin/bash db_load -T -t hash -f /etc/vsftp/virtual/login.txt /etc/vsftp/virtual/vsftp_login.db В каталоге /etc/pam.d должен присутствовать файл ftp. В его содержимом подменяем только путь к нашей базе с пользователями (vsftp_login.db). В моем случае содержимое имеет вид auth required /lib/security/pam_userdb.so db=/etc/vsftp/virtual/vsftp_login account required /lib/security/pam_userdb.so db=/etc/vsftp/virtual/vsftp_login Файл настройки vsftpd.conf для этого сервера будет следующим anonymous_enable=NO local_enable=YES write_enable=YES anon_upload_enable=NO anon_mkdir_write_enable=NO anon_other_write_enable=NO chroot_local_user=YES # здесь говорим что у нас будут виртуальные пользователи, которые для системы будут # выглядеть как созданный нами ранее пользователь picmanager guest_enable=YES guest_username=picmanager listen=YES listen_address=192.168.0.1 listen_port=11121 pasv_min_port=30000 pasv_max_port=30999 virtual_use_local_privs=YES Создаем базу логинов и паролей виртуальных пользователей Файл login.txt имеет вид первая строчка - логин, вторая - пароль, третья - следующий пользователь, четвертая - пароль и т.д. Например user1 user1pass user2 user2pass теперь запустим скрипт create_db, который создаст базу для PAM аутентификации vsftp_login.db или в командной строке набираем db_load -T -t hash -f /etc/vsftp/virtual/login.txt /etc/vsftp/virtual/vsftp_login.db Ну и на завершение - скрипт для старта или остановки сервера. #!/bin/bash ### BEGIN INIT INFO # Provides: vsftp # Required-Start: $network $remote_fs # Required-Stop: # Default-Start: 2 3 5 # Default-Stop: # Description: Start the VSFTP server ### END INIT INFO # Shell functions sourced from /etc/rc.status: # rc_check check and set local and overall rc status # rc_status check and set local and overall rc status # rc_status -v ditto but be verbose in local rc status # rc_status -v -r ditto and clear the local rc status # rc_failed set local and overall rc status to failed # rc_failed <num> set local and overall rc status to <num> # rc_reset clear local rc status (overall remains) # rc_exit exit appropriate to overall rc status . /etc/rc.status # First reset status of this service rc_reset # Return values acc. to LSB for all commands but status: # 0 - success # 1 - generic or unspecified error # 2 - invalid or excess argument(s) # 3 - unimplemented feature (e.g. "reload") # 4 - insufficient privilege # 5 - program is not installed # 6 - program is not configured # 7 - program is not running # # Note that starting an already running service, stopping # or restarting a not-running service as well as the restart # with force-reload (in case signalling is not supported) are # considered a success. case "$1" in start) echo "Start VSFTPd" `/usr/local/sbin/vsftpd /etc/vsftp/virtual/vsftpd.conf` ;; stop) echo -n "Shutting down service VSFTPd " echo -n PID=`ps ax | grep "/usr/local/sbin/vsftpd /etc/vsftp/virtual/vsftpd.conf" | awk -F " " '{print $1}'` #echo ${PID[0]} if [ -n "${PID[0]}" ]; then kill ${PID[0]} fi # Remember status and be verbose rc_status -v ;; restart|force-reload) echo "Restarting service VSFTPd" $0 stop $0 start rc_status ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 ;; esac rc_exit [[B]]FTP для админов[[/B]] Создаем пользователей аминов (если их еще нет). Настраиваем сервер с реальными пользователями. В каталоге /etc/vsftp/admin создаем такие файлы
|
Обсуждение | [ RSS ] |
|
Добавить комментарий |
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |