Дискреционное разграничение доступа Linux

Автор: | 27.11.2018

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

Один из подходов к разграничению доступа — так называемый дискреционный (от англ, discretion — чье-либо усмотрение) — предполагает назначение владельцев объектов, которые по собственному усмотрению определяют права доступа субъектов (других пользователей) к объектам (файлам), которыми владеют.

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

В примере из листинга ниже при помощи команды ps проиллюстрированы процессы операционной системы, выполняющиеся от лица разных учетных записей.

Субъекты разграничения прав доступа: пользователи и псевдопользователи

john@ubuntu:~$ ps axfu
USER         PID   %CPU      МЕМ          VSZ        RSS   TTY          STAT    START     TIME     COMMAND
root                 2         0.0          0.0               0             0        ?           S            Nov03       0:00        [kthreadd]
root                 3         0.0          0.0               0             0        ?           S            Nov03       0:03        \_ [ksoftirqd/0]

. . .                            . . .                                             . . .
root                 1          0.0          0.0        3672        2018       ?          Ss           Nov03       0:01         /sbin/init
syslog         999         0.0          0.0      31064        1528       ?          Sl            Nov03       0:02        rsyslogd -c5
messageb 1064         0.0         0.0         4244       2024       ?          Ss           Nov03       0:06      dbus-daemon —system

. . .                            . . .                                             . . .
avahi          1154         0.0         0.0         3576        1748       ?          S             Nov03       0:00    avahi-daemon: running…

. . .                            . . .                                             . . .
daemon    1218          0.0        0.0          2472        348        ?          Ss.          Nov03        0:00    atd
nobody     8077         0.0        0.0          6820       1088       ?          S             09:36         0:01     \_ /usr/sbin/dnsmasq…

. . .                            . . .                                             . . .
whoopsie 1279          0.0        0.0       26244       4548        ?          Ssl          Nov03        0:01   whoopsie
root           1847          0.0        0.0         5080        1384       ?          Ss           Nov03        0:00   /usr/lib/postfix/master
postfix      1852          0.0        0.0         4936         1188       ?          S             Nov03        0:00  \_ qmgr -l -t fifo -u
postfix    17763          0.0        0.0         4888         1204      ?          S               14:34         0:00  \_ pickup -l -t fifo -u ,-c

. . .                            . . .                                             . . .
root          1226           0.0        0.0       34040        7204       ?         Ssl           Nov03        0:00   lightdm
root          1274            1.5        0.2        81988        17512    tty7      Ss+          Nov03        14:41  \_ /usr/bin/Х :0 -auth …
root          1641           0.0        0.0        16644         3348      ?          Sl             Nov03       0:00 \_ lightdn -session-child 12 19

john         2000          0.0        0.1        52980         9448      ?         Ssl            Nov03        0:01 \_ gnome-session …
john         2048          0.0        0.0          4080          208       ?         Ss             Nov03        0:00 \_ /usr/bin/ssh-agent …
john         2132            1.2        1.0       392140      83672       ?         Sl             Nov03        11:40  \_ compiz

Владельцы и режим доступа к файлам

В рамках дискреционного разграничения доступа каждому файлу назначен пользователь-владелец и группа-владелец файла.

Владельцы файлов

john@ubuntu:~$ ls -la /etc/profile .profile

-rw-r-/-r—    1     root  root     665   марта    8   2018 /etc/profile

-rw-r—r—      1     john  john    677   марта   23  12:33 .profile

john@ubuntu:~$ stat .profile

. . .                                       . . .                                          . . .
Доступ:    (0644/-rw-r—r—)      Uid: ( 1000/ john)         Gid: ( 1000/ john)

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

Назначение владельцев файлов

john@ubuntu:~$ id

uid=1000(fjohn) gid=1000(john) группы=1000(john),4(adm),20(dialout),…,110(admin)

john@ubuntu:~$ nano README

john@ubuntu:~$ ls -la README

-rw-rw-r—     1   john john        4 марта 27   23:26 README

Изменяются пользователь — владелец файлов только суперпользователем root при помощи команды chown, а группа-владелец — владельцем файла в при помощи команды chgrp, но только на ту, к которой он сам принадлежит.

Смена владельцев файлов

john@ubuntu:~$ ls -la README

-rw-rw-r—      1 john  john  4 марта 27 23:26 README

john@ubuntu:~$ chown mike README

chown: изменение владельца «README»: Операция не позволяется

john@ubuntu:~$ id

uid=1000(john) gid=1000(john) группы=1000(john),4(adm),20(dialout),…,110(admin)

john@ubuntu:~$ chgrp admin README

john@ubuntu:~$ ls -la README

-rw-rw-r—   1 john admin     4   марта 27  23:26 README

john@ubuntu:~$ chgrp daemon README

chgrp: изменение группы для «README»: Операция не позволяется

john@ubuntu:~$ sudo chown mike README

[sudo] password for user: <пароль john’a>

john@ubuntu:~$ ls -la README

-rw-rw-r— 1   mike   admin  4   марта   27 23:26 README

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

Специальный файл устройства терминалов, на которых вход не осуществлен, принадлежит суперпользователю root, например как в случае с терминалом /dev/tty9.

Такие назначения естественным образом делаются при входе пользователей в систему и для того, чтобы они могли распоряжаться правами устройства терминала, через который осуществили вход

 

 

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

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