В Linux дискреционные механизмы разграничения доступа (DAC, discretionary access control) являются основными и всегда активны.
Их использование предполагает, что владельцы объектов правильно распоряжаются правами доступа к находящимся в их владении объектам.
Например, пользовательские закрытые ключи, используемые службой W:[SSH], в каталоге ~/.ssh или ключи W:[GnuPG] в каталоге ~/.gnupg, и прочие секретные данные (подобные ключи доступа в банковские информационные системы)- должны быть недоступны никому, кроме их владельца.
Запускаемые пользователем программы выполняются от лица запустившего их пользователя и имеют доступ к файлам согласно установленным режимам или спискам доступа.
В примере из листинга ниже клиент ssh, браузер firefox и коммуникатор skype имеют абсолютно равные возможности по чтению и модификации пользовательского закрытого ключа ~/.ssh/id_rsa, тогда как настоящим «владельцем» ключей является только ssh.
Необходимость MAC
john@ubuntu:~$ ls -l .ssh
итого 8
-rw——— 1 john john 1675 нояб. 4 16:06 id_rsa
-rw-r—r— 1 john john 393 нояб. 4 16:06 id_rsa.pub
john@ubuntu:~$ ps fux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
john 20650 0.0 0.1 13488 8576 pts/0 S 16:08 0:00 -bash
john 20943 0.0 0.0 6668 2284 pts/0 S+ 16:19 0:00 \_ ssh mike@grex.org
. . . . . . . . .
john 21094 13.1 1.5 592676 127820 pts/2 Rl+ 16:27 0:09 /usr/lib/firefox/firefox
. . . . . . . . .
john 21790 29.7 2.1 575000 172084 ? Sl 16:38 0:09 skype
Абсолютно естественно предполагать, что программы firefox и skype не имеют никаких намерений доступа к пользовательским ключам SSH.
Можно даже доверять программе firefox, штатно установленной из доверенного источника (дистрибутива), где она была изготовлена из открытых исходных текстов, подлежащих верификации. Однако нет никаких оснований доверять закрытому skype, поставляемому в бинарном виде.
Более того, предоставлять доступ программам firefox и skype к SSH-ключам пользователя нет никакой необходимости, во-первых, просто потому, что это выходит за рамки набора минимально необходимых условий их целевого функционирования.
Во-вторых, практически в любой программе есть ошибки, используя которые злоумышленник может осуществлять непреднамеренные действия в свою пользу.
Таким воздействиям особенно подвержены программы, использующие сетевой обмен с недоверенной внешней средой — клиенты и серверы сетевых служб операционной системы.
Тем временем, дискреционный подход и механизмы служат для разграничения доступа разных пользователей к файлам, но никак не предназначены для разграничения доступа программ одного и того же пользователя к разным файлам этого пользователя.
Для разграничения доступа субъектов — программ к объектам — файлам дерева каталогов используют так называемый мандатный (от англ, mandatory — обязательный или принудительный) подход (MAC, mandotary access control), предполагающий следование обязательным правилам доступа к файлам, назначаемым администраторами системы.
Правила доступа строятся на основе знания о внутреннем устройстве программ и представляют собой описание набора минимально необходимых условий их целевого функционирования.
Таким образом, в мандатных правилах, ограничивающих доступ к SSH-ключам пользователя, только программе ssh должен быть разрешен доступ для непосредственного выполнения своих прямых функций, а программам firefox и skype в доступе к SSH-ключам должно быть отказано.