Как да проверите и правилно да настроите правата за достъп до файловете на Вашия VPS
Всеки файл и всяка папка на Вашия VPS има собственик, група и права. Ако правата са твърде широки, хакнат уебсайт или услуга може да записва навсякъде. Ако са твърде строги, ще получавате грешки като "Permission denied" или 403 на Вашия уебсайт. Тук ще научите как да разчитате правата и как да ги задавате правилно. Ако имате хостинг пакет с DirectAdmin, вижте Забранено (403): Нямате разрешение за достъп до / на този сървър.
Разчитане на правата с ls -l
ls -l /var/www/example.com -rw-r--r-- 1 anna www-data 1520 index.html -rw-r----- 1 anna www-data 412 config.php drwxr-xr-x 2 anna www-data 4096 images drwxrwxr-x 2 www-data www-data 4096 uploads
Първият знак показва вида: - е файл, d е папка, l е символна връзка. След това следват три групи от по три знака: какво може собственикът, какво може групата и какво могат всички останали. След тях са посочени собственикът (anna) и групата (www-data).
| Буква | При файл | При папка |
|---|---|---|
r | Четене | Извеждане на имената в папката |
w | Промяна | Създаване, преименуване и изтриване на файлове |
x | Изпълнение като програма | Влизане в папката и отваряне на файловете в нея |
Обърнете внимание на две неща. Без x на папка не можете да достигнете до файловете в нея, дори ако те са четими. А който има w на папка, може да изтрива файлове в нея, дори ако те принадлежат на друг.
Права като число
Правата често се записват с три цифри: r е 4, w е 2 и x е 1, като стойностите се събират за всяка група.
| Число | Права | Употреба |
|---|---|---|
| 644 | rw-r--r-- | Обикновен файл, например уеб страница или изображение |
| 755 | rwxr-xr-x | Папка или програма, която всеки може да използва |
| 640 | rw-r----- | Конфигурация с парола, четима за уеб сървъра чрез групата |
| 600 | rw------- | Таен файл, като authorized_keys, частен ключ или файл .env |
| 700 | rwx------ | Лична папка, като ~/.ssh |
Промяна на правата и собственика
chmod 640 /var/www/example.com/config.php chmod g+w /var/www/example.com/uploads sudo chown anna:www-data /var/www/example.com/config.php
chmod променя правата, с число или с букви (u, g, o за собственик, група и останали, с + или -). chown собственик:група променя собственика и групата; това може само root, затова се изпълнява със sudo.
За цяла папка chmod -R 644 е често срещана грешка: всички подпапки губят своето x и стават неизползваеми. Задайте правата на папките и файловете поотделно с find:
sudo find /var/www/example.com -type d -exec chmod 755 {} +
sudo find /var/www/example.com -type f -exec chmod 644 {} +
Уеб сървърът чрез групата
В Debian и Ubuntu nginx и PHP-FPM по подразбиране работят под потребителя www-data. Добро разпределение е следното: Вие сте собственик на файловете, а групата е www-data. Тогава уеб сървърът може да чете чрез групата и да записва само в папката, където това наистина е необходимо, като uploads (chmod g+w или собственик www-data само за тази папка). Не давайте на уеб сървъра право на запис върху Вашите PHP файлове.
777. Тогава всеки на сървъра може да чете, променя и изпълнява файла или папката. Ако някога дори един уебсайт или услуга бъде компрометиран, нападателят може да записва навсякъде, където е зададено 777. Истинският проблем почти винаги е собственикът или групата: решете него, вместо да отваряте всичко.Права за SSH
SSH сървърът проверява правата на Вашите ключове. Ако други могат да записват в папката Ви .ssh или в домашната Ви папка, той пренебрегва ключа Ви и отново получавате запитване за парола, без ясно съобщение за грешка. Задайте правата така:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
Ако сте създали папката като root за друг потребител, коригирайте и собственика, както е описано в Собствен потребител със sudo. В AlmaLinux и Rocky Linux SELinux също може да откаже достъп до файл, който има правилните права; при ръчно създадена папка .ssh помага restorecon -Rv ~/.ssh.
s вместо x, като при /usr/bin/passwd? Това е setuid битът: програмата тогава работи с правата на собственика. Някои системни програми се нуждаят от него, но никога не го задавайте сами на скрипт. Неочакван setuid файл може да е признак за проникване, вижте Хакнати ли сте? Първите стъпки.Искате да научите повече? Преминете безплатния курс по VPS и администриране на Linux сървъри, урок 3.1 Потребители, групи и права за файлове.
