Proftpd сервер – это ftp сервер для linux систем с хорошим набором настроек.И так задача такова – сделать фтп сервер,да не простой а такой чтобы,каждый пользователь смотрел в свою папку + был пользователь который мог смотреть в другие папки добавлять в них свое.Пользователей будем создавать в системе,с ограничением доступа.Приступим ..
Для начала нужно установить наш сервер
sudo apt-get install proftpd
Все настройки для сервера хранятся в /etc/proftpd/proftpd.conf сотв.
Сам наш простенький конфиг файл
######################################################
#
# ProFtpd.conf
#
######################################################
# Имя сервера
ServerName "TEST FTP"
ServerType standalone
DefaultServer on
ServerIdent off
#Авторизация по учеткам в системе
AuthPAM yes
# Запрещаем руту логиниться на фтп
RootLogin off
# Слушаем порт 21 (стандартный)
Port 21
# Права на создаваемые файлы
Umask 022
# Chroot-им всех пользователей. Нефига им по файловой системе лазить
DefaultRoot ~
# Не проверяем валидность шелла. Всем подряд я шелл не даю, а на /bin/nologin ругается
RequireValidShell off
User proftpd
Group nogroup
TimeoutIdle 180
TimeoutLogin 120
TimeoutNoTransfer 360
TimeoutStalled 640
TransferLog /var/log/proftpd-tranfer.log
SystemLog /var/log/proftpd-error.log
Вот и минимальная настройка.Теперь осталось создать пользователей и раздать им права.
дерево такое будет
/srv/ftp/users /clients/client1 /client2
и 4 пользователя
users который смотрит только в свою папку
client1 и client2 которые тоже видят только свои папки
и adm который видит папку clients и client1,client2
Создадим новых пользователей
useradd users && useradd adm && useradd client1 && useradd client2
задать пароль для пользователя passwd user_name
Создадим группу ftpusers
groupadd ftpusers
Теперь отредактируем домашние директории
на примере client1
sudo nano /etc/passwd
Запись должна быть вида:
client1:x:1002:1002::/srv/ftp/clients/client1:/bin/false
Также добавим пользователей в группу ftpusers
для этого
sudo nano /etc/group
и запись вида
ftpusers:x:1001:adm,client1,client2
просто в уже созданную группу через запятую записываем юзеров.
(кстати если после всех манипуляций не заходит под определенный пользователем на ftp сервер возможно пользователь еще заблокирован
для разблокировки используем passwd -u user_name)
Теперь же мы перейдем к разграничению доступа все тоже на примере client1
chown client1:ftpusers /srv/ftp/clients/client1
(проделываем для домашних директорий пользователей)
(так же на заметку …чтобы пользователь получил доступ к домашней директории нужны права на запуск/поиск(-x)
кстати с разграничение доступа хорошо справляется mc-аналог far’а виндового ( sudo apt-get instal mc ))
Вот небольшая шпаргалка
chmod - изменяет права доступа к файлу (собственно из man-а)
Данная команда имеет различные опции: ‘rwxXstugo’
r -чтение;
w -запись;
x -выполнение (или доступ к каталогу);
X -выполнение, если файл является каталогом или уже имеет право на выполнение для какого-нибудь пользователя;
s -setuid- или setgid-биты;
t -sticky-бит;
u -установка для остальных таких же прав доступа, которые имеет пользователь, владеющий этим файлом;
g -установка для остальных таких же прав доступа, которые имеет группа файла;
o -установка для остальных таких же прав доступа, которые имеют остальные пользователи (не входящие в группу файла).
w -запись;
x -выполнение (или доступ к каталогу);
X -выполнение, если файл является каталогом или уже имеет право на выполнение для какого-нибудь пользователя;
s -setuid- или setgid-биты;
t -sticky-бит;
u -установка для остальных таких же прав доступа, которые имеет пользователь, владеющий этим файлом;
g -установка для остальных таких же прав доступа, которые имеет группа файла;
o -установка для остальных таких же прав доступа, которые имеют остальные пользователи (не входящие в группу файла).
Т.е, предположим, что у нас есть »Папка_А», которую нам надо сделать доступной для чтения/записи и выполнения (доступа к каталогу).
От рута (супер пользователя) вводим в консоли команду:
От рута (супер пользователя) вводим в консоли команду:
chmod =rwx путь_к_папке/ Папка_А
После этого все в общем то готово
sudo /etc/init.d/proftpd restart
если что то не так курим логи в
/var/log/proftpd-error.log