В 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.
Такие назначения естественным образом делаются при входе пользователей в систему и для того, чтобы они могли распоряжаться правами устройства терминала, через который осуществили вход