понедельник, июня 18, 2012

Настройка vsftpd с виртуальными пользователями на Cent OS 5.8

Все действия проводились на centos 5.8:

# uname -a
Linux vm-centos58.localdomain 2.6.18-308.8.2.el5 #1 SMP Tue Jun 12 09:57:26
EDT 2012 i686 i686 i386 GNU/Linux

Установке подлежит довольно старая версия из официального репозитория.

# yum info vsftpd
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
...    
Available Packages
Name       : vsftpd
Arch       : i386
Version    : 2.0.5
Release    : 24.el5_8.1
Size       : 144 k
Repo       : updates
Summary    : vsftpd - Very Secure Ftp Daemon
URL        : http://vsftpd.beasts.org/
License    : GPL
Description: vsftpd - это 'Очень защищенный демон FTP' (Very Secure FTP daemon).
           : Вообще то он был создан на скорую руку.

Забавное описание :)

Итак. На данный момент версия ушла долеко вперед. Можно поставить поновее. Можно собрать из исходников. Но пока ставим из того, что есть в официальном репозитории. Ибо для ftp этого более чем достаточно.

# yum install vsftpd

Конфигурационные файлы лежат в /etc/vsftpd. Приводим vsftpd.conf к такому виду:

xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
log_ftp_protocol=YES
userlist_enable=YES
max_clients=15
max_per_ip=3
use_localtime=YES
nopriv_user=ftp
listen=YES
anonymous_enable=NO
local_enable=YES
virtual_use_local_privs=YES
pam_service_name=vsftpd
write_enable=YES
guest_enable=YES
user_sub_token=$USER
local_root=/var/local/ftpd/$USER
chroot_local_user=YES
hide_ids=YES
#pasv_min_port=50555
#pasv_max_port=51555
# 775 for new dirs & 664 for new files
local_umask=002

Чтоб понять для чего нужна каждая опция прошу прочесть документацию. На данный момент нас интересует только опция local_root, которая отвечает за то, что каждый пользователь попадет в свой каталог. В ней указан польный путь к папке с данными ftp пользователей. $USER - это логин ftp пользователя. Папку, по указанному пути, нужно будет создвать при добавлении нового пользователя.

Теперь надо доустановить недостающие пакеты:

# yum install apr apr-util

Загрузить два пакета:

# wget http://www.k0st1an.ru/download/linux/rpm/httpd-tools-2.2.22-1.el5.i386.rpm
# wget http://www.k0st1an.ru/download/linux/rpm/pam-pam_pwdfile-0.99-2.i386.rpm
# rpm -ih httpd-tools-2.2.22-1.el5.i386.rpm
# rpm -ih pam-pam_pwdfile-0.99-2.i386.rpm

Теперь в /etc/vsftpd надо создать файла базы данных и добавить пользователя:

# touch virtual_users.db
# htpasswd -d virtual_users.db test
New password: 
Re-type new password: 
Adding password for user test

Теперь надо привести к нужному виду файл /etc/pam.d/vsftpd:

auth required pam_pwdfile.so pwdfile /etc/vsftpd/virtual_users.db
account required pam_permit.so

И последний штрих. Надо чтоб vsftpd поднимался автоматически после загрузки системы. Для этого надо использовать команду chkconfig и стартуем сервис:

# chkconfig vsftpd on
# /etc/init.d/vsftpd start

вторник, июня 12, 2012

Установка и простая настройка nginx на centos 5.8 (быстрый запуск)


В centos в качестве менеджера пакетов используется yum. Потому зададим официальный репозиторий nginx. Можно собрать последнюю версию из исходников. Можно поискать готовый пакет.

В файл /etc/yum.repo.d/nginx.repo (который надо создать) записать следующее содержимое:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

После чего можно через yum посмотреть информацию о пакете nginx и сразу установить:

# yum info nginx
...
# yum install nginx

После успешной установки надо отредактировать конфигурационный файл сервера и настроить хост. В /etc/nginx/nginx.conf надо отредактировать значение одного параметра:

include /etc/nginx/conf.d/*.conf.l;

Эта опция отвечает за загрузку конфигов под каждый конкретный сайт. Можно разделить конфиги на разные каталоги. Например в одном держать конфиги, а в другом симлинки на те, что следует подгружать. В данном конкретном случае все будет в одном каталоге и те конфиги, что нужно загружать обозначены ".l".

Далее следуем в каталог /etc/nginx/conf.d и делаем копию default.conftest.ll.conf.l. Редактируем до такого вида:

server {
    listen  80;
    server_name  test.ll;
    root /var/local/httpd/test.ll/public_html;
    autoindex on;
    autoindex_localtime on;
    autoindex_exact_size on;

    #charset koi8-r;
    access_log  /var/log/nginx/test.ll.access.log  main;

    location / {
        index  index.html;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny  all;
    }
}

То что выделено жирным не обязательно. Это всего навсего может, на первых парах, упростить работу. Эти опции позволяют отобразить содержимое каталога в браузере, когда файла index.html нет (первая опция). Вторая опция указывает, что нужно отображать время в локальной времени :] Третья опция указывает на то, что нужно размер файла отображать в удобном виде (KB, MB, GB). Каталог в опции root нужно создать. В праве указать расположение сайта в другом месте.

После всего этого запустить nginx:

# /etc/init.d/nginx start

Всё.