Спестете 15% от всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код: Skills За начало
Заглавия
Linux Виртуални сървъри Операционни системи

Разбиране на Linux файловите разрешения и как да ги управлявате

Linux разрешенията са един от най-фундаменталните — и най-неправилно разбирани — аспекти на администрирането на системи. Независимо дали управлявате production уеб сървър, развертавате приложения или пишете скриптове за автоматизация, солидно разбиране на Linux модела на разрешения е задължително. Ако направите грешка, рискувате нарушения на данни, счупени развертавания или заключени услуги. Ако го направите правилно, имате мощна, гранулирана рамка за сигурност, която работи в ваша полза.

Това ръководство обхваща всичко, което трябва да знаете: как работи моделът на разрешения, как да четете и модифицирате разрешения, как да управлявате собственост и как да се справяте с напреднали битове на разрешения като SUID, SGID и sticky bit.

Обяснение на модела на разрешенията за файлове в Linux

Всеки файл и директория в Linux система имат определен набор от права за достъп. Тези права са разделени между три класа потребители и три типа разрешения.

Трите класа потребители

КласОписание
собственикПотребителят, който притежава файла
групаВсички потребители, принадлежащи към назначената група на файла
другиВсички останали в системата

Трите типа разрешения

РазрешениеСимволЗначение
четенеrПреглед на съдържанието на файл или списък на съдържанието на директория
писанеwМодифициране на файл или директория
изпълнениеxИзпълнение на файл като програма или влизане/преминаване в директория

Заедно, тези девет бита (три класа × три разрешения) определят пълния профил на контрол на достъпа за всеки обект в файловата система.

Как да видите разрешенията на файлове с ls -l

Най-бързият начин да проверите разрешенията е с командата ls -l:

ls -l myscript.sh

Пример на изход:

-rwxr-xr-- 1 alice devs 2048 Jan 25 10:00 myscript.sh

Ето как да прочетете низа с разрешения символ по символ:

СимволиЗначение
-Тип на файла (- = обикновен файл, d = директория, l = символна връзка)
rwxРазрешения на собственика: четене, писане, изпълнение
r-xРазрешения на групата: четене, изпълнение (без писане)
r--Разрешения на останалите: само четене

Така че в този пример, alice (собственикът) има пълен достъп, членовете на групата devs могат да четат и изпълняват файла, а всички останали могат само да го четат.

Промяна на разрешенията с chmod

Командата chmod модифицира разрешенията на файловете. Поддържа два режима: символичен и числов (осмичен).

Символичен режим

Символичният режим използва букви и оператори за добавяне (+), премахване (-) или задаване (=) на разрешенията:

chmod u+x myscript.sh      # Add execute permission for the owner
chmod g-w myscript.sh      # Remove write permission from the group
chmod o=r myscript.sh      # Set read-only for others (exactly)
chmod a+x myscript.sh      # Add execute for all (owner, group, others)

Целевите класове са: u (потребител/собственик), g (група), o (други), a (всички).

Числов (осмичен) режим

Всеки тип разрешение има числова стойност: r = 4, w = 2, x = 1. Събирате ги, за да получите една цифра на клас.

ОсмиченДвоиченРазрешения
7111rwx
6110rw-
5101r-x
4100r--
0000---

Често срещани примери:

chmod 755 myscript.sh   # Owner: rwx | Group: r-x | Others: r-x
chmod 644 file.txt      # Owner: rw- | Group: r-- | Others: r--
chmod 700 script.sh     # Owner: rwx | Group: --- | Others: ---
chmod 600 secret.key    # Owner: rw- | Group: --- | Others: ---

> Бързо справочник: 755 е стандартът за публично достъпни скриптове и директории. 644 е стандартът за четливи конфигурационни файлове. 600 е идеален за частни ключове и чувствителни данни.

Управление на собственост с chown и chgrp

Разрешенията имат смисъл само в контекста на собственост. Командите chown и chgrp ви позволяват да присвоите файлове на правилния потребител и група.

Промяна на собственика на файл

chown alice file.txt

Промяна на групата

chgrp devs file.txt

Промяна на собственика и групата едновременно

chown bob:admins file.txt

Прилагане на промени рекурсивно

Флагът -R прилага промени на собственост към директория и всичкото й съдържание — съществено при настройка на корени на документи на уеб сървър:

chown -R www-data:www-data /var/www/html/

Това е критична стъпка при разгръщане на уеб приложения в среда на VPS Hosting, което гарантира, че процесът на вашия уеб сървър има правилния достъп до обслужване на файлове.

Special Permission Bits: SUID, SGID, and Sticky Bit

Beyond the standard nine permission bits, Linux supports three special modes that modify default behavior in important ways.

1. SUID — Set User ID

Applies to: Executable files

When the SUID bit is set on an executable, it runs with the privileges of the file’s owner, not the user who launched it.

chmod u+s /usr/bin/passwd

ls -l output:

-rwsr-xr-x 1 root root 54256 Jan 10 08:00 /usr/bin/passwd

Notice the s in place of the owner’s x. This is how /usr/bin/passwd can update /etc/shadow (a root-owned file) even when run by a regular user.

> Security note: Be very cautious about setting SUID on custom scripts. A misconfigured SUID binary is a classic privilege escalation vector.

2. SGID — Set Group ID

Applies to: Executable files and directories

  • On files: The file runs with the group privileges of the file’s group owner.
  • On directories: New files created inside the directory automatically inherit the directory’s group, rather than the creating user’s primary group.
chmod g+s /opt/project

ls -l output:

drwxr-sr-x 2 alice devs 4096 Jan 25 10:00 /opt/project

SGID on directories is extremely useful for shared development folders where multiple team members need consistent group ownership on all new files.

3. Sticky Bit

Applies to: Directories

When the sticky bit is set on a directory, only the file’s owner (or root) can delete or rename that file — even if other users have write permission on the directory.

chmod +t /shared/folder

ls -ld output for /tmp:

drwxrwxrwt 10 root root 4096 Jan 28 12:00 /tmp

The t at the end indicates the sticky bit is active. This is why /tmp is world-writable but users can’t delete each other’s temporary files.

Разбиране на umask — Контрол на подразбиранията разрешения

Когато се създаде нов файл или директория, Linux не му дава максимални разрешения. Вместо това прилага umask (маска за създаване на потребителски файлове), която изважда разрешения от подразбиранията.

Проверете вашия текущ umask

umask

Обичайния резултат: 0022

Как работи umask

ОбектПодразбиран максимумС umask `0022`Резултат
Файл666 (rw-rw-rw-)666 - 022644 (rw-r–r–)
Директория777 (rwxrwxrwx)777 - 022755 (rwxr-xr-x)

> Забележка: Linux никога не задава битът за изпълнение на новосъздадени файлове по подразбиране, независимо от umask.

Задайте временен umask

umask 0077    # New files: 600 (rw-------), New dirs: 700 (rwx------)

Това е полезно в скриптове, които създават чувствителни временни файлове. За постоянна промяна добавете командата umask към файла на профила на вашата обвивка (например ~/.bashrc или /etc/profile).

Рекурсивни поправки на разрешения

Обща задача в реалния свят е нулиране на разрешенията в целия директорий на проекта — например след неудачно развертване или FTP качване, което е повредило разрешенията. Ключът е да зададете различни разрешения за директориите и файловете, тъй като директориите имат нужда от бита за изпълнение, за да бъдат преходими.

# Set all directories to 755
find /var/www/myapp -type d -exec chmod 755 {} ;

# Set all files to 644
find /var/www/myapp -type f -exec chmod 644 {} ;

Ако вашето приложение има специфични изпълними скриптове, поправете ги отделно впоследствие:

chmod 755 /var/www/myapp/bin/*.sh

Този модел е съществен за всеки, който управлява среди за уеб хостинг. Ако изпълнявате PHP, Python или Node.js приложения на VPS с cPanel, неправилните разрешения на файловете са една от най-честите причини за 403 Forbidden грешки и неудачно изпълнение на скриптове.

Практически справочник за разрешения за често срещани сценарии

СценарийПрепоръчани разрешенияКоманда
Публични уеб файлове (HTML, CSS, JS)644chmod 644 index.html
Уеб директории755chmod 755 /var/www/html
PHP/Python скриптове644 или 755Зависи от метода на изпълнение
Частни SSH ключове600chmod 600 ~/.ssh/id_rsa
.ssh директория700chmod 700 ~/.ssh
Споделена директория на проект2775 (SGID)chmod 2775 /opt/project
Временна директория с достъп за всички1777 (sticky)chmod 1777 /tmp/shared
Конфигурационни файлове с тайни600chmod 600 .env

Linux File Permissions and Server Security

Разбирането на разрешенията за файлове не е просто академично упражнение — има преки, практически последици за сигурността и стабилността на сървъра.

Често срещани грешки в сигурността, които трябва да избегнете:

  • Задаване на 777 на уеб директориите. Това дава на всички право на четене, писане и изпълнение — критична уязвимост, ако вашият сървър е компрометиран или ако е възможна PHP инжекция на код.
  • Оставяне на конфигурационни файлове, четими от всички. Файлове като .env, wp-config.php или учетни данни на база данни трябва да бъдат 600 или 640 най-много.
  • Игнориране на собствеността. Дори ако разрешенията изглеждат правилни, ако грешният потребител притежава файл, вашият уеб сървър или приложение демон може да не могат да го прочетат.
  • Рекурсивен chown на системни директории. Неосторожното изпълнение на chown -R на /etc или /usr може да счупи цялата ви система.

Ако управлявате производствена среда на Dedicated Servers, внедряването на строга политика за разрешения е една от първите стъпки за укрепване, които трябва да предприемете след първоначалната настройка.

За екипи, управляващи множество сайтове или приложения, VPS Control Panels могат да опростят управлението на разрешенията чрез графични файлови мениджъри, въпреки че умението в командния ред остава съществено за напреднали конфигурации.

Бърз справочник на команди

# View permissions
ls -l filename
ls -ld directory/

# Change permissions (symbolic)
chmod u+x file        # Add execute for owner
chmod g-w file        # Remove write for group
chmod o=r file        # Set read-only for others
chmod a+r file        # Add read for all

# Change permissions (numeric)
chmod 755 file        # rwxr-xr-x
chmod 644 file        # rw-r--r--
chmod 600 file        # rw-------
chmod 700 file        # rwx------

# Change ownership
chown user file
chgrp group file
chown user:group file
chown -R user:group directory/

# Special bits
chmod u+s file        # Set SUID
chmod g+s directory   # Set SGID
chmod +t directory    # Set sticky bit

# umask
umask                 # Show current umask
umask 0022            # Set umask for session

# Recursive fixes
find /path -type d -exec chmod 755 {} ;
find /path -type f -exec chmod 644 {} ;

Заключение

Linux разрешенията за файлове формират основата на системната сигурност, контрола на достъпа на множество потребители и надеждното разгръщане на приложения. Моделът е елегантен в своята простота — три класа, три типа разрешения, няколко специални бита — но достатъчно мощен, за да защити всичко от личен машина за разработка до сървър с висок трафик в production.

Овладяването на chmod, chown, umask и специалните разрешителни битове ви дава увереност да разгръщате приложения правилно, да отстранявате грешки при достъп бързо и да укрепвате вашите сървъри срещу неоторизиран достъп.

Независимо дали започвате със Shared Web Hosting или се разширявате към напълно управляема VPS Hosting среда, солидното разбиране на Linux разрешенията за файлове е един от най-високо влияещите умения, които можете да развиете като системен администратор или разработчик. Инвестирайте времето да го разберете дълбоко — вашите сървъри (и вашите потребители) ще ви благодарят.