Списки контроля доступа POSIX в ОС Linux

Режим доступа к файлу (access mode), определяющий базовые разрешения r, w и х только для трех субъектов доступа (владельца, группы-владельца и всех остальных), не является достаточно гибким и удобным инструментом разграничения доступа.

Списки контроля доступа POSIX в ОС Linux

 

Списки контроля доступа (W: [ACL], access control lists), согласно стандарту POSIX.1e, расширяют классический режим доступа к файлу дополнительными записями, определяющими права доступа для явно указанных пользователей и групп.

Для просмотра и модификации записей в списках доступа используются утилиты getfacl и setfacl соответственно.

В примере ниже для всех «остальных» (не входящих в группу candy) пользователей отзываются все права на каталог /srv/kingdom/stash, но для отдельного пользователя mike (не являющегося членом группы candy) назначаются права чтения, модификации и прохода в него rwx.

Списки контроля доступа

[email protected]:/srv/kingdom$ ls -lad .

drwxrwsr-t   2 bubblegum   candy 4096 окт. 23 21:19 .

[email protected]:/srv/klngdom$ id

uid=1001(john) gld=1001(john) группы=1001(john) ,1007(candy)

[email protected]:/srv/klngdom$ mkdir stash

[email protected]:/srv/kingdom$ chmod o= stash/

[email protected]:/srv/kingdom$ ls -lad stash/

drwrws—  2 john   candy 4096 нояб. 4 13:05 stash/

[email protected]:/srv/kingdom$ id mike

uid=1002(mike) gld=1002(mike) группы=1002(mike)

[email protected]:/srv/klngdom$ setfacl -m u:mike:rwx stash/

[email protected]:/srv/klngdom$ ls -lad stash/

drwxrws—-  2 john  candy 4096 нояб. 4 13:05 stash/

[email protected]:/srv/kingdom$ getfacl stash/

. . .                        . . .                              . . .                                . . .                                   . . .

user::rwx

user:mike:rwx

group::rwx

mask:: rwx

other::—

Групповая маска

С расширением множеств субъектов, для которых определены права доступа при помощи списков контроля доступа, возникает вопрос об их смысловой совместимости с режимом доступа, в котором определены всего три множества: пользователь-владелец, группа-владелец и все остальные.

Программы, работающие в соответствии с режимом доступа, считают, что если и существует некоторое количество «выделенных» субъектов со специально определенными правами, отличными от «всех остальных», то все эти субъекты входят в группу владельцев.

Списки контроля доступа позволяют «выделять» субъектов из числа любых пользователей и групп и. определять их права произвольным образом. Когда программа, работающая в соответствии с режимом доступа, назначает права группе-владельцу, она вправе считать что все «выделенные» субъекты будут ограничены этими правами.

Именно поэтому в список контроля доступа добавлена групповая маска прав, определяющая ограничения «выделенных» субъектов (называемых групповым классом субъектов) в их индивидуальных правах.

В примере из листинга ниже каталогу, которому определены индивидуальные права rwx для пользователя mike в списке контроля доступа, изменяют права группы-владельцев классического режима доступа.

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

Групповая маска ACL

[email protected]:/srv/kingdom$ ls -lad stash/

drwxrws—+ 2 john candy 4096 нояб. 4 13:05 stash/

[email protected]:/srv/kingdori$ getfacl stash/

. . .                        . . .                                . . .                          . . .                                . . .
user::rwx

user:mike: rwx

group::rwx

mask:: rwx

other::—

[email protected]:/srv/kingdom$ chmod g-w stash/

[email protected]:/srv/kingdom$ ls -lad stash/

drwxr-s—+  2 finn candy 4096 нояб. 4 13:05 stash/

[email protected]:/srv/kingdon$ getfacl stash/

. . .                        . . .                                . . .                          . . .                                . . .

user::rwx

user:mike:rwx                                        #effective:r-x
group::rwx                                              #effective:r-x
mask::r-x

other::—

Права по умолчанию

При создании новых файлов в каталогах с индивидуальными правами пользователей в списках доступа зачастую складывается ситуация, когда пользователи (имеющие доступ в каталоги) не получают нужных прав доступа к создаваемым файлам в этих каталогах.

В большинстве случаев это противоречит здравому смыслу, т. к. все файлы некоторого каталога являются в определенном смысле «общими» для множества пользователей, которым разрешен доступ в сам каталог.

В примере из листинга ниже в каталоге stash, куда пользователю mike предоставлен индивидуальный доступ при создании файла readme, он в силу SGID для каталога передается группе candy. В группу candy пользователь mike не входит (именно поэтому ему назначены индивидуальные права), в результате чего файл ему никак не будет доступен.

Проблема решается назначением каталогу stash прав доступа «по умолчанию» (default); которые будут унаследованы файлами, создающимися в этом каталоге.

Права по умолчанию

[email protected]:/srv/klngdom$ cd stash/

[email protected]:/srv/klngdom$ umask 0007

[email protected]:/srv/ktngdon/stash$ touch README

[email protected]:/srv/ktngdon/stash$ ls -la README

-rw-rw—-  1 john                       candy  0 нояб.  4   14:16 README

[email protected]:/srv/klngdon/stash$ id mike

[email protected]: /srv/kingdon/stash$ setfacl -m d:u:mike:rw .

[email protected]:/srv/kingdon/stash$ getfacl .

# file:  .

. . .                         . . .                               . . .                                   . . .                                . . .

default:user::rwx

default: user: mike: rw-

default:group::rwx

default-.mask::rwx

default:other::—

[email protected]:/srv/klngdon/stash$ touch README. mike

[email protected]:/srv/klngdon/stash$ ls -l README. mike
-rw-rw—-+  1          john           candy              0 нояб.           4     14:17 README.mike
[email protected]:/srv/kingdom/stash$ getfacl README. mike

# file: README.mike

. . .                         . . .                               . . .                                   . . .                                . . .

user:mike:rw-

. . .                         . . .                               . . .                                   . . .                                . . .

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *