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

Права на доступ к уже существующему файлу можно изменять. Администратор может изменить права доступа к любому файлу, пользователь - только к своим. Производится это с помощью утилиты chmod (change mode - изменить режим). У этой команды несколько форм записи, с которыми можно ознакомиться в кратком справочнике. Более компактная форма -

chmod XXXX file_name

Обычно владельцу файла предоставляются полные права, а членам его группы и всем остальным - по необходимости. Но владелец файла вправе ограничить себя в правах. Например, задав режим доступа chmod 077 file_name он предоставляет полные права всем зарегистрированным пользователям, кроме себя. При этом программа, проверяющая права доступа, не относит владельца ни к его группе, в которой он зарегистрирован, ни к другим пользователям. С каждым процессом в системе связан идентификатор пользователя (UID), от имени которого процесс запущен. Алгоритм, реализованный системной функцией, сравнивает UID процесса и UID файла и, обнаружив, что к файлу обращается его владелец, проверяет только его права доступа. Если у него нет прав, -ему будет отказано в доступе, хоть он и является членом своей группы. Но пользователь, допустивший такую оплошность, может легко исправить положение, переназначив права доступа в свою пользу - ведь он остается владельцем этого файла и может применить к нему команду chmod.

Передача прав владения файлами в системе тоже предусмотрена. Она производится с помощью команды chown (change owner - сменить владельца).

chown user f ile_name - передача прав на файл другому владельцу.

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

В современных версиях ядра можно задавать дополнительные права на файлы. Это делается с помощью утилиты:

chattr +(-) option file_name - установка или отмена дополнительных атрибутов файла. В качестве опций можно задать: i - блокирование любых изменений файла, а - запрет любых операций, кроме добавления данных, с - автоматическое сжатие и декомпрессию при записи/чтении файла, s - гарантированное стирание блоков данных при удалении файла. Знак "+" означает присвоение атрибута, знак "-" его удаление.

Пользоваться этой утилитой также разрешается только администратору. При этом администратор может установить запрет, который сам преодолеть будет не в силах (вопреки базовым правилам UNIX). Например, установив дополнительный атрибут +i, администратор не сможет ни удалить файл, ни записать что-либо в него, ни изменить права доступа. Этим весьма полезным свойством необходимо пользоваться в отношении наиболее ответственных исполняемых файлов.

Дополнительные атрибуты файла командой Is не выводятся, и для их чтения необходимо воспользоваться командой lsattr f ile_name.

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

Если администратор вводит команду su с именем зарегистрированного пользователя, он становится им мгновенно, без запроса пароля. Для того чтобы повысить свой рейтинг и вновь стать администратором, ему вновь необходимо ввести команду su без аргументов, а после запроса ввести пароль root. В некоторых дистрибутивах приходилось наблюдать, что возврат прав администратора не сопровождался запросом пароля - это явная угроза безопасности, допущенная программистами.

Использование таких команд, как su, находится под пристальным вниманием системы и по умолчанию протоколируется в один из файлов аудита. Исполняемый файл с именем su обычно является объектом атак со стороны вир-мейкеров. Если злоумышленнику удается внедрить в систему фальшивую программу su и обеспечить ее запуск при вызове этой команды, программа может перехватить многие важные пароли, включая пароль суперпользователя.

Довольно часто у администратора возникает потребность доверить одному из пользователей выполнение какой-либо операции, на которую требуются права root. Но для этого администратор должен доверить другому святая святых - свой пароль! Для того чтобы избежать таких ситуаций, была разработана еще одна утилита, позволяющая выборочно предоставлять определенным пользователям конкретные права. Эта утилита именуется sudo и вводится с именем команды, которую надо исполнить. Названия команд придумываются администратором и записываются в специальный конфигурационный файл /etc/sudoers, который должен быть недоступным для всех остальных. В этом текстовом файле присутствуют строки, связывающие определенных пользователей с определенными ответственными командами. Пользователь, наделенный временными полномочиями, должен знать, какую команду ему разрешено выполнять с правами администратора и как эта команда пишется. Система, получив команду sudo, запрашивает у пользователя пароль, но это должен быть его собственный пароль, а не пароль root. После проверки пароля программа сравнивает имя пользователя с введенной командой, и при наличии соответствующей записи выполняет эту команду. Вызов команды sudo также по умолчанию протоколируется системой в одном из журналов аудита.