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



У файлов и каталогов есть ряд атрибутов, хранящихся в inode: владелец и группа владельца, права доступа к файлу или каталогу, время последнего изменения и т. п. Полный вывод атрибутов мы можем посмотреть, выполнив команду ls -l. На скриншоте вы видите вывод работы команды ls -l в домашней директории пользователя user1:

Первый столбец вывода покажет права доступа к файлу или каталога. Символы столбца можно условно разделить на четыре группы:

  1. Первая группа, состоящая из единственного символа (самый первый символ в строке), определяет тип файла согласно следующему списку:

- — обычный файл;

d — каталог;

b — файл блочного устройства;

c — файл символьного устройства;

s — socket;

p — именованный канал (pipe);

l — символическая ссылка (link).

Следующие три группы состоят из трёх символов rwx, которые определяют права доступа к файлу или каталогу следующим образом:

  1. Первый блок rwx определяет права доступа для владельца файла или каталога, буквенное обозначение — u .
  2. Второй блок rwx определяет права доступа для владельца группы, участники которой имеют доступ к файлу или каталогу согласно установленным разрешениям, буквенное обозначение — g.
  3. Третий блок rwx определяет права доступа для всех остальных пользователей, не подходящих ни под одно определение, буквенное обозначение — o.

Символы в блоках — это права доступа. Они расшифровываются следующим образом:

r (read ) — возможность открытия и чтения файла или просмотр содержимого каталога.

w (write ) — возможность изменить содержимое файла или возможность создавать, удалять или переименовывать объекты в каталоге.

x (execute ) — возможность выполнить файл (запустить программу, скрипт) или возможность войти в каталог и получить атрибуты объектов.

Права доступа можно представить в численном виде, используя восьмеричную систему счисления, согласно таблице:

  r w x   r w x    
  0 0 0   0
x x   0 0 1   1
w w   0 1 0   2
wx w x   0 1 1   3
r r   1 0 0   4
rx r x   1 0 1   5
rw r w   1 1 0   6
rwx r w x   1 1 1   7

 

Предоставление прав пользователю в таком виде происходит путём сложения соответствующих чисел в таблице.

Для назначения прав доступа к файлам и каталогам используется команда chmod. Важно помнить, что chmod не изменяет права доступа к символическим ссылкам. Задавать права доступа можно, используя как буквенную запись прав, так и численную.

Буквенная запись

chmod [объект назначения] [+|-| =] [права доступа] [файл | каталог ], где:

[объект назначения] — один из типов пользователей: владелец файла (u), группа-владелец (g), все остальные (o);

[+|-|=] — одно из действий: «+» — добавить указанные права к существующим правам объекта, «-» — убрать указанные права с объекта, «=» — заменить права объекта на указанные;

[права доступа] — это права доступа rwx из предыдущего пункта;

[файл | каталог ] — файл или каталог, которому назначаем права доступа.

Например, chmod u+x file добавит владельцу файла право на выполнение, chmod g-w file уберёт у группы-владельца право на запись в файл, chmod go=r file сменит права группы-владельца и всех остальных на право только чтения файла.

Для каталогов команда chmod используется таким же образом, как и для файлов, но важно учитывать, что, если мы хотим присвоить права не только каталогу, но и объектам внутри каталога, необходимо использовать параметр - R (рекурсивно). Chmod -R 655 dir1 присвоит права чтение-запись чтение-исполнение для каталога dir 1 и для всего содержимого этого каталога, файлы в этом каталоге получат право на выполнение для группы-владельца и всех остальных.

Численная запись

Такой принцип задания прав доступа наиболее распространён:

chmod [права доступа в численном виде] [файл | каталог ]

 

Например, chmod 766 file присвоит права чтение-запись-выполнение для владельца и чтение-запись для группы-владельца и всех остальных.

Специальные биты

Кроме вышеперечисленных атрибутов прав доступа к файлам и каталогам, существуют ещё специальные биты SUID , SGID , Sticky.

SUID (set user ID upon execution ) — установка ID пользователя во время выполнения. Разрешает пользователям запускать файл на исполнение с правами того пользователя, которому принадлежит данный файл. В символьной записи присваивается следующим образом: chmod u+s file, где s — bit suid. В численной записи имеет значение 4000, например chmod 4755 file присвоит права на чтение-запись-выполнение для владельца, права на чтение-выполнение — для группы владельца и всех остальных, 4 — выставит bit suid. SUID работает с файлами.

SGID (set group ID upon execution ) — установка ID группы во время выполнения, применяется преимущественно к каталогам. Данный атрибут устанавливает идентификатор группы каталога, а не группы владельца, который создал файл в этом каталоге. В символьной записи присваивается следующим образом: chmod g+s dir1, где s — bit sgid. В численной записи имеет значение 2000, например chmod 2665 dir1 присвоит права на чтение-запись-просмотр для владельца и группы владельца и чтение-просмотр для всех остальных, а также установит на каталог bit sgid — 2.

Sticky — дополнительный атрибут, который устанавливается для каталогов. Файлы из каталога с таким битом может удалить только владелец (пользователь, создавший этот файл). В символьной записи присваивается следующим образом: chmod +t dir1 добавит к каталогу bit sticky. В численной записи имеет значение 1000, например chmod 1666 dir1 установит на каталог права на чтение-запись-просмотр для всех типов пользователей, но при этом удалять файлы могут только создатели благодаря биту sticky 1.

 

 

Дополнительные материалы

Типы файловых систем Linux

inode и каталоги

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

Используемые источники

Робачевский Андрей М. Операционная система Unix

В.Костромин, "Linux для пользователя",изд."БХВ-Петербург", 2002 г., серия "Самоучитель"

Права доступа и специальные биты в Ubuntu


Дата добавления: 2021-12-10; просмотров: 92; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!