Настройки прав доступа к FTP серверу

Написал admin . Опубликовано в Unix просмотров 2 283

Так себеПойдетХорошоПонравилосьОтличный пост (1 votes, average: 3,00 out of 5)
Загрузка...

Так как контент сервера расположен на файловой системе хостинговой машины, права доступа к нему управляются при помощи стандартного механизма прав операционной системы UNIX. При регистрации услуги FTP-сервера в домашней директории владельца сервера создается директория pub. Контент сервера должен располагаться в этой директории. При подключении к серверу пользователям доступна только часть файловой системы, лежащая ниже этой директории, т.е. пользователи видят эту директорию как корневую (‘/’) и не могут получить доступ к данным, расположенным вне ее.

Существует также другой механизм управления доступом к контенту сервера, позволяющий устанавливать права на выполнение операций чтения, записи, удаления, просмотра директории и т.д. независимо для каждого пользователя сервера.

ВАЖНО: обратите особое внимание на то, что ни в коем случае нельзя наделять пользователей ненужными им правами. Например, если Вы создаете логин для публичного использования (например, anonymous), нельзя давать такому пользователю лишних прав. Например, прав для загрузки на сервер новых файлов. Злоумышленники таким образом смогут поместить на Ваш сервер ненужные файлы, которые будут занимать оплачиваемое Вами дисковое пространство. Кроме того, пользователи, обладающие лишними правами, смогут стирать и изменять файлы на Вашем сервере, что не всегда нужно. Придерживайтесь так называемого «принципа минимальных прав», когда пользователь или сотрудник получает только тот уровень доступа, который ему реально нужен для работы.

FTP-команды

Во время работы ftp-клиент может посылать ftp-серверу строго определенный набор ftp-команд. Основные ftp-команды перечислены ниже:

CWD (Change Working Directory) — посылается клиентом для смены текущей директории. Ограничение прав на выполнение этой команды также распространяется и на команду CDUP (переход в директорию на один уровень вверх).

MKD (MaKe Directory) — послыается клиентом для создания директории.

RNFR (ReName FRom), RNTO (ReName TO) — посылаются клиентом для переименования директории или файла.

DELE (DELEte) — посылается клиентом для удаления файла.

RMD (ReMove Directory) — посылается клиентом для удаления директории.

RETR (RETRieve) — передача файла от сервера к клиенту по протоколу FTP.

STOR (STORe) — передача файла от клиента к серверу по протоколу FTP.

Классы ftp-команд

Для удобства описания, ftp-команды сгруппированы в следующие классы:

READ — Все FTP-команды, связанные с чтением файлов (за исключением команд выдачи листинга содержимого директории), например, RETR, STAT и т.д.

WRITE — Все FTP-команды, связанные с созданием, записью или удалением файлов или директорий (включая команды MKD и RMD).

DIRS — Все FTP-команды, связанные с выдачей листинга содержимого директории, например, LIST и NLST.

ALL — Все FTP-команды (включает в себя все три класса READ, WRITE и DIRS).

Установка прав доступа

Права доступа устанавливаются на директорию и по умолчанию распространяются на все поддиректории, но могут быть переопределены. Для того, чтобы установить права доступа на некоторую директорию, необходимо создать в ней файл с именем ‘.ftpaccess’. Содержимое этого файла определяет права доступа к директории и поддиректориям. Формат файла:

[AllowAll|DenyAll]

[ [Order allow,deny|deny,allow]
[AllowUser users-list]
[DenyUser users-list]
[AllowGroup group-expression]
[DenyGroup group-expression]
[Allow hosts]
[Deny hosts]
[AllowAll|DenyAll]
]

[ …
]

Видно, что файл состоит из секций ‘Limit’, содержащих команды разрешения/запрещения доступа. Команды AllowAll и DenyAll могут использоваться также вне секций ‘Limit’.

Секция ‘Limit’ начинается со строки ‘ ‘ и заканчивается строкой ». Ftp-command-list является списком ftp-команд и классов ftp-команд, разделенных пробелами. Содержимое секции — команды управления доступом. Они определяют возможность выполнения команд, перечисленных в списке.

Order

Команда ‘Order’ управляет последовательностью обработки остальных команд управления доступом. По умолчанию действует правило ‘allow,deny’. Это значит, что первыми проверяются команды разрешения доступа (список этих команд начинается со слова ‘Allow’). Если какая-либо команда отработала успешно, процесс прерывается и пользователю разрешаеся выполнение ftp-команд, перечисленных в первой строке секции. Иначе обрабатываются команды запрещения доступа (их список начинается со слова ‘Deny’). Если какая-либо команда отработала успешно, выполнение ftp-команд запрещается.

Если установить порядок ‘deny,allow’, обработка команд происходит в обратном порядке, т.е. сначала обрабатываются команды запрещения доступа, потом команды разрешения доступа.
AllowAll/DenyAll

Разрешение или запрещение выполнения ftp-команд всем пользователям со всех хостов.
AllowUser/DenyUser

Разрешение или запрещение выполнения ftp-команд для конкретных пользователей. Аргументом этой команды (users-list) является список имен пользователей (через запятую).
AllowGroup/DenyGroup

Разрешение или запрещение выполнения команд для пользователей, входящих или не входящих в указанные группы. Группы перечисляются через запятую. Знак ‘!’ перед именем группы показывает, что пользователь не должен в нее входить. При проверке данной директивы проверяется наличие (или отсутствие, если использован знак ‘!’) пользователя в каждой из перечисленных групп и условие считается выполненным, только если оно выполнено для всех перечисленных групп.

То есть, если Вы используете директиву вида

AllowGroup group1,group2

то доступ на выполнение соответствующих команд будет только у пользователей, которые одновременно входят в group1 и group2. Если Вы хотите дать доступ всем пользователям, которые входят в группу group1 или group2, то нужно писать отдельную директиву для каждой группы:

AllowGroup group1
AllowGroup group2

Allow/Deny

Разрешение или запрещение выполнения ftp-команд для всех пользователей, если соединение установлено с перечисленных хостов. Хосты перечисляются через запятую. В качестве имени хоста можно указывать доменное имя, ip-адрес или адрес сети с точкой в конце (например, значение ‘10.0.0.’ будет означать разрешение/запрещение доступа со всех хостов подсети 10.0.0.0/24). Вместо списка хостов можно использовать ключевые слова ‘all’ или ‘none’. Таким образом, команда ‘Allow all’ почти эквивалентна ‘AllowAll’. Команда ‘Allow none’ значит, что адрес хоста не будет влиять на права доступа.

Как изменить директорию по умолчанию

Функциональность услуги «Виртуальный FTP-сервер» можно несколько изменить. Иногда может возникнуть необходимость дать ftp-доступ пользователю не в директорию pub, а в директорию www (типичный пример — Вы хотите дать ftp-доступ к www-директории для вебмастера, разрабатывающего сайт, но не хотите, чтобы ему были доступны все остальные служебные директории на сервере). Это можно реализовать с помощью следующих несложных действий.

1. Сначала необходимо удалить директорию pub из домашнего каталога. Для этого в unix-shell дается команда:

rm -rf pub

2. Но FTP-сервер по-прежнему работает с директорией pub, и поэтому теперь Вам нужно указать, что директория pub — это на самом деле www, т.е. создать так называемую символьную ссылку. Она работает таким образом, что все обращения по ftp к директории pub будут на самом деле пониматься сервером как обращения к www (другими словами, pub теперь будет синонимом www). Это можно сделать с помощью команды ln в unix-shell.

Например, для создания ссылки pub -> www нужно в домашней директории дать команду:

ln -s www pub

Если Вы хотите создать такую ссылку на отдельную директорию внутри www (например, www/images), то команда, соответственно, будет такая:

ln -s www/images pub

Теперь при подключении по FTP к серверу ftp.domain пользователи сразу будут попадать в директорию www (или, во втором случае, в www/images). Права доступа для пользователей в данном случае задаются точно так же, через файл .ftpaccess, только помещать его нужно в директорию www (и соответствующие поддиректории).

 

Похожие статьи:

Метки: , , , , , , , ,

Trackback from your site.

Leave a comment