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

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

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

 

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

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

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

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

john@ubuntu:/srv/kingdom$ ls -lad .

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

john@ubuntu:/srv/klngdom$ id

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

john@ubuntu:/srv/klngdom$ mkdir stash

john@ubuntu:/srv/kingdom$ chmod o= stash/

john@ubuntu:/srv/kingdom$ ls -lad stash/

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

john@ubuntu:/srv/kingdom$ id mike

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

john@ubuntu:/srv/klngdom$ setfacl -m u:mike:rwx stash/

john@ubuntu:/srv/klngdom$ ls -lad stash/

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

john@ubuntu:/srv/kingdom$ getfacl stash/

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

user::rwx

user:mike:rwx

group::rwx

mask:: rwx

other::—

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

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

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

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

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

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

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

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

john@ubuntu:/srv/kingdom$ ls -lad stash/

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

john@ubuntu:/srv/kingdori$ getfacl stash/

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

user:mike: rwx

group::rwx

mask:: rwx

other::—

john@ubuntu:/srv/kingdom$ chmod g-w stash/

john@ubuntu:/srv/kingdom$ ls -lad stash/

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

john@ubuntu:/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); которые будут унаследованы файлами, создающимися в этом каталоге.

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

john@ubuntu:/srv/klngdom$ cd stash/

john@ubuntu:/srv/klngdom$ umask 0007

john@ubuntu:/srv/ktngdon/stash$ touch README

john@ubuntu:/srv/ktngdon/stash$ ls -la README

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

john@ubuntu:/srv/klngdon/stash$ id mike

john@ubuntu: /srv/kingdon/stash$ setfacl -m d:u:mike:rw .

john@ubuntu:/srv/kingdon/stash$ getfacl .

# file:  .

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

default:user::rwx

default: user: mike: rw-

default:group::rwx

default-.mask::rwx

default:other::—

john@ubuntu:/srv/klngdon/stash$ touch README. mike

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

# file: README.mike

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

user:mike:rw-

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

 

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