Определение прав доступа Расшифровка прав доступа для категорий пользователей Особенности прав для файлов Особенности прав для каталогов Хранение информации о правах Алгоритм проверки прав при обращении к файлу Команда Сhmod Символьный способ Числовой способ Права доступа chmod (восьмеричные коды) Специальные биты (атрибуты) Команда Chown Команда Chgrp
Окружение
Linux — это многопользовательская операционная система, где одним из ключевых аспектов является организация прав доступа к файлам и каталогам. Эта функция обеспечивает защиту данных и изоляцию пользователей друг от друга.
Основой системы прав доступа являются пользователи и группы:
каждый пользователь имеет уникальное имя, под которым он входит в систему;
пользователи могут быть включены в одну или несколько групп;
группы создаются, изменяются и удаляются суперпользователем.
Права доступа могут различаться в зависимости от того, к какой группе принадлежит пользователь. Например, группе администраторов может быть предоставлено больше прав, чем группе программистов.
Каждый файл и каталог содержит метаинформацию в своей inode-структуре (индексном дескрипторе), включая:
имя владельца (пользователь, создавший файл);
имя группы, к которой файл принадлежит (группа определяется по групповому идентификатору процесса).
Оба значения — владельца и группу — можно изменить с помощью команд chown и chgrp.
Можно подробнее ознакомиться с назначением прав доступа к файлам и каталогам, просмотрев наши обучающие видео:
на RuTube:
Атрибуты файлов и каталогов в РЕД ОС;
Расширенные права доступа.
в Яндекс.Дзен:
в VK Видео:
На наших каналах можно найти много другой полезной информации.
Права доступа позволяют управлять тем, кто и как может взаимодействовать с файлами и каталогами в системе. Их можно просматривать и изменять как через графический интерфейс, так и через терминал.
Для просмотра прав доступа к файлу через графический интерфейс щелкните правой кнопкой мыши по файлу, выберите пункт «Свойства», перейдите на вкладку «Права». Здесь можно посмотреть текущего владельца и группу, а также настроить разрешения для разных категорий пользователей:
Для просмотра прав доступа к файлу через терминал выполните команду:
ls -l <путь_к_файлу>
Пример:
ls -l /bin/ls -rwxr-xr-x 1 root root 141888 янв 26 2024 /bin/ls
где:
root root — первое значение root — имя владельца, второе root — название группы;
-rwxr-xr-x — первые 10 символов определяют тип файла и права доступа.
Первый символ определяет тип файла. Этот символ в соответствии с возможными типами файлов может принимать такие значения:
- — обычный файл;
d — каталог;
b — блочное устройство;
c — символьное устройство;
s — доменное гнездо (socket);
p — именованный канал (pipe);
l — символьная ссылка (link).
Следующие 9 символов делятся на три блока по 3 символа rwx:
Каждый блок относится к одной из категорий пользователей:
В примере права доступа для владельца определены как rwx, что означает:
владелец root имеет право читать файл (r),
производить запись в этот файл (w),
запускать файл на выполнение (x).
Замена любого из этих символов прочерком будет означать, что пользователь лишается соответствующего права.
В примере права доступа для группы и прочих пользователей определены как r-x:
пользователи имеют право читать файл (r),
не имеют разрешения на запись (-),
могут запускать файл на выполнение (x).
Все остальные пользователи (включая и тех, которые вошли в группу root) лишены права записи в этот файл, т. е. не могут файл редактировать.
Каждый файл может иметь три права: чтение, запись и выполнение. От наличия или отсутствия этих прав зависит, какие действия пользователь сможет выполнять с файлом.
Право на чтение (r) позволяет:
просматривать содержимое файла с помощью команд вроде cat, more, less, head, tail;
cat
more
less
head
tail
открывать файл в любом текстовом редакторе для чтения.
Право на запись (w) позволяет:
изменять содержимое файла;
удалять или дописывать данные;
сохранять правки, внесённые в текстовом редакторе.
Право на выполнение (x) означает, что файл может быть запущен как программа или скрипт:
файл загружается в память и передаётся на исполнение системе;
это может быть двоичный исполняемый файл, скрипт на shell, Python и т. д.
Если выполнить ту же команду ls -l, но в качестве последнего аргумента ей указать не имя файла, а имя каталога, можно увидеть, что для каталогов тоже определены права доступа, причем они задаются теми же самыми символами rwx.
Права для каталогов означают:
чтение (r) — просмотр списка файлов в каталоге;
запись (w) — создание/удаление файлов в каталоге;
выполнение (x) — возможность перехода в каталог (cd).
cd
Для доступа к файлу нужны права x на все родительские каталоги.
Например, выполнив команду ls –l /, получим строку для каталога bin:
drwxr-xr-x 2 root root 2048 дек 22 21:11 bin
По отношению к каталогам трактовка понятий «право на чтение», «право на запись» и «право на выполнение» несколько изменяется.
Право на чтение по отношению к каталогам легко понять, если вспомнить, что каталог — это просто файл, содержащий список файлов в данном каталоге. Следовательно, если пользователь имеет право на чтение каталога, то он может просматривать его содержимое (этот самый список файлов в каталоге).
Право на запись тоже понятно — имея такое право, пользователь может создавать и удалять файлы в этом каталоге, т. е. просто добавлять в каталог или удалять из него запись, содержащую имя какого-то файла и соответствующие ссылки.
Право на выполнение для каталогов означает право переходить в этот каталог. Если владелец хочет предоставить другим пользователям доступ к файлам внутри своего каталога, он должен:
дать им право на выполнение (х) для целевого каталога;
обеспечить право на выполнение для всех родительских каталогов в пути.
Поэтому по умолчанию большинство каталогов имеют права drwxr-xr-x, где право на выполнение установлено для всех категорий пользователей. Для закрытия доступа владелец должен явно отметить это право (например, установив drwxr-x---).
На первый взгляд может показаться, что право на чтение каталога (r) дублирует функционал права на выполнение (x). Однако между ними существуют различия:
Только право на выполнение (--x):
позволяет переходить в каталог (команда cd);
запрещает просмотр содержимого (в ls или файловом менеджере Midnight Commander каталог будет отображаться пустым);
ls
разрешает доступ к файлам, если знать их точные имена;
позволяет переходить в подкаталоги "вслепую" (при наличии соответствующих прав).
Только право на чтение (r--):
позволяет просматривать список файлов;
запрещает переход в каталог (cd не сработает);
блокирует доступ к содержимому файлов.
Информация о типах файлов и правах хранится в 16-битной структуре индексного дескриптора:
4 бита — тип файла;
3 бита — особые свойства исполняемых файлов;
9 бит — права доступа к файлу (разделены на 3 группы по 3 бита). Каждая тройка битов соответствует:
владельцу;
группе;
остальным пользователям.
При этом, если соответствующий бит имеет значение 1, то право предоставляется, а если он равен 0, то право не предоставляется.
В символьной форме записи прав:
значение 1 = право предоставлено (отображается как r/w/x);
Алгоритм проверки прав пользователя при обращении к файлу можно описать следующим образом.
1. Проверяется, является ли пользователь владельцем файла:
если да, используются атрибуты владельца (первая тройка rwx) для определения прав;
rwx
если требуемое право есть — операция разрешается;
если нет — доступ запрещается, и проверка прекращается.
2. Если пользователь не является владельцем, система проверяет, входит ли он в группу, ассоциированную с файлом:
если да, используются права для группы (вторая тройка rwx);
если нужное разрешение есть — операция выполняется;
если нет — доступ запрещается.
3. Если пользователь не входит ни в группу файла, ни является владельцем, то проверяются права для остальных пользователей (третья тройка rwx):
если доступ разрешён — операция выполняется;
если нет — выдаётся ошибка (Permission denied).
Если же пользователь не является владельцем файла и не входит в группу файла, то его права определяются атрибутами для остальных пользователей.
Таким образом, третья группа атрибутов, определяющих права доступа к файлу, относится ко всем пользователям, кроме владельца файла и пользователей, входящих в группу файла.
Для изменения прав доступа к файлам и каталогам используется команда chmod.
chmod
Основной синтаксис команды:
chmod [опции] <установка_прав> <имя_файла>
опции — необязательные параметры, влияющие на поведение команды;
опции
установка_прав — новые права доступа, которые нужно установить;
установка_прав
имя_файла — путь к файлу или каталогу, для которого изменяются права.
имя_файла
Права доступа можно задавать двумя способами.
1. Символьный способ — права указываются с помощью букв (r, w, x).
chmod u+x file.sh
u (user) — владелец файла,
u
+x — добавляет (+) право на выполнение (x).
+x
+
x
chmod g-w,o-r document.txt
g (group) — группа пользователей, которой принадлежит файл,
g
-w — убирает (-) право на запись (w),
-w
-
w
o (others) — все остальные пользователи (не владелец и не группа),
o
-r — убирает (-) право на чтение (r).
-r
r
2. Числовой способ — каждое право кодируется числом (например, 755, 644 и т. д.).
chmod 755 script.sh
7 = 4 (r) + 2 (w) + 1 (x) = rwx — владелец может читать, изменять и запускать файл;
5 = 4 (r) + 0 + 1 (x) = r-x — группа может читать и запускать, но не изменять;
5 = 4 (r) + 0 + 1 (x) = r-x — остальные пользователи могут читать и запускать, но не изменять.
chmod 644 config.cfg
6 = 4 (r) + 2 (w) + 0 = rw- — владелец может читать и изменять, но не запускать;
4 = 4 (r) + 0 + 0 = r-- — группа может только читать;
4 = 4 (r) + 0 + 0 = r-- — остальные пользователи могут только читать.
При использовании символьного способа нужно явно указать, кому какое право дать или кого этого права лишить:
chmod wXp <имя_файла>
где вместо символа w подставляется:
Вместо X ставится:
Вместо p — символ, обозначающий соответствующее право:
Вот несколько примеров использования команды chmod:
chmod a+x <имя_файла>
предоставляет всем пользователям системы право на выполнение данного файла.
chmod go-rw <имя_файла>
удаляет право на чтение и запись для всех, кроме владельца файла.
chmod ugo+rwx <имя_файла>
дает всем права на чтение, запись и выполнение.
Если опустить указание на то, кому предоставляется данное право, то подразумевается, что речь идет вообще обо всех пользователях, т. е. команду:
можно записать таким способом:
chmod +x <имя_файла>
Числовой способ задания прав с помощью команды chmod (наиболее распространенный) основан на использовании восьмеричного представления прав доступа.
Символы прав кодируются следующим образом: r — 4, w — 2, x — 1. Для назначения конкретного набора прав необходимо сложить соответствующие значения.
Полученные три цифры — для владельца, группы и остальных пользователей — указываются после команды chmod, перед именем файла.
Например, для установления всех прав для владельца (4+2+1=7), прав на чтение и запись для группы (4+2=6), а также полного запрета доступа для остальных (0), используется команда:
chmod 760 <имя_файла>
Знание двоичного кодирования восьмеричных цифр позволяет понять, что цифры после имени команды в таком формате представляют собой восьмеричное обозначение 9 бит, задающих права для владельца файла, группы и всех пользователей.
Изменять права доступа к файлу с помощью команды chmod может только владелец файла или суперпользователь. Для изменения прав группы владелец должен дополнительно состоять в соответствующей группе, которой назначаются эти права.
776
chmod 776 /file
chmod -R 776 /folder
775
chmod 775 /file
chmod -R 775 /folder
774
chmod 774 /file
chmod -R 774 /folder
766
chmod 766 /file
chmod -R 766 /folder
755
chmod 755 /file
chmod -R 755 /folder
655
chmod 655 /file
chmod -R 655 /folder
644
chmod 644 /file
chmod -R 644 /folder
Кроме стандартных прав, chmod может управлять тремя специальными атрибутами. Эти биты располагаются в индексной структуре прав и задаются как отдельные флаги поверх обычных прав.
1. Setuid — бит смены идентификатора пользователя. Смысл этого бита состоит в следующем.
Обычно программа, запущенная пользователем, работает с теми же правами доступа, что и сам пользователь. Однако при установленном бите смены идентификатора пользователя (setuid) программа выполняется с правами владельца файла, независимо от того, кто её запустил.
Этот механизм позволяет решать задачи, требующие привилегированного доступа. Например, команда passwd, предназначенная для смены пароля, должна записывать данные в файл /etc/passwd, который принадлежит суперпользователю root и защищён от записи обычными пользователями.
passwd
root
Чтобы решить эту проблему, для исполняемого файла /usr/bin/passwd установлен бит setuid, а его владельцем является root. Благодаря этому при запуске passwd программа получает права root, что позволяет ей записывать изменения в защищённый файл. При этом сама программа следит за безопасностью и разрешает изменять только собственную строку с паролем.
Установить "бит смены идентификатора владельца" может суперпользователь с помощью команды:
chmod +s <имя_файла>
2. Setgid — "бит смены идентификатора группы". Аналогично setuid, но применяется к группе. Программа или создаваемые в каталоге файлы получают группу-владельца файла или каталога, а не пользователя, их создавшего.
3. Sticky — это "бит сохранения задачи" или "sticky bit" (дословно — "бит прилипчивости"). Использовался для удержания программ в памяти после завершения. Сейчас используется в основном для каталогов (например, /tmp), чтобы разрешить удаление файлов в каталоге только их владельцам.
/tmp
Если используется цифровой вариант задания атрибутов в команде chmod, то цифровое значение этих атрибутов должно предшествовать цифрам, задающим права пользователя:
chmod 4775 <имя_файла>
При этом веса этих битов для получения нужного суммарного результата задаются следующим образом:
4 — бит смены идентификатора пользователя,
2 — бит смены идентификатора группы,
1 — бит сохранения задачи.
Если установлен один из специальных битов (setuid, setgid или sticky), это отображается в выводе команды ls -l в виде замены символов прав доступа:
setuid
setgid
sticky
ls -l
Setuid заменяет x в группе прав владельца:
если у владельца есть право на выполнение — x → s
s
если права на выполнение нет — x → S
S
Setgid заменяет x в группе прав группы:
если есть право на выполнение — x → s
если нет — x → S
Sticky заменяет x в группе прав остальных пользователей:
если есть право на выполнение — x → t
t
если нет — x → T
T
Хотя для этих битов нет отдельных позиций в выводе ls -l, они отображаются через специальные символы в соответствующих позициях прав.
ls -l prim1 -rwSrwsrwT 1 kos root 12 Dec 24 23:17 prim1
Команда chown (от change owner) используется для изменения владельца и/или группы файлов и директорий.
chown
chown [опции] <новый_владелец>:<новая_группа> <файл_или_директория>
-R
-v
-c
--reference=файл
chown --reference=file1 file2
Примеры:
1. Смена владельца файла.
sudo chown petr /home/petr/disk.iso
2. Смена владельца и группы.
sudo chown petr:petr /home/petr/disk.iso
3. Смена владельца для директории.
sudo chown petr /home/vasya
4. Рекурсивная смена, включая вложенные файлы и папки.
sudo chown -R petr:petr /home/vasya
Команда chgrp (от change group) используется для изменения группы файлов и директорий.
chgrp [опции] <новая_группа> <файл_или_директория>
--reference=ФАЙЛ
chgrp --reference=file1 file2
Примеры использования:
1. Смена группы для файла.
sudo chgrp developers /home/project/script.sh
2. Рекурсивная смена группы для директории.
sudo chgrp -R admins /var/www/
3. Копирование группы с другого файла.
sudo chgrp --reference=source.txt target.txt
4. Просмотр изменений (с опцией -v).
sudo chgrp -v users document.pdf
Сравнение chown и chgrp:
chgrp
chown меняет владельца и/или группу;
chgrp меняет только группу.
Пример эквивалентных команд:
sudo chown :developers file.txt # через chown
sudo chgrp developers file.txt # через chgrp
Для рекурсивного изменения прав в сложных структурах используйте find:
sudo find /path/to/dir -type f -exec chgrp team {} \;
Дата последнего изменения: 16.09.2025
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.
Нажимая «Отправить запрос», вы соглашаетесь с условиями обработки персональных данных.
Вы будете получать только актуальную информацию по обновлению безопасности
Подписываясь на уведомления, вы соглашаетесь с условиями обработки персональных данных.
На ваш почтовый адрес отправлено письмо с подтверждением подписки.