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

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

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

Как да проверите разрешенията на файлове в Linux: Пълно ръководство

Linux захранва мнозинството на световните сървъри — от VPS Hosting среди до корпоративни Dedicated Servers — и то по добра причина. Той е бърз, стабилен и изграден със сигурност в основата. Един от най-фундаменталните стълбове на тази сигурност е системата за разрешения на файлове: точен, елегантен механизъм, който контролира точно кой може да чете, модифицира или изпълнява всеки файл или директория в системата.

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

Какви са Linux разрешенията за файлове?

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

РазрешениеСимволКакво прави на файлКакво прави на директория
ЧетенеrПреглед на съдържанието на файлаСписък на имената на файловете вътре
ПисанеwМодифициране или изтриване на файлаСъздаване или премахване на файлове вътре
ИзпълнениеxИзпълнение на файла като програмаВлизане (навигация в) директорията

Тези три разрешения се прилагат независимо към три отделни категории потребители:

  • Собственик (потребител) — Потребителят, който притежава файла, обикновено неговия създател.
  • Група — Всеки потребител, който принадлежи към назначената група на файла.
  • Други — Всички останали в системата.

Тази матрица три по три на разрешенията дава на администраторите на Linux детайлен, мощен контрол над достъпа до всеки ресурс в системата.

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

Най-бързият и най-често използван метод за проверка на разрешенията на файлове е командата ls -l (формат на дълго изброяване).

ls -l file.txt

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

-rw-r--r-- 1 alice developers 1024 Aug 16 12:30 file.txt

Нека разберем всеки компонент на този изход:

-  rw-  r--  r--   1   alice   developers   1024   Aug 16 12:30   file.txt
│   │    │    │    │     │          │          │         │             │
│   │    │    │    │     │          │          │         │             └─ Filename
│   │    │    │    │     │          │          │         └─ Last modified
│   │    │    │    │     │          │          └─ File size (bytes)
│   │    │    │    │     │          └─ Group name
│   │    │    │    │     └─ Owner name
│   │    │    │    └─ Number of hard links
│   │    │    └─ Others' permissions
│   │    └─ Group's permissions
│   └─ Owner's permissions
└─ File type (- = regular file, d = directory, l = symlink)

Така че -rw-r--r-- ни казва:

  • Собственик (alice): Четене + Писане (rw-)
  • Група (developers): Само четене (r--)
  • Други: Само четене (r--)

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

За да видите разрешенията на всички файлове в директория наведнъж:

ls -la /var/www/html

Флагът -a включва скритите файлове (тези, които започват с точка). Това е особено полезно при одит на директориите на уеб сървъра в среда на Споделен уеб хостинг или VPS.

Получаване на подробна информация за разрешенията с stat

За по-подробен преглед — включително символни и цифрови представяния — използвайте командата stat:

stat file.txt

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

  File: file.txt
  Size: 1024            Blocks: 8          IO Block: 4096   regular file
Device: fd01h/64769d    Inode: 131073      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/   alice)   Gid: ( 1000/developers)
Access: 2024-08-16 12:30:00.000000000 +0000
Modify: 2024-08-16 12:30:00.000000000 +0000
Change: 2024-08-16 12:30:00.000000000 +0000

Ключовият ред е:

Access: (0644/-rw-r--r--)  Uid: ( 1000/   alice)   Gid: ( 1000/developers)

Това ви дава:

  • Цифрова (осмична) нотация: 0644
  • Символна нотация: -rw-r--r--
  • User ID (UID) и Group ID (GID) с техните четливи имена

Командата stat е безценна при отстраняване на грешки при разрешенията на production сървърите, тъй като предоставя целия контекст, който ви трябва в един единствен изход.

Разбиране на числовата (осмична) нотация на разрешенията

Разрешенията в Linux могат да бъдат изразени като числа, което е форматът, използван от команди като chmod. На всеки тип разрешение се присвоява стойност:

РазрешениеЧислова стойност
Четене (r)4
Писане (w)2
Изпълнение (x)1
Без разрешение (-)0

Изчислявате стойността на разрешението за всяка категория потребители чрез събиране на стойностите:

КомбинацияИзчислениеЧислова стойност
rwx4 + 2 + 17
rw-4 + 2 + 06
r-x4 + 0 + 15
r--4 + 0 + 04
---0 + 0 + 00

Трицифрено осмично число представлява пълния набор от разрешения:

0644  →  Owner: 6 (rw-)  |  Group: 4 (r--)  |  Others: 4 (r--)
0755  →  Owner: 7 (rwx)  |  Group: 5 (r-x)  |  Others: 5 (r-x)
0700  →  Owner: 7 (rwx)  |  Group: 0 (---)  |  Others: 0 (---)

Проверка на разрешенията на директориите

Директориите използват същия модел на разрешения, но значението на всеки бит е малко различно. Използвайте ls -ld (обърнете внимание на флага -d) за проверка на самата директория, а не на нейното съдържание:

ls -ld myfolder

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

drwxr-x--- 2 alice developers 4096 Aug 16 12:30 myfolder

Водещият d потвърждава, че това е директория. Разрешенията се разбиват както следва:

  • Собственик (alice): rwx — Може да изброи, създава/изтрива файлове и да влезе в директорията
  • Група (developers): r-x — Може да изброи файлове и да влезе, но не може да създава или изтрива
  • Други: --- — Никакъв достъп

> Важно: Битът за изпълнение (x) на директория означава способност да се влезе в нея (т.е. да се използва cd). Без x, потребителят не може да навигира в директорията дори ако има разрешение за четене. Това е често срещан източник на объркване за новаци.

Специални битове разрешения: setuid, setgid и Sticky Bit

Освен стандартните девет бита разрешения, Linux поддържа три специални бита разрешения, които осигуряват напреднал контрол на достъпа:

1. setuid (s на бита за изпълнение на собственика)

Когато е зададен на изпълним файл, програмата се изпълнява с привилегиите на собственика на файла, а не на извикващия потребител. Това е начинът, по който команди като passwd позволяват на обикновени потребители да модифицират /etc/shadow (който е собственост на root).

ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 54256 Mar 27 2023 /usr/bin/passwd

s в позицията за изпълнение на собственика показва setuid.

2. setgid (s на бита за изпълнение на групата)

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

ls -ld /shared/project
drwxrwsr-x 2 alice developers 4096 Aug 16 12:30 /shared/project

3. Sticky Bit (t на бита за изпълнение на други)

Когато е зададен на директория, само собственикът на файла (или root) може да изтрива или преименува файлове в нея, дори ако други имат разрешение за писане. Това е стандартната конфигурация за /tmp:

ls -ld /tmp
drwxrwxrwt 12 root root 4096 Aug 16 12:30 /tmp

t в края показва, че sticky bit е активен.

Числово представяне на специалните битове:

Специален битЧислова стойност
setuid4000
setgid2000
Sticky bit1000

Така drwxrwxrwt = 1777 (1000 + 777).

Таблица на пълния справочник на разрешенията

СимволенЧисловЗначение на файлЗначение на директория
---0Без достъпБез достъп
--x1Само изпълнениеСамо вход
-w-2Само записМодифициране на съдържание (с x)
-wx3Запис + ИзпълнениеВход и модифициране
r--4Само четенеСписък на имена (изисква x за да е полезно)
r-x5Четене + ИзпълнениеСписък и вход
rw-6Четене + ЗаписСписък и модифициране (без вход)
rwx7Пълен достъпПълен контрол

Примери на разрешения в реалния свят

Ето най-често срещаните модели на разрешения, които ще срещнете на практика:

-rw-r--r-- (0644) — Стандартен файл

-rw-r--r-- 1 alice developers 1024 Aug 16 12:30 config.txt

Собственикът може да чете и пише. Групата и останалите могат само да четат. Типично за конфигурационни файлове и уеб съдържание.

-rwxr-xr-x (0755) — Изпълним скрипт или двоичен файл

-rwxr-xr-x 1 alice developers 4096 Aug 16 12:30 deploy.sh

Собственикът има пълен достъп. Всички останали могат да четат и изпълняват, но не могат да модифицират. Стандартно за shell скриптове, уеб сървърни двоични файлове и публични изпълними файлове.

-rw------- (0600) — Приватен файл

-rw------- 1 alice alice 1679 Aug 16 12:30 id_rsa

Само собственикът може да чете или пише. Никой друг няма достъп. Необходимо за SSH приватни ключове — SSH ще откаже да използва файл с по-широки разрешения.

drwxr-xr-x (0755) — Стандартна публична директория

drwxr-xr-x 5 alice developers 4096 Aug 16 12:30 public_html

Често срещано за уеб коренови директории. Собственикът има пълен контрол; останалите могат да разглеждат и да влизат.

drwx------ (0700) — Приватна директория

drwx------ 3 alice alice 4096 Aug 16 12:30 .ssh

Напълно приватна. Само собственикът може да има достъп. Необходимо за директорията ~/.ssh.

drwxrwxrwt (1777) — Писане за всички със Sticky Bit

drwxrwxrwt 12 root root 4096 Aug 16 12:30 /tmp

Всеки може да създава файлове, но само собственикът на всеки файл може да изтрие своите собствени файлове.

Практически съвети за сървърни среди

Ако управлявате Linux сървър — независимо дали е VPS, който работи с уеб приложение, mail сървър защитен с SSL Certificate, или машина, която хоства множество домейни регистрирани чрез Domain Registration — ето някои съществени най-добри практики за разрешения:

  1. Никога не задавайте 777 на файлове или директории освен ако нямате много специфична, временна причина. Файловете, които могат да бъдат писани от всички, са голям риск за сигурност.
  2. Файловете на уеб сървъра (например под /var/www/) обикновено трябва да бъдат 644 за файлове и 755 за директории, собственост на вашия потребител на приложението.
  3. SSH ключовете трябва да бъдат 600 за частни ключове и 644 за публични ключове. SSH строго налага това.
  4. Конфигурационните файлове, които съдържат пароли или API ключове, трябва да бъдат 600 или 640 най-много.
  5. Използвайте find за одит на разрешенията в цялото дърво на директориите:
   # Find all world-writable files (potential security risk)
   find /var/www -type f -perm -o+w

   # Find all SUID files (for security auditing)
   find / -type f -perm -4000 2>/dev/null

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

ЗадачаКоманда
Списък на разрешенията на файлls -l filename
Списък на разрешенията на всички файлове в директорияls -la /path/to/dir
Проверка на разрешенията на самата директорияls -ld /path/to/dir
Получаване на пълни детайли включително числови разрешенияstat filename
Промяна на разрешенията (символна)chmod u+x filename
Промяна на разрешенията (числова)chmod 755 filename
Промяна на собственика на файлchown user:group filename
Рекурсивна промяна на разрешениятаchmod -R 755 /path/to/dir
Намиране на файлове с достъп за всичкиfind . -perm -o+w -type f

Заключение

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

  • Използвайте ls -l за бърз, четлив от човека преглед на разрешенията на файлове и директории.
  • Използвайте stat когато имате нужда както от символни, така и от числови представяния, заедно с детайли за собственост.
  • Овладейте и двете нотации — символна (rwx) и числова (755, 644) — тъй като различни инструменти и документация използват и двете взаимозаменяемо.
  • Помнете разликата на директориите: битът за изпълнение (x) на директория означава способност да я влезете, не да я изпълните.
  • Бъдете наясно със специалните битове — setuid, setgid и sticky bit — тъй като те се появяват често на производствени системи и имат значителни последици за сигурността.

Правилното управление на разрешенията е крайъгълен камък на Linux сигурността. Независимо дали управлявате личен проект на VPS Hosting или администрирате флот от Dedicated Servers, правилното настройване на разрешенията от началото ще ви спаси от уязвимости в сигурността, счупени приложения и безброй часове отстраняване на неизправности по-нататък.