Права доступа Linux Mint

Теперь коснемся одного из  самых важных вопросов, с которыми  сталкивается пользователь при знакомстве с Linux. Речь пойдет о правах доступа. Файлы в Linux, как, впрочем, и процессы, созданные пользователем,  имеют двух владельцев: пользователя (user owner) и  группу-пользователя (group owner). Кроме этого определяются права для остальных (other), то есть тех, которые не вошли  в первые  два списка. Каждый пользователь может быть членом сразу нескольких групп, одна из которых называется  первичной (primary), а все остальные — дополнительными (supplementary). Наличие групп дает определенную гибкость в организации доступа к конкретному файлу.  Например, чтобы разрешить запись дисков  в  Linux Mint,

достаточно добавить пользователя в группу cdrom. Аналогично можно организовать

совместное использование некоторого ресурса: достаточно создать новую группу и включить  в нее всех, кому это действительно необходимо. Обычно владельцем

файла является пользователь, который его создал, а владелец-группа устанавливается равной первичной группе пользователя, создавшего файл.

ПРИМЕЧАНИЕ

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

Просмотреть  текущие права можно при помощи команды  ls  -l,  как это мы делали  ранее:

$ ls -l sound.mрЗ

-rw-r–r-1 grinder grinder 6706501 2010-05-11 00:29 sound.mрЗ

В первой позиции  показываются права доступа по категориям; что  означает

-rw-r–r–, разберем чуть ниже. В третьей и четвертой (то есть grinder grinder)

выводятся владелец-пользователь  и  группа.

Чтобы изменить владельцев файла, используется команда chown,  принимающая в качестве параметров имя нового владельца  или группу и список файлов. Формат такой:

$ sudo chown new_owner file1 file2 …

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

$ sudo chown -R user *

В примере владельцем всех файлов в текущем каталоге и подкаталогах будет пользователь user. Команда chown позволяет установить  и  группу-владельца. Для

этого нужно сразу за именем владельца  без пробелов  и  других знаков  поставить двоеточие и  написать название необходимой  группы:

$ sudo chown — R sergej:video *

Допускается и  такой вариант записи:

$ sudochown — R  :video *.

Кроме chown для изменения  владельца группы можно использовать  команду chgrp , синтаксис использования данной команды аналогичен предыдущей:

$ chgrp audio /home/user/*

Права доступа

Владение файлом определяет те операции,  которые тот или  иной пользователь может совершить над файлом. Самые очевидные из них — это изменение владельца и группы для некоторого файла. Данные операции может проделать суперпользователь и владелец файла (для некоторых — только суперпользователь). Причем группу, если вы являетесь владельцем файла, можно изменить только на свою первичную (по умолчанию имеет то же название, как и имя  соответствующего пользователя). Все эти ограничения введены по нескольким причинам. Во-первых, для того чтобы никто не мог подсунуть какой-нибудь зловредный файл или  скрипт, а во-вторых, чтобы, если на компьютере установлен лимит дискового пространства для конкретного пользователя, нельзя было превысить его, просто переопределив владельца.

Кроме владения  файлом  права доступа определяют базовые операции,  которые можно совершить над файлом. Их три:

•Read — доступ на чтение;

•          Write — доступ на запись;

•          eXecute — доступ на выполнение.

Буквы, выделенные верхним регистром, как раз и показываются в выводе  команды ls  -l  в  первой позиции.  Все указанные операции  устанавливаются для каждой из трех категорий отдельно. Причем изменить их может, опять же, только владелецпользователь и  суперпользователь.

Для установки соответствующих прав используется команда chmod. Применяется она в двух  формах: абсолютной, когда игнорируются старые права  и устанавливаются новые, и относительной, когда к имеющимся правам добавляются  новые (или убираются старые). Абсолютная форма предполагает задание прав доступа в восьмеричной форме. Чтобы получить полный код необходимого режима файла, нужно просто сложить значения кодов, приведенных в табл. 4.1.

Таблица 4.1. Код команды chmod

12 5

Восьмеричный код

Режим файла

0001

Право на выполнение для всех

0002

Право на запись для всех

0004

Право на чтение для всех

0010

Право на выполнение для группы

0020

Право на запись для группы

0040

Право на чтение для группы

0100

Право на выполнение для владельца

0200

Право на запись для владельца

Продолжение

Таблица 4.1 (продолжение)

Восьмеричный код

Режим файла

0400

Право на чтение для владельца

1000

Включения бита сохранения задачи

2000

Если файлом, выполняемым  включения бита, является SGID

4000

Если файлом, выполняемым  включения бита, является SUID

Таким образом,  команда

$   chmod   755   fil e

устанавливает следующие права доступа: если это исполняемый файл, то запустить его на выполнение и  прочитать содержимое имеют право все  (то есть владелец, группа и  остальные), а владелец дополнительно имеет право на изменение содержимого — запись.

Относительная форма  команды  требует  конкретного  указания классов  доступа (и — владелец, g — группа, о — остальные, а — все вместе), соответствующие права доступа (r — чтение, w — запись, х — выполнение) и операцию, которую необходимо произвести для списка файлов (+ — добавить, — удалить, = — присвоить) для соответствующего списка файлов. Например,  команда

$   sud o   chmod   u+w,    ug+r ,    a+x   fil e

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

К слову, вызвав свойства  файла или каталога и  перейдя на вкладку Права, вы можете изменить группу и параметры доступа к файлу для тех объектов, владельцами которых вы являетесь (рис. 4.4).

Для каталогов права доступа имеют немного другой смысл. Каталог, как говорилось выше, это файл, содержащий имена всех файлов, которые имеются в данном каталоге. Так  вот, право на чтение каталога  позволяет всего  лишь получить имена файлов, находящихся в данном каталоге. А вот для того, чтобы получить другую дополнительную информацию, нужно право на исполнение. Чтобы перейти внутрь каталога,  необходимо иметь право на  выполнение. Кстати, из-за наличия  этих особенностей можно добиться так  называемого эффекта dark directory, когда создаем в каталоге файлы, которые доступны, только если пользователь знает точно имя  соответствующего файла.  Право на запись для каталога позволяет изменять его содержимое, то есть удалять и  записывать  файлы,  при  этом  права  доступа

к конкретному  файлу  игнорируются.

Рис. 4.4. Изменение параметров доступа к файлу

Права доступа

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

Группу, в  которую входит пользователь,  можно изменить, отредактировав файл / etc/group. Внутри файл состоит из ряда строк вида

cdrom:х:24:grinde r

то есть в данной строке описана группа cdrom, в которую входит пользователь grinder. Чтобы добавить  в эту группу пользователя user, просто дописываем его логин через запятую:

cdrom:х:24:grinder,use r

Цифра 24 означает GID (group id) — цифровое значение группы.

ПРИМЕЧАНИЕ

Новая группа создается командой addgroup, учетная запись — adduser.

Кроме этого Linux Mint предлагает графический инструмент управления группами  и  учетными записями, который можно вызвать   из меню Администрирование •

Пользователи и группы (рис . 4.5).

Рис. 4.5. Управление группами и учетными записями

С его помощью можно очень просто добавить новую учетную запись или группу и установить членство в группах.

Данные об учетной записи хранятся в файле /etc/passwd. Формат такой: username:пароль:uid:gid:ui d    коментарий:домашний    каталог:shel l Например:

grinder:х:1000:1000:grinder,,,:/home/grinder:/bin/bas h

ПРИМЕЧАНИЕ

Все обычные учетные записи имеют UID начиная с 1000.

Теперь узнаем, зачем это нужно. Например, смотрим данные устройства, выводящего звук:

$ ls -l /dev/dsp

crw-rw—-+ 1 root audio 14, 3 2010-06-10 11:59 /dev/dsp

то есть считать данные может только пользователь root и все,  кто входит  в группу audio. Следовательно, если у вас не проигрывается звук и  система выдает, что не может получить доступ, просто проверьте свои права.

Справедливости ради  нужно отметить, что права доступа имеет не пользователь, а процесс, запущенный им. Не вдаваясь  в подробности, поясню, что каждый пользователь, зарегистрировавшись в системе, получает свою копию текущего процесса shell , который имеет установленные  идентификаторы RID и RGID — реальные идентификаторы пользователя и первичной группы пользователя. А все процессы, запущенные пользователем (дочерние), наследуют все переменные, в  том числе RID и RGID.

У нас остались нерассмотренными три режима файла: бит сохранения  задачи (stisky bit), а также флаги  SUID и  SGID. Со stisky bit все просто, этот бит указывает на необходимость  сохранения копии  выполняющейся  программы в  памяти  после завершения выполнения.  Данный режим позволяет сэкономить время на запуске программы при  частом  использовании,  но в  современных  системах  применение этого режима встречается редко.

Флаги SUID и SGID позволяют  изменить (расширить) права пользователя (группы), запустившего программу, на время ее выполнения. Как уже говорилось, запущенное приложение имеет такие же права доступа к системным ресурсам, как и пользователь,  запустивший программу. А установки этих флагов позволяют назначить права доступа исходя из прав доступа владельца файла. Следовательно, если  владельцем запущенного приложения является root, то любой, независимо от того, кто запустил данное приложение, будет иметь права суперпользователя. Вместе с тем при установке флага SUID наследуются права владельца файла, a SGID — группы-владельца.

Буква s в выводе  команды   ls   -l   означает, что установлен флаг SUID, а владельцем файла является — root, и теперь, кто бы ни запустил утилиту на выполнение, на время работы программы он временно получает права суперпользователя, то есть право произвести запись   в защищенный  системный файл. Естественно, утилита должна (и делает это) производить изменение учетной записи только запустившего ее пользователя. Как вы понимаете, требования по безопасности к программам, использующим данный метод, должны быть повышенными.

Для установки  битов  SUID/SGI D в  символьной  форме используется  буква s, sticky bit устанавливается буквой -t , а с помощью буквы l  можно установить

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

ПРИМЕЧАНИ Е

Обычно sticky bit установлен в каталоге /tmp. Это сделано для того, чтобы удалить файл мог только пользователь, создавший его. При установке бита SGID для каталога все вновь созданные файлы будут теперь наследовать группу не по пользователю, создавшему его, а по группе — владельцу каталога.

Источник: Яремчук С. А.  Linux Mint на 100 %. — СПб.: Питер, 2011. — 240 е.: ил. — (Серия «На 100 %»).

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий