Права доступа Linux является многопользовательской операционной системой. Это означает, что одновременно с системой могут работать несколько пользователей, каждый из которых может запускать несколько приложений. Для того чтобы пользователи не мешали друг другу и не повредили операционной системе, был разработан механизм прав доступа (3, с.161).
Пользователь root (суперпользователь, super user) владеет всеми полномочиями в системе. Пользователя root можно сравнить с Администратором в системах Windows. Любая команда, введенная пользователем root, выполняется безоговорочно. Только пользователь root может редактировать корневую файловую систему.
В основном, вход в систему под именем пользователя root запрещен. В одних дистрибутивах нельзя войти как root в графическом режиме, но можно зайти через консоль комбинацией клавиш Ctrl + Alt + F2, а в других дистрибутивах невозможно войти как root - ни через графический режим, ни через комбинацию клавиш, ни через консоль (например, Ubuntu). Для выполнения команд от имени суперпользователя существует "временное разрешение" на выполнение нужных операций в виде команд sudo или su.
Команда sudo позволяет запустить любую команду с привилегиями root. Использовать эту команду могут пользователи, которые внесены в файл /etc/sudoers.
Команда su позволяет получить доступ к консоли root любому пользователю, при этом нужно указать пароль root.
При этом заходить в систему под суперпользователем можно всегда, даже если эта учетная запись ограничена или отключена, например, в Ubuntu нужно просто задать пароль для пользователя root командой sudo passwd root. В Ubuntu также существует способ зайти как root с помощью команды «sudo –i», после чего нужно ввести пароль.
Для централизованного управления несколькими пользователями их объединяют в группы. По умолчанию один пользователь не имеет доступа к домашнему каталогу другого пользователя. Однако если пользователи состоят в одной группой, то пользователи имеют доступ к домашним каталогам остальных членов группы. Когда пользователь создает файл или каталог, владельцем назначается данный пользователь и группы (3, с.162).
Как описывалось выше, Linux – многопользовательская система, и механизм прав доступа предполагает накладывать права к файлам и каталогам.
Изначально каждый файл имеет три параметра доступа:
чтение - разрешает получать содержимое файла, но на запись – нет;
запись - разрешает записывать новые данные в файл или изменять существующие, а также позволяет создавать и изменять файлы и каталоги;
выполнение - разрешает выполнить программу, если у нее нет флага выполнения (устанавливается для всех программ и скриптов).
Для эффективной защиты данных пользователи также имеют три категории, для которых можно устанавливать различные сочетания прав доступа:
владелец - набор прав для владельца файла, пользователя, который его создал или сейчас установлен его владельцем, обычно владелец имеет все права, чтение, запись и выполнение;
группа - любая группа пользователей, существующая в системе и привязанная к файлу;
остальные - все пользователи, кроме владельца и пользователей, входящих в группу файла.
Именно с помощью этих наборов полномочий устанавливаются права файлов в Linux. Каждый пользователь может получить полный доступ только к файлам, владельцем которых он является или к тем, доступ к которым ему разрешен. Только пользователь root может работать со всеми файлами независимо от их набора их полномочий.
Но со временем такой системы стало не хватать, и были специальные флаги, которые позволяют делать файлы не изменяемыми или же выполнять от имени суперпользователя (3, с.172):
SUID - если этот бит установлен, то при выполнении программы, id пользователя, от которого она запущена заменяется на ID владельца файла;
SGID - этот флаг работает аналогичным образом, только разница в том, что пользователь считается членом группы, с которой связан файл, а не групп, к которым он действительно принадлежит (чаще всего используется в общих папках);
sticky-bit - этот бит тоже используется для создания общих папок, если он установлен, то пользователи могут только создавать, читать и выполнять файлы, но не могут удалять файлы, принадлежащие другим пользователям.
Просмотреть права доступа можно с помощью команды «ls –l». В ответ мы получаем флаги прав в виде черточек, которые отвечают за права файлов. Рассмотрим подробнее, что значат условные значения флагов прав:
--s - установлен SUID бит для владельца или SGID бит для группы;
--t - установлен sticky-bit, и пользователи не могут удалить этот файл.
Изменить права на файл в Linux можно через утилиту chmod. Она позволяет менять все флаги, включая специальные. Утилита chmod имеет следующий синтаксис:
#chmod [опции] [категория] [действие] [флаг] [файл] Категория, как описывалось выше, указывает для какой группы пользователей нужно применять права:
u - владелец файла;
g - группа файла;
o - другие пользователи.
Например, команда «chmod go-rwx file» забирает все права (-rwx) у группы (g) и остальных пользователей (o).
Таким образом, можно сделать вывод, что Linux является сложной операционной системой со специфической архитектурой, отличной от Windows.