Найти в Дзене
UFO.Hosting

Как посмотреть права доступа к файлам в Linux

Когда в Linux что-то «не открывается» или «не запускается», очень часто дело не в программе, а в правах доступа. Файл есть, путь правильный, а вот разрешений не хватает. Поэтому умение быстро посмотреть права — базовый навык для любого пользователя Linux, не только для админов. Давайте разберёмся, как узнать, кто и что может делать с файлом или каталогом. А по промокоду DZEN вы сможете получить скидку при заказе выделенных и виртуальных серверов от UFO.Hosting. Используйте его при покупке услуги и получите надежную базу для развития ваших проектов. Что вообще такое права доступа Linux — многопользовательская система. Для каждого файла и каталога у неё есть три ключевых параметра: Владелец — обычно пользователь, который создал файл. Группа — набор пользователей, для которых можно задать общий набор прав. Остальные — все прочие пользователи системы. Для каждой из этих категорий задается отдельный набор разрешений: можно ли файл читать, менять, запускать и заходить в каталог. Всё это хра
Оглавление

Когда в Linux что-то «не открывается» или «не запускается», очень часто дело не в программе, а в правах доступа. Файл есть, путь правильный, а вот разрешений не хватает. Поэтому умение быстро посмотреть права — базовый навык для любого пользователя Linux, не только для админов.

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

А по промокоду DZEN вы сможете получить скидку при заказе выделенных и виртуальных серверов от UFO.Hosting. Используйте его при покупке услуги и получите надежную базу для развития ваших проектов.

Что вообще такое права доступа

Linux — многопользовательская система. Для каждого файла и каталога у неё есть три ключевых параметра:

  1. Владелец — обычно пользователь, который создал файл.
  2. Группа — набор пользователей, для которых можно задать общий набор прав.
  3. Остальные — все прочие пользователи системы.

Для каждой из этих категорий задается отдельный набор разрешений: можно ли файл читать, менять, запускать и заходить в каталог. Всё это хранится в файловой системе и как раз отображается в виде «rw-r--r--» и похожих комбинаций.

Основная команда: ls -l

Самый простой способ посмотреть права — воспользоваться длинным форматом списка файлов:

ls -l

Пример вывода:

-rwxr-xr-- 1 viktor editors 4096 Dec 10 10:15 backup.sh

-rw-r--r-- 1 viktor viktor 1024 Dec 10 09:30 notes.txt

drwxr-x--- 2 viktor viktor 4096 Dec 10 08:00 projects

Разберём первую строку по частям:

  • -rwxr-xr-- — права доступа и тип файла
  • 1 — количество жёстких ссылок
  • viktor — владелец
  • editors — группа
  • 4096 — размер
  • дата и время — когда файл изменяли последний раз
  • backup.sh — имя файла

Нас сейчас интересует первая часть: -rwxr-xr--.

Как читать строку вида -rwxr-xr--

Строка прав всегда состоит из 10 символов:

Первый символ обозначают тип файла:

  • «-» — обычный файл;
  • «d» — каталог (directory);
  • «l» — символическая ссылка.

Иногда встречаются и другие варианты, но для повседневной работы чаще всего встречаются эти

Остальные 9 символов делятся на три блока:

  • 2–4 символ: права владельца;
  • 5–7 символ: права группы;
  • 8–10 символ: права остальных.

Разберем, что означает -rwxr-xr-- из примера выше:

  • rwx — владелец может читать, изменять и запускать файл
  • r-x — пользователи из группы могут читать и запускать, но не изменять
  • r-- — все остальные могут только читать

Чем права у каталогов отличаются от прав у файлов

Для каталогов буквы те же (r, w, x), но смысл немного другой:

  • r — можно просматривать список файлов в каталоге
  • w — можно создавать и удалять файлы внутри каталога
  • x — можно «входить» в каталог, то есть обращаться к его содержимому по пути

Например, строка drwxr-x--- означает следующее:

  • d — это каталог;
  • владелец: rwx — может всё;
  • группа: r-x — может зайти в каталог и увидеть список файлов;
  • остальные: --- — никакого доступа.

Если каталогу не хватает x, то вы не сможете зайти в него, даже имея r.

Как посмотреть права конкретного файла или каталога

Если вас интересует не весь список, а один объект, можно указать путь:

ls -l /путь/к/файлу

Например:

ls -l /home/viktor/notes.txt

Для каталога важно различать:

  • ls -l каталог — покажет содержимое каталога с правами каждого файла
  • ls -ld каталог — покажет права самого каталога, а не его содержимого

Пример:

ls -ld projects

drwxr-x--- 2 viktor viktor 4096 Dec 10 08:00 projects

Если нужно посмотреть права рекурсивно для всех вложенных файлов и папок:

ls -lR /путь/к/каталогу

Как понять, кто именно имеет доступ

Когда вы смотрите на вывод ls -l, обратите внимание на столбцы после прав:

-rw-r--r-- 1 viktor editors 1024 Dec 10 09:30 notes.txt

Здесь:

  • viktor — владелец файла
  • editors — группа, к которой этот файл относится

Дальше действуют правила:

  • права для владельца — первые три буквы после типа (rw-)
  • права для группы — следующие три (r--)
  • права для остальных — последние три (r--)

Если вы вошли в систему как пользователь viktor, к вам применяются права владельца. Если вы другой пользователь, но входите в группу editors, для вас будут действовать права группы. В остальных случаях — права «остальных».

Итоги

Чтобы узнать права доступа к файлам и каталогам в Linux, достаточно нескольких команд:

  • ls -l — посмотреть права и владельцев в текущем каталоге
  • ls -ld каталог — посмотреть права самого каталога
  • stat файл — увидеть права в символьной и числовой форме, плюс дополнительную информацию

Понимание того, что означает строка вроде drwxr-x---, помогает быстро разобраться, почему файл не открывается, скрипт не запускается или пользователь не может зайти в каталог.

А если в какой-то момент вам понадобится не только смотреть, но и менять права, следующим шагом будет знакомство с командами chmod, chown и chgrp. Но это уже тема для отдельной подробной инструкции.