Механизмы разграничения доступа linux

Права доступа к файлам Linux

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

Права доступа к файлам и каталогам Linux

Механизмы разграничения доступа, разработанные для системы UNIX в 70-х годах оказались настолько эффективными, что и по сей день успешно выполняют стоящие перед ними задачи.

Понятие права доступа к файлу

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

Создает и удаляет группы системный администратор (суперпользователь), он же может изменять состав участников той или иной группы. Члены разных групп могут иметь разные права по доступу к файлам Linux.

Права доступа подразделяются на три типа:

  • чтение — r (сокращение от read);
  • запись — w (сокращение от write);
  • выполнение — x (сокращение от execute).

Эти типы прав доступа могут быть предоставлены трем классам пользователей: владельцу файла, группе, в которую входит владелец, и всем (прочим) пользователям. Владельца и группу файла в дальнейшем можно поменять с помощью команд chown и chgrp .

Разрешение на чтение позволяет пользователю читать содержимое файлов, а в случае каталогов — просматривать перечень имен файлов в каталоге (используя, например, команду ls ).

Разрешение на запись позволяет пользователю писать в файл и изменять его. Для каталогов это дает право создавать в каталоге новые файлы и каталоги, или удалять файлы в этом каталоге.

Разрешение на выполнение позволяет пользователю выполнять файлы (как бинарные программы, так и командные файлы). Разрешение на выполнение применительно к каталогам означает возможность выполнять команды, например, cd .

Расшифровка прав доступа

Рассмотрим пример, иллюстрирующий права доступа к файлам Linux. Для того, чтобы команда ls -l не выводила на экран длинный листинг, зададим ей в качестве дополнительного параметра имя конкретного файла:

$ ls -l /etc/wvdial.conf -rw-rw-r-- 1 root dialout 377 May 15 16:20 /etc/wvdial.conf

Третье поле в примере указывает на владельца файла ( root ), четвёртое поле указывает на группу, которая владеет этим файлом ( dialout ), последнее поле — имя файла ( file ).

Читайте также:  How to install forge linux

Первое поле в представленном примере определяет тип файла и права доступа к нему. Это поле представлено цепочкой символов -rw-rw-r— , которые условно можно разделить на 4 группы.

Первая группа, состоящая из единственного символа, определяет тип файла. Этот символ может принимать следующие значения:

  • — — обычный файл;
  • d — каталог;
  • b — файл блочного устройства;
  • c — файл символьного устройства;
  • s — доменное гнездо (socket);
  • p — именованный канал (pipe);
  • l — символическая ссылка (link).

Далее следуют 3 группы по 3 символа, определяющие права доступа к файлу соответственно для владельца файла, для группы пользователей, и для всех остальных пользователей системы. Замена любого из этих символов прочерком будет означать, что пользователь лишается соответствующего права. В нашем примере права доступа для владельца определены как rw- , что означает, что владелец ( root ) имеет право читать файл ( r ), производить запись в этот файл ( w ), но он не имеет права на выполнение, так как символ ( x ) заменен прочерком ( — ). Из этого же примера следует, что аналогичные права имеют члены группы dialout , остальные пользователи имеют право лишь на чтение файла ( r— ).

Исполняемый файл в Linux может и не иметь никакого расширения, так как все определяется установкой атрибута „исполняемый“, причем право на исполнение может быть предоставлено не всем.

Зависимость прав доступа

Предоставление прав доступа к файлу также зависит от прав доступа к каталогу, в котором находится файл. Например, если пользователь oleg хочет ограничить доступ ко всем своим файлам, он может установить права доступа к своему домашнему каталогу /home/oleg как drwx—— , а не устанавливать отдельные права доступа к каждому его файлу и подкаталогу.

Изменение прав доступа

Команда chmod используется для установки прав доступа к файлу (только собственник файла может изменять права доступа к этому файлу). Команду chmod можно использовать в 2-x вариантах.

Явное указание на предоставление или лишение прав

Синтаксис команды: chmod filenames.

Сначала после имени команды ставится один или несколько из следующих символов: a (сокращение от all), u (сокращение от use), g (сокращение от group), или o (сокращение от other). Затем точно определяется, добавляются ( + ) или убираются ( — ) права. Наконец, пишется один или несколько символов из следующего набора: r , w , x .

Примеры правильных команд:

Даёт всем пользователям право на чтение файла.

Читайте также:  Линукс папка со шрифтами

Аналогично предыдущему примеру. Если никакие из набора символов a , u , g или o не указаны, то это эквивалентно указанию символа a .

Лишает всех пользователей, кроме собственника, права на исполнение файла.

Разрешает собственнику читать, изменять и исполнять файл.

Запрещает читать, записывать и исполнять файл всем пользователям, кроме собственника файла и пользователей из группы.

Цифровое представление прав

Кодируем символ r цифрой 4 , символ w — 2 , символ x — 1 . Для предоставления пользователям какой-либо набора прав, надо сложить соответствующие цифры. Получив, таким образом, нужные цифровые значения для владельца файла, для группы файла и для всех остальных пользователей, задаем эти три цифры в качестве аргумента команды chmod (ставим эти цифры после имени команды перед вторым аргументом, который задает имя файла). Например, если надо дать все права владельцу (4+2+1=7), право на чтение и запись — группе (4+2=6), и не давать никаких прав остальным, то следует дать такую команду:

Источник

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

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

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

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

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

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

[email protected]:~$ 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

Читайте также:  Linux disable pci device

. . . . . . . . .
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

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

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

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

[email protected]:~$ 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

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

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

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

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

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

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

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

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

[email protected]:~$ chown mike README

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

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

[email protected]:~$ chgrp admin README

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

[email protected]:~$ chgrp daemon README

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

[email protected]:~$ sudo chown mike README

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

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

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

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

Источник

Оцените статью
Adblock
detector