Налаштування прав доступу до ftp серверу, mironov - s blog

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

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

Під час роботи 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-команди згруповані в наступні класи:

READ - Все FTP-команди, пов'язані з читанням файлів (за винятком команд видачі лістингу вмісту директорії), наприклад, RETR, STAT і т.д.

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

DIRS - Все FTP-команди, пов'язані з видачею лістингу вмісту директорії, наприклад, LIST і NLST.

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

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

Права доступу встановлюються на директорію і за замовчуванням поширюються на всі піддиректорії, але можуть бути перевизначені. Для того, щоб встановити права доступу на деяку директорію, необхідно створити в ній файл з ім'ям '.ftpaccess'. Вміст цього файлу визначає права доступу до директорії і піддиректоріях. Формат файлу:

[[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' управляє послідовністю обробки інших команд управління доступом. За замовчуванням діє правило 'allow, deny'. Це означає, що першими перевіряються команди дозволу доступу (список цих команд починається зі слова 'Allow'). Якщо будь-яка команда відпрацювала успішно, процес переривається і користувачеві дозволяється виконання ftp-команд, перерахованих в першому рядку секції. Інакше обробляються команди заборони доступу (їх список починається зі слова 'Deny'). Якщо будь-яка команда відпрацювала успішно, виконання ftp-команд забороняється.

Якщо встановити порядок 'deny, allow', обробка команд відбувається в зворотному порядку, тобто спочатку обробляються команди заборони доступу, потім команди дозволу доступу.
AllowAll / DenyAll

Дозвіл або заборона виконання ftp-команд всім користувачам з усіх хостів.
AllowUser / DenyUser

Дозвіл або заборона виконання ftp-команд для конкретних користувачів. Аргументом цієї команди (users-list) є список імен користувачів (через кому).
AllowGroup / DenyGroup

Дозвіл або заборона виконання команд для користувачів, що входять або не входять до зазначених груп. Групи перераховуються через кому. Знак '!' Перед ім'ям групи показує, що користувач не повинен в неї входити. При перевірці даної директиви перевіряється наявність (або відсутність, якщо використаний знак '!') Користувача в кожній з перерахованих груп і умова вважається виконаним, тільки якщо воно виконано для всіх перерахованих груп.

Тобто, якщо Ви використовуєте директиву виду

то доступ на виконання відповідних команд буде тільки у користувачів, які одночасно входять в group1 і group2. Якщо Ви хочете дати доступ усім користувачам, які входять в групу group1 або group2, то потрібно писати окрему директиву для кожної групи:

AllowGroup group1
AllowGroup group2

Як змінити директорію за замовчуванням

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

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

2. Але FTP-сервер, як і раніше працює з Директорією pub, і тому тепер Вам потрібно вказати, що директорія pub - це насправді www, тобто створити так звану символьне посилання. Вона працює таким чином, що всі звернення по ftp до директорії pub будуть насправді розумітися сервером як звернення до www (іншими словами, pub тепер буде синонімом www). Це можна зробити за допомогою команди ln в unix-shell.

Наприклад, для створення посилання pub -> www потрібно в домашній директорії дати команду:

Якщо Ви хочете створити таку посилання на окрему директорію всередині www (наприклад, www / images), то команда, відповідно, буде така:

ln -s www / images pub

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

Схожі статті