15%

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

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

Използвайте код:

Skills
За начало
16.08.2025

Как да проверите разрешенията на файлове в 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 включва скрити файлове (тези, които започват с точка). Това е особено полезно при одит на директориите на уеб сървъра в Shared Web Hosting или 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--
  • ID на потребител (UID) и ID на група (GID) с техните човешки четими имена

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

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

Разрешенията в 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.

15%

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

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

Използвайте код:

Skills
За начало