Linux Advanced 9 мин • 28.09.2026 г.

Файлови права в Linux: chmod, chown, chgrp и практични примери

Подробно ръководство за файловите права в Linux – как работят потребителите, групите, chmod, chown, chgrp, числовите стойности и често срещаните проблеми с достъпа.

Файлови права в Linux: chmod, chown, chgrp и практични примери

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

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

Какво представляват файловите права в Linux?

Всеки файл и всяка директория в Linux имат:

  • собственик (owner)
  • група (group)
  • набор от права за собственика
  • набор от права за членовете на групата
  • набор от права за всички останали потребители

Трите основни права са:

  • r – read, или право за четене
  • w – write, или право за запис и промяна
  • x – execute, или право за изпълнение

Можете да видите правата на файловете в текущата директория с командата:

ls -l

Примерен резултат:

-rw-r--r-- 1 ivan developers 2450 Sep 28 14:00 article.md
drwxr-xr-x 2 ivan developers 4096 Sep 28 14:05 images
-rwxr-xr-x 1 ivan developers  320 Sep 28 14:10 backup.sh

Първата част на всеки ред съдържа информация за типа на обекта и неговите права:

-rw-r--r--

Тя може да бъде разделена така:

- rw- r-- r--
│ │   │   └─ права за останалите потребители
│ │   └───── права за групата
│ └───────── права за собственика
└─────────── тип на обекта

В този пример:

  • първият символ - означава обикновен файл
  • rw- означава, че собственикът може да чете и редактира файла
  • r-- означава, че членовете на групата могат само да го четат
  • последното r-- означава, че всички останали потребители могат само да го четат

Ако първият символ е d, това означава директория:

drwxr-xr-x

Други възможни символи са:

  • l – символна връзка (symbolic link)
  • c – символно устройство
  • b – блоково устройство
  • s – socket
  • p – named pipe

Разлика между права за файл и директория

Една от най-честите грешки е да се приемат правата за файлове и директории по един и същ начин. Символите са същите, но значението им има важни различия.

При обикновен файл:

  • r позволява съдържанието му да бъде прочетено
  • w позволява съдържанието му да бъде променено
  • x позволява файлът да бъде стартиран като програма или скрипт

Например shell скриптът backup.sh трябва да има право за изпълнение, ако искате да го стартирате директно:

./backup.sh

При директория:

  • r позволява да видите списъка с файлове в нея
  • w позволява създаване, изтриване и преименуване на файлове в нея
  • x позволява да влезете в директорията и да достъпвате файловете в нея

Това означава, че директория без x може да създаде объркващи проблеми. Може да знаете, че даден файл съществува, но да не можете да го отворите, защото нямате право да „преминете“ през директорията, в която се намира.

Проверете правата на директория с:

ls -ld /path/to/directory

Използването на -d е важно, защото без него ls ще покаже съдържанието на директорията, а не нейните собствени права.

Какво означават chmod, chown и chgrp?

Трите най-важни команди при управление на файлови права са:

  • chmod – променя правата за достъп
  • chown – променя собственика на файл или директория
  • chgrp – променя групата на файл или директория

Преди да използвате тези команди, винаги е добра идея да проверите текущото състояние:

ls -l filename

За директории използвайте:

ls -ld directory_name

Ако работите със системни файлове, файлове на уеб сървър или съдържание, собственост на друг потребител, най-вероятно ще са ви нужни администраторски права чрез sudo.

Промяна на права с chmod

Командата chmod идва от „change mode“ и служи за промяна на файловите права. Тя може да се използва по два основни начина:

  • със символен запис
  • с числов, или октален запис

Може да ви е интересно още: Командата cp в Linux

Символен запис

Символният синтаксис е удобен, когато искате да добавите или премахнете конкретно право, без да променяте останалите.

Основните обозначения са:

  • u – user, собственикът
  • g – group, групата
  • o – others, останалите потребители
  • a – all, всички

Операторите са:

  • + – добавяне на право
  • - – премахване на право
  • = – задаване на точен набор от права

Например, за да направите shell скрипт изпълним, най-често се използва:

chmod +x backup.sh

Командата добавя право за изпълнение (x) към файла backup.sh. След това скриптът може да бъде стартиран директно:

./backup.sh

По-конкретният вариант:

chmod u+x backup.sh

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

Числов запис

Числовият запис е много разпространен в Linux администрацията, при работа със сървъри, скриптове и deployment процеси. При него всяко право има числова стойност:

Право Стойност
r 4
w 2
x 1

Стойностите се събират за всяка от трите категории: собственик, група и останали.

Например:

  • 7 = 4 + 2 + 1 = rwx
  • 6 = 4 + 2 = rw-
  • 5 = 4 + 1 = r-x
  • 4 = r--
  • 0 = ---

Командата:

chmod 644 article.md

задава следните права:

rw-r--r--

Тоест:

  • собственикът може да чете и редактира
  • групата може да чете
  • останалите могат да четат

Това е често използвана настройка за HTML, CSS, JavaScript, Markdown, изображения и други публично четими файлове на статичен сайт.

Следната команда:

chmod 755 backup.sh

създава права:

rwxr-xr-x

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

Често използвани стойности на chmod

Следните настройки са полезни в ежедневната работа:

Команда Права Типична употреба
chmod 644 file.txt rw-r--r-- Текстови файлове, HTML, CSS, JavaScript, Markdown
chmod 600 secret.txt rw------- Частни ключове, конфигурации с пароли, чувствителни файлове
chmod 755 script.sh rwxr-xr-x Скриптове и изпълними файлове
chmod 755 directory rwxr-xr-x Публично достъпни директории
chmod 700 private-dir rwx------ Лични директории, достъпни само за собственика
chmod 775 shared-dir rwxrwxr-x Директории за съвместна работа в група

Избягвайте автоматичното използване на:

chmod 777 filename

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

rwxrwxrwx

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

Вместо 777, установете кой трябва да има достъп и настройте правилно собствеността, групата и минимално необходимите права.

Смяна на собственик с chown

Всеки файл в Linux има собственик. Обикновено това е потребителят, който го е създал. Можете да видите собственика и групата във втория и третия стълб на резултата от ls -l:

-rw-r--r-- 1 ivan developers 2450 Sep 28 14:00 article.md

В този случай:

  • ivan е собственикът
  • developers е групата

За да смените собственика, използвайте:

sudo chown newuser filename

Пример:

sudo chown nginx index.html

Това прави потребителя nginx собственик на файла index.html.

Можете едновременно да зададете собственик и група:

sudo chown user:group filename

Например:

sudo chown ivan:developers project-file.md

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

sudo chown -R ivan:developers /var/www/my-site

Опцията -R означава рекурсивно действие. Тя прилага промяната към директорията, всички файлове и всички поддиректории в нея.

Използвайте -R внимателно. Грешно зададен път, особено в комбинация със sudo, може да промени собствеността на голям брой важни системни файлове.

Смяна на група с chgrp

Ако искате да промените само групата, използвайте chgrp:

sudo chgrp developers project-file.md

За рекурсивна промяна на групата в цяла директория:

sudo chgrp -R developers /var/www/my-site

Групите са особено полезни, когато по един проект работят няколко потребители. Вместо да давате достъп на всеки поотделно, можете да добавите потребителите в обща група и да зададете подходящи права за нея.

Например, ако директорията има следните права:

drwxrwxr-x

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

Можете да проверите към кои групи принадлежи текущият потребител с:

groups

За конкретен потребител:

groups username

Практически примери при работа със сайтове

При статичен сайт често искате вие да можете да редактирате файловете, а уеб сървърът да може да ги чете. Един разумен вариант за файловете може да бъде:

find /var/www/my-site -type f -exec chmod 644 {} \;

За директориите:

find /var/www/my-site -type d -exec chmod 755 {} \;

Това задава:

  • 644 за обикновените файлове
  • 755 за директориите

Причината да използвате различни стойности е, че директориите обикновено се нуждаят от x, за да могат потребителите и услугите да влизат в тях. Обикновените HTML, CSS и Markdown файлове не трябва да бъдат изпълними.

Ако сайтът се управлява от конкретен потребител и група, можете първо да зададете правилната собственост:

sudo chown -R ivan:www-data /var/www/my-site

След това приложете ограничени права според реалната нужда. Не използвайте една и съща команда за всеки сървър без проверка, защото потребителят на уеб услугата може да бъде www-data, nginx, apache или друг, според дистрибуцията и конфигурацията.

Как да диагностицирате грешка Permission denied

Когато получите съобщение Permission denied, не бързайте веднага с chmod 777. Проверете проблема последователно.

Първо вижте правата и собствеността на файла:

ls -l filename

След това проверете директорията, в която се намира:

ls -ld /path/to/directory

Ако файлът е във вложени директории, проверете целия път:

namei -l /path/to/file

Командата namei -l е много полезна, защото показва правата за всяка директория по пътя до файла. Така може да откриете, че самият файл има правилни права, но някоя родителска директория не позволява достъп.

Проверете и с кой потребител сте влезли:

whoami

Ако изпълнявате команда през уеб приложение, cron задача, Docker контейнер или systemd услуга, реалният потребител може да е различен от този във вашия терминал. В такъв случай трябва да проверите кой потребител изпълнява конкретния процес.

Полезни правила за безопасност

Файловите права не са просто техническа настройка. Те са важна част от сигурността на системата и на вашите проекти.

Следвайте няколко добри практики:

  • Давайте само необходимите права, а не максимални права „за всеки случай“
  • Използвайте 600 за файлове с пароли, SSH ключове и чувствителни конфигурации
  • Използвайте 644 за повечето публично четими файлове
  • Използвайте 755 за директории и скриптове, които трябва да се изпълняват
  • Проверявайте собствеността с ls -l, преди да правите промени
  • Бъдете много внимателни с sudo, chmod -R и chown -R
  • Не използвайте 777, освен ако не разбирате напълно последствията и ситуацията е временно контролирана
  • Правете резервно копие на важни конфигурационни файлове преди промени

Например, преди да редактирате права на конфигурационен файл, можете да направите копие:

cp config.php config.php.backup

Така ще имате лесен вариант за възстановяване, ако сгрешите настройките или съдържанието на файла.

Заключение

Файловите права в Linux изглеждат сложни само докато не свикнете с основната им логика: собственик, група, останали потребители и трите действия четене, запис и изпълнение.

Най-важните команди са ls -l за проверка, chmod за промяна на права, chown за смяна на собственик и chgrp за смяна на група. В повечето случаи правилното решение не е да дадете пълни права на всички, а да определите кой точно трябва да има достъп и какъв достъп реално му е необходим.

С практиката ще започнете бързо да разпознавате типичните стойности като 644, 755 и 600. Това ще ви помогне да работите по-уверено със скриптове, сайтове, сървъри, архиви и лични файлове в Linux.