Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Права доступа и администрирование системы




Установка и поддержание оптимальных прав доступа является одной из важнейших задач системного администратора. Права должны быть достаточными для нормальной работы пользователей и программ, но небольшими, чем необходимо для такой работы. Поскольку программы, исполняемые от имени суперпользователя (root), могут совершать любые действия с любыми файлами и каталогами, их выполнение может нанести системе серьѐзный ущерб. Это может быть как следствием уязвимостей или ошибок в программах, так и результатом ошибочных действий самого пользователя. Поэтому работа с правами суперпользователя требует особой осторожности. Чтобы уменьшить связанные с этим риски рекомендуется для выполнения задач, требующих таких прав, использовать утилиту sudo.

Основные команды

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


$chmod - Изменение прав доступа к файлу или каталогу.


$chown - Изменение владельца файла.


$chgroup - Изменение группы, которой принадлежит файл.

1.

1.1.

1.1.1.




Изменение прав

Команда chmod используется для изменения прав доступа на файл или директорию. Существует 2 способа, с помощью которых можно задавать права. Если рассматривать настройки прав, как последовательность битов (как их рассматривает компьютер), то все окажется просто, например:

 

rwx rwx rwx = 111 111 111

rw- rw- rw- = 110 110 110

rwx --- --- = 111 000 000

 

Т.е. наличие буквы - это единица, прочерк - ноль. Если эту последовательность перевести в восьмеричную систему исчисления (или если проще, то перевести каждую тройку цифр из двоичной системы в десятичную, например, 111 = 22 + 21 + 20 = 4 + 2 + 1 = 7), то получим:

 

rwx rwx rwx = 777

rw- rw- rw- = 666

rwx --- --- = 700

 

Именно такой формат чаще всего встречается при работе с правами доступа. Например, чтобы установить все права всем:

 

user@snort-ubuntu:~$ chmod 777 some.rar

 

Есть более простой способ закодировать права доступа. Стоит запомнить, что права на чтение - это 4, на запись - 2, на выполнение - 1 и 0 - забрать права. И чтобы установить права для владельца только на чтение и у всех отобрать их, стоит поочередно складывать. Владелец (чтение): 4 + 0 +0 = 4, группа (нет прав): 0 + 0 + 0 = 0, все остальные (нет прав): 0 + 0 + 0 = 0, т.е. в нашем случае получаем 400.

 

Есть другой формат задания прав, который понимает chmod - символьный. Символьная форма позволяет установить выборочные биты кода защиты и имеет вид:

[ugoa] [+ =] [rwxstugo],

где

­ u – владелец,

­ g –группа,

­ o –прочие,

­ a –все категории пользователей (по умолчанию),

­ + – разрешить доступ,

­ –  –запретить доступ,

­ = –назначить доступ,

­ r– чтение,

­ w – запись,

­ x – выполнение,

­ s – смена идентификатора пользователя или группы,

­ t – сохранение образа файла в области выгрузки,

­ ugo –оставить текущие значения бита доступа.

Например, добавить права на запись для группы:

 

user@snort-ubuntu:~$ chmod g+w some.rar

 

Убрать права на чтение и запись у всех остальных:

 

user@snort-ubuntu:~$ chmod o-rw some.rar

 

Или убрать права на выполнение для всех:

 

user@snort-ubuntu:~$ chmod a-x some.rar

Более детально об этот формат можно узнать в менуале (man chmod).

 

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

Опции

Из самых полезных и часто используемых опций можно выделить одну:

 

§ -R - рекурсивное назначение прав. Т.е. назначить права всем объектам, руководствуясь регулярным выражением.

Например:

§ chmod -R 755 *- Назначение прав всем объектам текущего каталога, включая подкаталоги.

§ chmod -R 700 z*- Назначить полные права для владельца и исключить права для группы и всех остальных для всех объектов, которые начинаются именоваться на z, находящиеся в текущем каталоге и его подкаталогах.

Изменение владельца файла

Для изменения владельца файла используется команда chown. Обычно для изменения владельца нужны права рута, по-этому сначала выполняем команду su

user@snort-ubuntu:~$ sudo suroot@snort-ubuntu:/home/user#chown some_user some.rarroot@snort-ubuntu:/home/user#exit

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

chown some_user:some_group some.rar

Изменяем группу на файл

Для даной задачи используется команда chgrp. По своей семантике она аналогична команде chown

user@snort-ubuntu:~$ chgrp some_group web.rar

Дополнительные биты доступа

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

 

Бит SUID

Бит suid. Расшифровывается как Set user ID, переводится как "установить идентификатор юзера". Поскольку подходящего русскоязычного термина не существует, его обычно называют "суидный" бит, а файлы, на которых он установлен - "суидными".

Смысл его состоит в том, что если он установлен на файле, который является программой, то при выполнении эта программа автоматически меняет "эффективный userID" на идентификатор того юзера, который является владельцем этого файла. То есть, не зависимо от того - кто запускает эту программу, она при выполнении имеет права хозяина этого файла.

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

Понятно, что такая программа является "потенциально опасной". В "нормальном" случае она не позволит обычному юзеру сделать то, что выходит за пределы его полномочий (например, программа passwd разрешит юзеру изменить только собственный пароль, но не пароли других юзеров). Но, даже незначительная ошибка в такой программе может привести к тому, что "злоумышленник" сможет заставит ее выполнить еще какие-нибудь действия, не предусмотренные автором программы. Кстати, большинство известных способов "взлома" системы заключаются не в том, чтобы узнать пароль root'а, а как раз в том, чтобы заставить какую-нибудь из "суидных" программ выполнять действия необходимые "взломщику".

Вообще говоря, использование "суидных" программ (когда они нужны и для чего) - достаточно обширная тема выходящая за рамки разговора о permissions. Замечу только, что это не единственный путь сменить "эффективный userID". Это можно сделать из самой программы, вызвав специальную системную функцию, но для этого программы должна уже иметь права root'а. То есть, ее должен запустить юзер root, или она должна быть "суидной", как сказано выше.

Возвращаясь к разговору о "правах доступа", надо сказать, что у такого файла permissions выглядят как **s****** (если еще и установлен бит x для владельца файла) или как **S****** (если бит x не установлен). Однако, ставить suid бит на неисполняемые файлы обычно не имеет смысла (по крайней мере в FreeBSD). Хотя, мне попадались программы, которые проверяли этот бит даже для текстовых файлов.

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

Бит SGID

Бит sgid. Расшифровывается как Set group ID, переводится как "установить идентификатор группы".

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

Permissions такого файла выглядят как *****s*** (если установлен бит x для группы) или *****S** (если соответствующего бита x нет). Также как и в предыдущем случае, бит sgid для неисполняемых файлов никакого смысла не имеет.

А вот что касается битаsgidна директории. Для FreeBSD (и других ветвей BSD) этот бит, опять же, не оказывает никакого действия. Но в некоторых других Юниксах он означает, что, когда файлы создаются в такой директории, в их атрибутах проставляется группа та же, что и у директории. Другими словами, файлы, создаваемые в такой директории "наследуют" группу от директории.

Бит sticky

Бит sticky. Никак не расшифровывается, переводится как "липкий".
Выглядит в permissions как ********t (если вместе с битом x для "всех остальных") или ********T (если соответствующего бита x нет).

Для директорий его смысл заключается в том, что удалить файл из такой директории (или переименовать) может только владелец файла. Напомню, что в обычном случае (без такого бита) возможность удалять файлы (как и создавать) определяется правом записи (бит w) на директории. То есть, если какой-либо юзер принадлежит к категории, для которой разрешена запись в директорию, он может удалить в ней любой файл, независимо от атрибутов (владельца, группы, permissions) самого файла.

Применяют этот бит, обычно, на директориях, которые являются "публичными" (например, /tmp). Такие директории имеют права доступа, позволяющие всем юзерам создавать там свои файлы и удалять их. Однако, было бы неправильно, что любой другой юзер мог по ошибке или "из вредности" удалять файлы, к которым он не имеет никакого отношения. Для того, чтобы предотвратить возможность удаления файла "посторонним" юзером, как раз и служит sticky бит.

Этот бит может ставиться также на исполняемые файлы. В этом случае он означает, что файл, даже после завершения работы, должен оставаться в памяти (конечно, не в ОЗУ, а в swap'е).

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










Последнее изменение этой страницы: 2018-06-01; просмотров: 225.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...