Перейти к основному содержанию
Рецепты Linux

Main navigation

  • Основы
  • Система
  • Команды
  • Программы
  • Дистро
  • Интерфейсы
  • Устройства
  • Доки
User account menu
  • Войти

Строка навигации

  1. Главная

Права доступа к файлам Linux

Автор: mensh, 22 ноября, 2005
Основы
  • Права доступа

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

Права доступа к файлам и каталогам Linux

Механизмы разграничения доступа, разработанные для системы UNIX в 70-х годах оказались настолько эффективными, что и по сей день успешно выполняют стоящие перед ними задачи.

Содержание

  • Понятие права доступа к файлу
  • Расшифровка прав доступа
  • Зависимость прав доступа
  • Изменение прав доступа
    • Явное указание на предоставление или лишение прав
    • Цифровое представление прав

Понятие права доступа к файлу

В основе механизмов разграничения прав доступа лежат имена пользователей и имена групп пользователей. В Linux каждый пользователь имеет уникальное имя, под которым он входит в систему (логируется). Кроме того, в системе создается некоторое число групп пользователей, причем каждый пользователь может быть включен в одну или несколько групп.

Создает и удаляет группы системный администратор (суперпользователь), он же может изменять состав участников той или иной группы. Члены разных групп могут иметь разные права по доступу к файлам Linux.

Права доступа подразделяются на три типа:

  • чтение — r (сокращение от read);
  • запись — w (сокращение от write);
  • выполнение — x (сокращение от execute).

Эти типы прав доступа могут быть предоставлены трем классам пользователей: владельцу файла, группе, в которую входит владелец, и всем (прочим) пользователям. Владельца и группу файла в дальнейшем можно поменять с помощью команд chown и chgrp.

Разрешение на чтение позволяет пользователю читать содержимое файлов, а в случае каталогов — просматривать перечень имен файлов в каталоге (используя, например, команду ls).

Разрешение на запись позволяет пользователю писать в файл и изменять его. Для каталогов это дает право создавать в каталоге новые файлы и каталоги, или удалять файлы в этом каталоге.

Разрешение на выполнение позволяет пользователю выполнять файлы (как бинарные программы, так и командные файлы). Разрешение на выполнение применительно к каталогам означает возможность выполнять команды, например, cd.

Расшифровка прав доступа

Рассмотрим пример, иллюстрирующий права доступа к файлам Linux. Для того, чтобы команда ls -l не выводила на экран длинный листинг, зададим ей в качестве дополнительного параметра имя конкретного файла:

$ ls -l /etc/wvdial.conf
-rw-rw-r-- 1 root dialout 377 May 15 16:20 /etc/wvdial.conf

Третье поле в примере указывает на владельца файла (root), четвёртое поле указывает на группу, которая владеет этим файлом (dialout), последнее поле — имя файла (file).

Первое поле в представленном примере определяет тип файла и права доступа к нему. Это поле представлено цепочкой символов -rw-rw-r--, которые условно можно разделить на 4 группы.

Первая группа, состоящая из единственного символа, определяет тип файла. Этот символ может принимать следующие значения:

  • - — обычный файл;
  • d — каталог;
  • b — файл блочного устройства;
  • c — файл символьного устройства;
  • s — доменное гнездо (socket);
  • p — именованный канал (pipe);
  • l — символическая ссылка (link).

Далее следуют 3 группы по 3 символа, определяющие права доступа к файлу соответственно для владельца файла, для группы пользователей, и для всех остальных пользователей системы. Замена любого из этих символов прочерком будет означать, что пользователь лишается соответствующего права. В нашем примере права доступа для владельца определены как rw-, что означает, что владелец (root) имеет право читать файл (r), производить запись в этот файл (w), но он не имеет права на выполнение, так как символ (x) заменен прочерком (-). Из этого же примера следует, что аналогичные права имеют члены группы dialout, остальные пользователи имеют право лишь на чтение файла (r--).

Исполняемый файл в Linux может и не иметь никакого расширения, так как все определяется установкой атрибута „исполняемый“, причем право на исполнение может быть предоставлено не всем.

Зависимость прав доступа

Предоставление прав доступа к файлу также зависит от прав доступа к каталогу, в котором находится файл. Например, если пользователь oleg хочет ограничить доступ ко всем своим файлам, он может установить права доступа к своему домашнему каталогу /home/oleg как drwx------, а не устанавливать отдельные права доступа к каждому его файлу и подкаталогу.

Изменение прав доступа

Команда chmod используется для установки прав доступа к файлу (только собственник файла может изменять права доступа к этому файлу). Команду chmod можно использовать в 2-x вариантах.

Явное указание на предоставление или лишение прав

Синтаксис команды: chmod {a,u,g,o}{+,-}{r,w,x} filenames.

Сначала после имени команды ставится один или несколько из следующих символов: a (сокращение от all), u (сокращение от use), g (сокращение от group), или o (сокращение от other). Затем точно определяется, добавляются (+) или убираются (-) права. Наконец, пишется один или несколько символов из следующего набора: r, w, x.

Примеры правильных команд:

# chmod a+r filename

Даёт всем пользователям право на чтение файла.

# chmod +x filename

Аналогично предыдущему примеру. Если никакие из набора символов a, u, g или o не указаны, то это эквивалентно указанию символа a.

# chmod og-x filename

Лишает всех пользователей, кроме собственника, права на исполнение файла.

# chmod u+rwx filename

Разрешает собственнику читать, изменять и исполнять файл.

# chmod o-rwx filename

Запрещает читать, записывать и исполнять файл всем пользователям, кроме собственника файла и пользователей из группы.

Цифровое представление прав

Кодируем символ r цифрой 4, символ w — 2, символ x — 1. Для предоставления пользователям какой-либо набора прав, надо сложить соответствующие цифры. Получив, таким образом, нужные цифровые значения для владельца файла, для группы файла и для всех остальных пользователей, задаем эти три цифры в качестве аргумента команды chmod (ставим эти цифры после имени команды перед вторым аргументом, который задает имя файла). Например, если надо дать все права владельцу (4+2+1=7), право на чтение и запись — группе (4+2=6), и не давать никаких прав остальным, то следует дать такую команду:

# chmod 760 filename

Последние материалы

  • Приложение scanimage
    5 hours ago
  • Утилита sensors
    4 days ago
  • Сканер Rkhunter
    1 week 4 days ago
  • Программа resize2fs
    2 weeks 3 days ago
  • Аудиопроигрыватель QMMP
    3 weeks 1 day ago
RSS feed

Secondary menu

  • О проекте

© 2008–2025 Олег Меньшенин mensh@yandex.ru