На этом я пожалуй закончу краткое введение в богатейший мир консольных команд Linux и продолжу рассказывать про оставшиеся основные особенности этой многогранной операционной системы.
Глава 15
Пользователи, группы и права доступа
Теперь немного поговорим о разграничении прав доступа к различным элементам. Описанный в этой главе механизм является основополагающим в Linux и соответственно в Ubuntu, так что читайте внимательно.
15.1 Пользователи и группы
Linux в целом и Ubuntu в частности — системы многопользовательские, т. е. на одном компьютере может быть несколько различных пользователей, каждый со своими собственными настройками, данными и правами доступа к различным системным функциям.
Кроме пользователей в Linux для разграничения прав существуют группы. Каждая группа так же, как и отдельный пользователь, обладает неким набором прав доступа к различным компонентам системы и каждый пользователь-член этой группы автоматически получает все права группы. То есть группы нужны для группировки пользователей по принципу одинаковых полномочий на какие-либо действия, вот такая тавтология. Каждый пользователь может состоять в неограниченном количестве групп и в каждой группе может быть сколько угодно пользователей[56].
Например, в Ubuntu есть одна очень полезная группа: admin. Любой член этой группы получает неограниченные административные привилегии. Я уже рассказывал про роль администратора в Ubuntu, так что если вы уже успели забыть кто это, можете освежить свои знания, прочитав соответствующую главу. Создаваемый при установке Ubuntu пользователь автоматически становится членом группы admin[57].
Управлять пользователями и группами можно с помощью специального инструмента, находящегося в меню Система→Администрирование→Пользователи и группы (Рис. 15.1).
Вообще основной областью применения механизма пользователей и групп является не совсем разграничение доступа к различным функциям системы, а скорей разграничение доступа к файлам на винчестере[58]. Вот об этом я и постараюсь рассказать дальше.
Рис. 15.1: Программа управления пользователями и группами.
15.2 Права доступа в Linux
Любой файл и каталог в Linux имеет пользователя-владельца и группу-владельца. То есть любой файл и каталог принадлежит какому-то пользователю системы и какой-то группе. Кроме того, у любого файла и каталога есть три группы прав доступа: одна для пользователя-владельца, одна для членов группы-владельца и одна для всех остальных пользователей системы. Каждая группа состоит из прав на чтение, запись и запуск файла на исполнение. Для каталогов право на исполнение и право на чтение всегда идут вместе и означают одно и то же.
То есть, изменяя владельцев того или иного файла и различные группы прав доступа к нему, можно гибко управлять доступом к этому файлу. Например, сделав себя владельцем некоего файла и полностью запретив к нему доступ всем, кроме пользователя-владельца, можно скрыть содержимое и запретить изменение этого файла для всех других пользователей. Такая же штука проходит и с каталогами. Можно, например, запретить записывать файлы в каталог, или вообще скрыть его содержимое от посторонних глаз.
В данный момент нас интересует одно крайне важное следствие из подобной организации прав доступа в системе. Конкретному пользователю Ubuntu принадлежит только его домашний каталог и всё его содержимое. В системе этот каталог находится по адресу /home/имя_пользователя. Все остальные файлы системы, включая все приложения, системные настройки и т. д., располагающиеся вне /home, принадлежат преимущественно root. Помните, я говорил, что root — это пользователь с неограниченными привилегиями, непосредственное использование которого в Ubuntu запрещено. Так вот, все системные файлы и каталоги принадлежат root недаром, им всем выставлены права на изменение только для пользователя-владельца, таким образом никто, кроме root, не может вмешаться в работу системы и что-то поменять в системных файлах.
Это конечно очень хорошо для безопасности, но что же делать, если вам нужно изменить какие-нибудь системные файлы? Тут есть два пути[59]: во-первых, большинство необходимых пользователю системных настроек можно изменить обладая правами администратора из графических конфигураторов, это самый предпочтительный способ. Ну а во-вторых можно временно повысить свои права до root и делать вообще всё, что угодно.
56
Однако как минимум в одной группе каждый пользователь состоит всегда. Это так называемая основная группа, по умолчанию она носит такое же имя, как и у самого пользователя.
58
Но поскольку все запускаемые приложения, включая программы редактирования настроек и системные сервисы, являются обычными файлами, то через разграничение доступа к файлам на винчестере можно легко управлять доступом к различным функциям.
59
Есть ещё и третий: дать доступ вашему пользователю на редактирование системных файлов. Некоторым это может показаться очень хорошим решением, однако так делать категорически нельзя, вообще, не играйте с правами доступа к системным каталогам и файлам.