Здавалося б, що може бути простіше, ніж додати користувача на сервері? Надрукував в консолі команду adduser
, відповів на кілька запитань про пароль і іншої інформації, і ось, можна заходити з отриманим логіном та паролем, розміщувати файли і т.д.
Потім, вручну, доводиться створювати папки. Наприклад, одну для сайту. Іншу - для тимчасових файлів, щоб не кидати їх в загальний / tmp в цілях захисту. Ще одну - для сесій, якщо не налаштоване кешування в Redis . А ще ж потрібно скопіювати потрібні файли налаштувань, типу публічного ssh ключа для аутентифікації .
Все це стає не дуже зручним процесом, коли користувачів створювати доводиться часто, якщо не постійно. На щастя, багато ми можемо налаштувати, включаючи первинні параметри при створенні (розташування домашньої папки, групу), так і вторинні - необхідні папки, файли налаштувань.
Первинні налаштування, які визначаються при використанні команди adduser
, беруться з файлу /etc/adduser.conf.
Змінюємо домашню папку
Спочатку домашні папки всіх користувачів розміщуються в розділі / home. Але ми можемо заздалегідь перевизначити розташування, використовуючи будь-яку іншу папку, наприклад / var / www. Для цього відредагуємо параметр DHOME
.
DHOME = / var / www
Слід звернути увагу на параметр SKEL=/etc/skel
. Він визначає, звідки будуть скопійовані файли налаштувань і папки для кожного конкретного користувача. Напевно ви бачили в папках користувачів свого сервера файли .profile, .bashrc. Вони як раз скопійовані з цього джерела. :)
Додавання користувачів в єдину групу
З параметрами за замовчуванням для кожного користувача створюється окрема однойменна група. Але для веб-сервера можна додавати різних користувачів в одну групу, щоб краще управляти політикою безпеки.
Коли створюється юзер для розміщення сайтів, право на редагування / видалення файлів має належати тільки йому. Веб-сервер, будь то nginx або apache, повинні запускатися від імені іншого користувача, якому доступно тільки читання файлів. Решта ж користувачі ніяких прав мати не повинні.
Додаючи всіх користувачів в одну групу, ми, потім, можемо виставити права для цієї групи тільки на читання. І запустити веб-сервер від імені цієї групи. Всяко краще, ніж додавати користувача веб-сервера в групи користувачів, де розміщуються сайти.
Загальною групою стане група користувача www-data. Він спеціально створений для запуску веб-серверів, має максимально обмежені права і не може користуватися шелл-му.
У файлі adduser.conf нам потрібно спочатку відключити створення однойменної групи при створенні користувача.
USERGROUPS = no
А, потім, вказати ID групи www-data.
USERS_GID = 33
Як правило, ідентифікатор дорівнює 33. Але слід перевірити ще раз командою, яку запускає від root: id www-data
.
І останній параметр, змінюваний в цьому файлі конфігурації:
DIR_MODE = 0710
Він визначає права на домашню папку користувача / var / www / username. Тут ми дозволяємо всі дії власнику файлів, тільки виконання для групи і не даємо жодних прав всім іншим.
Права для конкретного користувача і додаткові файли
Тепер нам потрібно продовжити видачу коректних прав, але вже в рамках одного користувача. Щоб при створенні файлів і папок їм відразу привласнювалися потрібні права, відредагуємо відповідним чином параметр umask
в файлах .bashrc і .profile.
umask 027
Для папок ці права будуть інтерпретовані як 0750, що дозволяє будь-які дії з файлами для власника, читання і виконання для групи.
А для файлів 0640: читання / зміна для власника і тільки читання для групи. Рекомендую самостійно вивчити статтю про права доступу в Linux.
Також не забуваємо в каталозі / etc / skel оновити права на існуючі файли і папки командою chmod.
На завершення створюємо додаткові папки: для сайтів, тимчасових файлів, сесій і т.д. Файл authorized_keys з вашим публічним ключем до ssh потрібно розташувати в папці .ssh користувача. В результаті структура буде виглядати приблизно так:
/ Etc / skel -.ssh / --authorized_keys -sessions / -tmp / -www / -.bashrc -.profile
Все це буде скопійовано в домашній каталог користувача при його створенні.