Настройка ФТП сервера

Andy

Well-Known Member
Настройка vsftpd​


Необходимые пакеты
vsftpd

Настройка службы
Конфигурационный файл - /etc/vsftpd/vsftpd.conf:

# Разрешение входа для анонимных пользователей
anonymous_enable=YES

# Разрешение входа для локальных пользователей
local_enable=YES - разрешать вход локальным пользователям

# Предоставление пользователям прав на выполнения любых FTP-команд записи
write_enable=YES

# Маска прав доступа к файлам для локальных пользователей
local_umask=022

# Предоставление пользователям прав анонимным пользователям на выполнения любых
# FTP-команд записи. Предварительно должен быть установлен параметр write_enable=YES
# и соответствующие права на запись к каталогам.
anon_upload_enable=NO

# Возможность анонимным пользователям создавать каталоги
anon_mkdir_write_enable=NO

# Выдача пользователям сообщений при входе в определенные каталоги
dirmessage_enable=YES

# Журналирование работы сервера
xferlog_enable=YES

# Возможность подключаться с 20 порта
connect_from_port_20=YES

# Журнальные файлы ведутся в стандартном формате xferlog
xferlog_std_format=YES

# Запуск службы в стандартном режиме
listen=YES

# Ограничение скорости для анонимных пользователей (байт в секунду)
anon_max_rate=50000

# Ограничение скорости для лакальных пользователей (байт в секунду)
local_max_rate=100000

# Максимальное количество одновременно работающих клиентов
max_clients=200

# Максимальное количестко соединений с одного ip-адреса
max_per_ip=4

# Корневой каталог для анонимных пользователей
anon_root=/mnt/ftp/pub

# Порт, который будет прослушивать служба
listen_port=21

Запуск службы​

Запустите службу vsftpd (/etc/init.d/vsftpd start)

Запуск нескольких копий службы
vsftpd может быть запущен с указанием пути к конфигурационному файлу.

Это дает возможность запуска нескольких служб на одном сервере, которые могут иметь различные настройки.

Пример:

/usr/sbin/vsftpd /etc/another.vsftpd/vsftpd.conf &
 

Andy

Well-Known Member
Настройка шар в vsftpd

Сам долго промучался, решил выожить, чтоб другим проще было.

После установки vsftpd доступна только папка "pub", находящаяся в /var/ftp/pub Можно просто кидать в нее файлы, и их будет видно по фтп. Но хотелось бы расшарить больше. Но что делать, если все фильмы и музыка хранятся на другом "виндовом" разделе, или вообще уже на другом винте?

А делать нужно вот что. Я пишу пример, а вы там уже подставите, кому что нужно...

Создаем в /var/ftp/pub/ папки Films и Music, и монтируем к ним другие папки. Делается это в консоли, из-под root. Условимся, что фильмы и музыка у нас лежат на примонтированном винте HDD в соответствующих папках.

mount --bind /media/HDD/Films/ /var/ftp/pub/Films
mount --bind /media/HDD/Music/ /var/ftp/pub/Music


Перезапускаем сервер: - /etc/init.d/vsftpd restart

И... о чудо! Все работает! Но!!! Это еще не все. При перезагрузке системы, эти настройки пропадают. И снова у нас в "pub" пустые папки Films и Music :-(( Впринцыпе все это решаемо, снова прописать в консоли аж три строчки:

mount --bind /media/HDD/Films/ /var/ftp/pub/Films
mount --bind /media/HDD/Music/ /var/ftp/pub/Music
/etc/init.d/vsftpd restart


Но мы пойдем другим путем. Грамотным.

В консоли открываем mc, находим файл /etc/fstab и добавляем в него такие строки:

# This file is edited by fstab-sync - see 'man fstab-sync' for details
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/hda3 none swap sw 0 0
/dev/hda2 / ext3 defaults,exec,errors=remount-ro 0 1
proc /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0

/dev/hda1 /media/HDD vfat pamconsole,exec,auto,showexec,iocharset=cp1251,codepage=866,managed 0 0

/media/HDD/Films/ /var/ftp/pub/Films none ro,bind 0 0
/media/HDD/Music/ /var/ftp/pub/Music none ro,bind 0 0

/dev/fd1 /media/floppy auto pamconsole,exec,noauto,codepage=866,iocharset=cp1251,managed 0 0

/dev/fd0 /media/floppy1 auto pamconsole,exec,noauto,codepage=866,iocharset=cp1251,managed 0 0

/dev/hdc /media/dvdrecorder auto pamconsole,exec,noauto,iocharset=cp1251,managed 0 0
Причем именно в том месте, где указанно в этом примере! Перезагружаем компьютер, и... снова чудо. Все работает :) Теперь мы не только пользователи сети, которые только берeт из нее, но и одни из ее "столпов", на которых эта сеть строится :)) Тоесть полноправные пользователи.
 

Andy

Well-Known Member
Настройка upload в vsftpd​


Оказалось мало прописать следующие строки в /etc/vsftpd/vsftpd.conf

anonymous_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES

Чтобы открыть папку upload на запись, нужно под root зайти в КДЕ, открыть папку /var/ftp/upload, на ней нажать правой кнопкой, "свойства" и разрешить чтение, переименование и запись всем пользователям. После этого все начинает работать :) Никакой "ошибки при передаче" :)

Решили одну проблему, появилась следующая:

Загрузив в папку "upload" папку с файлами, по фтп мы не видим файлов внутри папки :-( Даже скопировав этуже папку назад, копируется только пустая папка. Кто знает как решить эту проблему, скажите...

Также интересует, как разрешить удалять папки и файлы из папки "upload" по ftp? Или такого небывает?
 

Andy

Well-Known Member
Частично проблема решилась следующим образом:

В консоли пишем:

chmod -R 777 /var/ftp/upload
папки которые были в "upload" увиделись!!!
но!
закачиваеш новую папку, а на нее уже не распространяется!
вводиш опять chmod -R 777 /var/ftp/upload
и эту папку видно!
закачиваеш новую, а на нее уже не распространяется
тоесть вроде и работает, но в тож время и не совсем
что делать?
 

Andy

Well-Known Member
Вроде все получилось :)

Права на папку upload урегулировал в мс, + заремировал строки:
#chown_uploads_YES
#chown_username=root

Все, можно тестировать:

Вот мой вариант конфиг файла /etc/vsftpd/vsftpd.conf:

anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=000
anon_umask=000
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ftpd_banner=Добро пожаловать на мой фтп
pam_service_name=vsftpd
listen=YES
При этом авторизованные пользователи будут иметь домашний каталог на полном доступе, а все остальное "только для чтения". Что не всегда допустимо! Чтобы пользователи не могли видеть больше своего домашнего каталога, включаем опции:

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list


Создаем файл chroot_list по указанному пути, и вносим в него всех авторизованных ползователей в системе, которые должны иметь доступ к фтп.
 

Andy

Well-Known Member
Права доступа к файлам или папкам

Права доступа к файлам или папкам​

При настройке фтп серверов, а возможно и каких-то других настройках, мы сталкиваемся с правами доступа к файлам. Многие незнаю (как и я незнл) что это такое, и как они расчитываются. Данная статья призвана помочь нам в этом...



Многие начинающие сайтостроители испытывают проблемы, связанные с непониманием системы назначение прав доступа к файлам и каталогам в UNIX формате, применяемом на ftp серверах. На самом деле ничего сложного в этом нет. Для изменения прав доступа к файлам служит команда chmod. Указывать права доступа к объекту можно, как в цифровом, так и в символьном форматах.
Поскольку в инструкциях по установке скриптов в основном указывают цифровой формат, рассмотрим именно его.
В цифровом представлении права записаны трехзначным числом, например 640. Первое число 6 обозначает права владельца файла, второе - 4, права группы и третье - 0, права остальных пользователей.

Например, права 640, установленные на файл означают:
Владелец имеет права чтения(r=4) и записи(w=2), но не имеет права на исполнение(x=1). Сложив 4(чтение разрешено)+ 2(запись разрешена) = 6.
Группа имеет права чтения(r=4), но не имеет прав записи(w=2) и исполнения(x=1). В данном случае берётся просто 4(чтение разрешено) = 4.
Остальные не имеют прав доступа к файлу.

400 — владелец имеет право на чтение;
200 — владелец имеет право на запись;
100 — владелец имеет право на выполнение;
_40 — группа имеет право на чтение;
_20 — группа имеет право на запись;
_10 — группа имеет право на выполнение;
__4 — остальные имеют право на чтение;
__2 — остальные имеют право на запись;
__1 — остальные имеют право на выполнение.

Рассмотрим, как это можно сделать в Total Commander. Подключившись им к серверу ftp, выделим нужный файл, каталог или сразу целую группу объектов. Теперь идём в меню "Файл" и выберем пункт "Изменить атибуты".
Появится следующее окно, в котором проставляем нужные права.

Кроме этого можно вручную ввести команду chmod в командной строке ftp-клиента:
chmod 640 file.php

Огромная благодарность за предоставленную информацию выражается VIB
 

Andy

Well-Known Member
quant добавил

я немного дополню вопрос о доступе
строка доступа имеет 10 флагов
drwxrwxrwx
d????????? первый флаг у меня в примере 'd' - этот флаг показывает, что обьект - папка (directory), если бы первый флаг был '-' - этот обьект был бы файлом, если 'l' - то єто сылка (link), вобщем первый флаг определяет система
?rwx?????? следующие 3 флага определяют доступ к обьекту пользователя
????rwx??? эти 3 флага определяют доступ к обьекту групы
???????rwx последние 3 флага определяют доступ к обьекту всем остальным

0 = --- = никакого доступа (no access)
1 = --x = только выполнение (execute)
2 = -w- = только запись (write)
3 = -wx = запись и выполнение (write and execute)
4 = r-- = только чтение (read)
5 = r-x = чтение и выполнение (read and execute)
6 = rw- = чтение и запись (read and write)
7 = rwx = и чтение и запись и выполнение (read write execute (full access))

для вычисления числа доступа можно представить себе доступ в двоичной система таким образом - 3 бита, соответственно rwx, к примеру, если доступ -wx представляем себе это как 011 - в десятичной системе это 3, или r-x ~ 101 ~ 5

также можно изменять доступ установкой или снятием одиночных флагов
'u' - для пользователя
'g' - для группы
'o' - для всех, кроме пользователя и группы
'a' - для абсолютно всех
включение флага +?, а выключение -?, где '?' - флаг є { 'r', 'w', 'x' }
примеры: u-w - отмена права записи пользователю, g+r - установка права чтения для группы, a-x - запрет абсолютно всем выполнять обьект

команда может выглядеть примерно таким образом
chmod u+x ./jdk.bin
chmod 400 ~/movies/private.avi
chmod 666 /home/ftp/pub/
chmod ug+rw ~/work/
 
Верх