0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Взаимодействие с операционной системой всегда ведется от какого-то конкретного пользователя, созданного в системе. В этом уроке мы изучим концепцию пользователей и групп. Эта тема нужна, чтобы лучше понять права пользователей, которые мы будем обсуждать далее в курсе.</p>
1
<p>Взаимодействие с операционной системой всегда ведется от какого-то конкретного пользователя, созданного в системе. В этом уроке мы изучим концепцию пользователей и групп. Эта тема нужна, чтобы лучше понять права пользователей, которые мы будем обсуждать далее в курсе.</p>
2
<p>Тема пользователей и их прав в системе в первую очередь относится к функционированию самой операционной системы. Оболочка лишь предоставляет утилиты, позволяющие анализировать доступы и изменять их.</p>
2
<p>Тема пользователей и их прав в системе в первую очередь относится к функционированию самой операционной системы. Оболочка лишь предоставляет утилиты, позволяющие анализировать доступы и изменять их.</p>
3
<p>Команда whoami позволяет выяснить имя пользователя:</p>
3
<p>Команда whoami позволяет выяснить имя пользователя:</p>
4
<h2>Права пользователей</h2>
4
<h2>Права пользователей</h2>
5
<p>Абсолютно любой процесс, запускаемый в операционной системе, стартует от имени некоторого пользователя. Соответственно, его возможности по влиянию на файловую систему ограничены<strong>правами пользователя</strong>, от имени которого процесс запущен.</p>
5
<p>Абсолютно любой процесс, запускаемый в операционной системе, стартует от имени некоторого пользователя. Соответственно, его возможности по влиянию на файловую систему ограничены<strong>правами пользователя</strong>, от имени которого процесс запущен.</p>
6
<p>Обратите внимание, что мы говорим не "пользователь запустил процесс", а "процесс запускается от имени пользователя". Дело в том, что присутствие пользователя для запуска необязательно. Работая в командной строке, мы запускаем все сами. Но когда система загружается, то она запускает множество различных процессов автоматически.</p>
6
<p>Обратите внимание, что мы говорим не "пользователь запустил процесс", а "процесс запускается от имени пользователя". Дело в том, что присутствие пользователя для запуска необязательно. Работая в командной строке, мы запускаем все сами. Но когда система загружается, то она запускает множество различных процессов автоматически.</p>
7
<p>Для многих процессов в системе создаются собственные пользователи с ограниченным набором прав.</p>
7
<p>Для многих процессов в системе создаются собственные пользователи с ограниченным набором прав.</p>
8
<p>Команда ps (сокращение от<em>process status</em>) выводит отчет о работающих процессах. Информацию о том, какой процесс и под каким пользователем запущен, можно получить из вывода ps aux:</p>
8
<p>Команда ps (сокращение от<em>process status</em>) выводит отчет о работающих процессах. Информацию о том, какой процесс и под каким пользователем запущен, можно получить из вывода ps aux:</p>
9
<p>Взаимодействие с файловой системой происходит через запуск тех или иных утилит, которые модифицируют, создают или анализируют файловую структуру.</p>
9
<p>Взаимодействие с файловой системой происходит через запуск тех или иных утилит, которые модифицируют, создают или анализируют файловую структуру.</p>
10
<p>Например, мы запускаем утилиту touch. Мы от своего имени стартуем процесс, внутри которого запускается программа touch. Эта программа создает файл и делает вас владельцем нового файла.</p>
10
<p>Например, мы запускаем утилиту touch. Мы от своего имени стартуем процесс, внутри которого запускается программа touch. Эта программа создает файл и делает вас владельцем нового файла.</p>
11
<p>Кстати, модификация существующих файлов не влияет на владельца - для его смены нужно воспользоваться специальной утилитой. В домашней директории пользователя все принадлежит пользователю:</p>
11
<p>Кстати, модификация существующих файлов не влияет на владельца - для его смены нужно воспользоваться специальной утилитой. В домашней директории пользователя все принадлежит пользователю:</p>
12
<p>Третий столбец в этом выводе - как раз владелец. Единственная запись, которая выбивается из всего списка - это .., то есть родительская директория.</p>
12
<p>Третий столбец в этом выводе - как раз владелец. Единственная запись, которая выбивается из всего списка - это .., то есть родительская директория.</p>
13
<p>Ее владельцем является пользователь root, о котором мы позже поговорим. Если хорошо подумать, то это логично, ведь директория /home не является собственностью пользователей системы:</p>
13
<p>Ее владельцем является пользователь root, о котором мы позже поговорим. Если хорошо подумать, то это логично, ведь директория /home не является собственностью пользователей системы:</p>
14
<p>Каждый каталог в директории /home - это домашний каталог конкретного пользователя. Поэтому они все имеют разных владельцев, как правило, совпадающих с именем директории.</p>
14
<p>Каждый каталог в директории /home - это домашний каталог конкретного пользователя. Поэтому они все имеют разных владельцев, как правило, совпадающих с именем директории.</p>
15
<p>Имя пользователя в системе должно быть уникальным, но его можно менять. Если посмотреть под капот этой системы, то мы увидим, что имя пользователя связано с идентификатором, называемым<strong>UID</strong>. Это число, которое и определяет пользователя.</p>
15
<p>Имя пользователя в системе должно быть уникальным, но его можно менять. Если посмотреть под капот этой системы, то мы увидим, что имя пользователя связано с идентификатором, называемым<strong>UID</strong>. Это число, которое и определяет пользователя.</p>
16
<p>Если поменяется имя пользователя, но идентификатор UID останется прежним, то все доступы останутся. Если сменится идентификатор, то фактически сменится и пользователь. Соответственно, новый пользователь потеряет доступы к старому аккаунту.</p>
16
<p>Если поменяется имя пользователя, но идентификатор UID останется прежним, то все доступы останутся. Если сменится идентификатор, то фактически сменится и пользователь. Соответственно, новый пользователь потеряет доступы к старому аккаунту.</p>
17
<p>Посмотреть свой идентификатор можно разными способами. Первый способ - с помощью команды id:</p>
17
<p>Посмотреть свой идентификатор можно разными способами. Первый способ - с помощью команды id:</p>
18
<p>Второй способ связан с просмотром одного важного файла, который выступает основным хранилищем пользователей в *nix-системах. Да, это обычный текстовый файл, как и все остальное:</p>
18
<p>Второй способ связан с просмотром одного важного файла, который выступает основным хранилищем пользователей в *nix-системах. Да, это обычный текстовый файл, как и все остальное:</p>
19
<p>Кроме имени и идентификатора, здесь указана командная оболочка по умолчанию и домашняя директория пользователя, которую можно поменять. Запись /usr/sbin/nologin говорит, что пользователь не может входить в систему. Такие пользователи нужны для запуска программ, у которых ограниченные права - естественно, входить в систему им не нужно.</p>
19
<p>Кроме имени и идентификатора, здесь указана командная оболочка по умолчанию и домашняя директория пользователя, которую можно поменять. Запись /usr/sbin/nologin говорит, что пользователь не может входить в систему. Такие пользователи нужны для запуска программ, у которых ограниченные права - естественно, входить в систему им не нужно.</p>
20
<h2>Права групп пользователей</h2>
20
<h2>Права групп пользователей</h2>
21
<p>Кроме имени, у пользователей *nix-систем есть связанное с ним понятие -<strong>группа</strong>. Она создана для группового доступа к разделяемому (общему) ресурсу - например, файлу.</p>
21
<p>Кроме имени, у пользователей *nix-систем есть связанное с ним понятие -<strong>группа</strong>. Она создана для группового доступа к разделяемому (общему) ресурсу - например, файлу.</p>
22
<p>Например, у нас есть группа разработчиков, которые регулярно заходят на сервер. Им нужно дать одинаковые возможности по управлению определенными файлами. Владелец у файла ровно один, поэтому мы не можем решить этот вопрос через смену владельца. Для этого нужно создать группу и привязать ее к самому пользователю.</p>
22
<p>Например, у нас есть группа разработчиков, которые регулярно заходят на сервер. Им нужно дать одинаковые возможности по управлению определенными файлами. Владелец у файла ровно один, поэтому мы не можем решить этот вопрос через смену владельца. Для этого нужно создать группу и привязать ее к самому пользователю.</p>
23
<p>Группы, ассоциированные с текущим пользователем, показываются в выводе команды id:</p>
23
<p>Группы, ассоциированные с текущим пользователем, показываются в выводе команды id:</p>
24
<p>Здесь группа kirill.m считается<strong>основной</strong>- такая группа может быть только одна, и именно в нее входят любые создаваемые файлы от имени текущего пользователя. Кроме основной, пользователь может входить в произвольное число дополнительных групп. То, как это влияет на доступы, мы рассмотрим в одном из следующих уроков.</p>
24
<p>Здесь группа kirill.m считается<strong>основной</strong>- такая группа может быть только одна, и именно в нее входят любые создаваемые файлы от имени текущего пользователя. Кроме основной, пользователь может входить в произвольное число дополнительных групп. То, как это влияет на доступы, мы рассмотрим в одном из следующих уроков.</p>
25
<p>В любой *nix-системе присутствует специальный пользователь - root или<strong>суперпользователь</strong>. Главная его особенность - это идентификатор со значением 0. Этот пользователь имеет особое значение и может выполнять абсолютно любые действия в системе. У пользователя root в файле /etc/passwd будет вот такая запись:</p>
25
<p>В любой *nix-системе присутствует специальный пользователь - root или<strong>суперпользователь</strong>. Главная его особенность - это идентификатор со значением 0. Этот пользователь имеет особое значение и может выполнять абсолютно любые действия в системе. У пользователя root в файле /etc/passwd будет вот такая запись:</p>
26
<p>Крайне не рекомендуем использовать root на регулярной основе, и ни в коем случае не входить под ним в систему. Суперпользователь - это прямой доступ ко всему и большая дыра в безопасности системы. Кроме того, через него систему очень легко убить: например, удалить не тот файл или испортить важную конфигурацию, после чего вход в систему станет невозможным.</p>
26
<p>Крайне не рекомендуем использовать root на регулярной основе, и ни в коем случае не входить под ним в систему. Суперпользователь - это прямой доступ ко всему и большая дыра в безопасности системы. Кроме того, через него систему очень легко убить: например, удалить не тот файл или испортить важную конфигурацию, после чего вход в систему станет невозможным.</p>
27
<p>Несмотря на это, root нужен для выполнения некоторых привилегированных действий, которые недоступны обычным пользователям. Об этом мы поговорим в следующем уроке.</p>
27
<p>Несмотря на это, root нужен для выполнения некоторых привилегированных действий, которые недоступны обычным пользователям. Об этом мы поговорим в следующем уроке.</p>