Типы пользователей в linux

Обновлено: 04.07.2024

Теперь немного поговорим о разграничении прав доступа к различным элементам. Описанный в этой статье механизм является основополагающим в Linux и соответственно в Ubuntu, так что читайте внимательно.

Пользователи и группы

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

Кроме пользователей в Linux для разграничения прав существуют группы. Каждая группа так же как и отдельный пользователь обладает неким набором прав доступа к различным компонентам системы и каждый пользователь-член этой группы автоматически получает все права группы. То есть группы нужны для группировки пользователей по принципу одинаковых полномочий на какие-либо действия, вот такая тавтология. Каждый пользователь может состоять в неограниченном количестве групп и в каждой группе может быть сколько угодно пользователей 1) .

Например, в Ubuntu есть одна очень полезная группа: admin . Любой член этой группы получает неограниченные административные привилегии. Мы уже рассматривали роль администратора в Ubuntu, так что если вы уже успели забыть кто это, можете освежить свои знания. Создаваемый при установке Ubuntu пользователь автоматически становится членом группы admin 2) .

В предыдущей главе мы уже упоминали инструмент для управления пользователями и группами. Называется он Учетные записи и находится в Параметры системы:


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

Права доступа в Linux

Любой файл и каталог в Linux имеет пользователя-владельца и группу-владельца. То есть любой файл и каталог принадлежит какому-то пользователю системы и какой-то группе. Кроме того, у любого файла и каталога есть три группы прав доступа: одна для пользователя-владельца, одна для членов группы-владельца и одна для всех остальных пользователей системы. Каждая группа состоит из прав на чтение, запись и запуск файла на исполнение. Для каталогов право на исполнение и право на чтение всегда идут вместе и означают одно и то же.

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

В данный момент нас интересует одно крайне важное следствие из подобной организации прав доступа в системе. Конкретному пользователю Ubuntu принадлежит только его домашний каталог и все его содержимое. В системе этот каталог находится по адресу /home/имя_пользователя . Все остальные файлы системы, включая все приложения, системные настройки и т.д., располагающиеся вне /home , принадлежат преимущественно root . Помните, я говорил, что root - это пользователь с неограниченными привилегиями, непосредственное использование которого в Ubuntu запрещено. Так вот, все системные файлы и каталоги принадлежат root недаром, им всем выставлены права на изменение только для пользователя-владельца, таким образом никто, кроме root , не может вмешаться в работу системы и что-то поменять в системных файлах.

Это конечно очень хорошо для безопасности, но что же делать, если вам нужно изменить какие-нибудь системные файлы? Тут есть два пути 4) : во-первых, большинство необходимых пользователю системных настроек можно изменить обладая правами администратора из графических конфигураторов, это самый предпочтительный способ. Ну а во-вторых можно временно повысить свои права до root и делать вообще всё, что угодно.

Делается это с помощью утилиты sudo и её производных. sudo - это консольная утилита. Она позволяет «прикинуться» рутом при выполнении конкретной команды, таким образом, получив неограниченные права. Например, команда

обновит данные о доступных вам приложениях (зачем это нужно я объясню в статье про управление программами). Сама по себе команда

работает, только если её запускает root . Однако запуская её с помощью sudo вы выдаёте себя за рута, рутом при этом не являясь. Естественно, для использования sudo вы должны обладать правами администратора 5) . При этом при запуске команды через sudo система спросит у вас ваш пароль, однако в целях безопасности при его вводе вам не будет ничего показываться, ни звёздочек, ни чёрточек, ни птичек, ничего. Не пугайтесь, так и надо, просто вводите до конца и нажимайте Enter . Если вы являетесь администратором и правильно ввели пароль, то указанная после sudo команда исполнится от имени root .

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

установите приложение gksu. После этого откройте диалог запуска сочетанием клавиш Alt + F2 и введите

Например, для запуска файлового менеджера Nautilus надо ввести


Через запущенный таким образом Nautilus вы сможете как угодно изменять любые файлы на компьютере.

Будьте предельно внимательны при использовании Nautilus с правами root ! Вы сможете безо всяких предупреждений безвозвратно удалить любой системный файл, что спокойно может привести к неработоспособности всей системы.

Редактирование конфигурационных файлов

Важнейшим примером применения вышеописанной технологии «прикидывания» рутом является редактирование конфигурационных файлов системы. Я уже говорил, что все настройки системы и всех приложений в Linux хранятся в виде текстовых файлов. Так вот, редактировать вы можете только файлы, принадлежащие вам, то есть только настройки, касающиеся вашего пользователя. А для редактирования системных параметров вам понадобятся права администратора.

Многие файлы вы сможете открыть, но не сможете что-либо в них изменить, вам просто не будет доступна операция сохранения:


Конечно, можно открывать конфигурационные файлы с правами root через диалог запуска приложений командой

Однако в диалоге запуска не работает автодополнение, следовательно путь до файла вам придётся набирать вручную, что не всегда удобно. Поэтому можно для запуска текстового редактора от имени суперпользователя использовать терминал, например:


Учтите, что sudo - это чисто консольная утилита, поэтому использовать её в диалоге запуска приложений нельзя, хотя из терминала через неё можно запускать графические приложения. А gksudo наоборот, утилита графическая, поэтому её не стоит использовать в терминале, хотя это и не запрещено.

В итоге откроется редактор с возможностью сохранения изменений:


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

Итак, я немного рассказал про систему управления правами доступа в Ubuntu, надеюсь, вы поняли хотя бы основы. Я настоятельно рекомендую вам самостоятельно до конца разобраться в системе прав доступа к файлам и в утилите sudo . Чуть подробней про sudo можно почитать, например, на нашей вики. А пока продолжим знакомство с основами работы в Ubuntu, осталось рассмотреть ещё одну тему:

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

Типы пользователей в Linux

Каждый файл и каталог в Linux имеет три категории пользователей:

Владелец — пользователь, создавший файл/каталог.

Группа — все пользователи, принадлежащие к некоторой заданной группе, будут иметь одинаковые разрешения группы на доступ к файлу. Предположим, у вас есть проект, в котором несколько человек требуют доступа к файлу. Вместо того, чтобы вручную назначать права доступа каждому пользователю, вы можете добавить их всех в одну группу и назначить права доступа группы к файлу таким образом, чтобы только члены данной группы (и никто другой) могли читать или изменять файлы. Даже если вы единственный пользователь системы, вы все равно будете частью многих групп.

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

Другими словами, Владелец — это один пользователь, Группа — это совокупность пользователей, а Остальные — совокупность из всех остальных пользователей системы.

Права доступа/Разрешения

Каждый файл и каталог в Linux имеет следующие три типы разрешений для всех трех вышеописанных категорий пользователей:

Чтение/Просмотр (Read) — дает право открывать и читать файл. Разрешение на чтение каталога дает возможность просматривать его содержимое.

Запись/Изменение (Write) — дает право изменять содержимое файла. Разрешение на запись в каталог дает право добавлять, удалять и переименовывать файлы, хранящиеся в каталоге. Рассмотрим сценарий, в котором у вас есть разрешение на запись в файл, но нет разрешения на запись в каталог, где хранится файл. Вы сможете изменить содержимое файла, но вы не сможете переименовать, переместить или удалить файл из каталога.

Выполнение (eXecute) — в Linux вы не сможете запустить программу, если не задано разрешение на выполнение, но вы все равно сможете видеть/изменять программный код (при условии, что установлены разрешения на чтение и запись), но не запускать его.

Пример на практике

Рассмотрим следующий пример:


Чтобы изменить права доступа к файлу, пользователь может открыть выпадающее меню и для каждой категории пользователей выбрать нужное разрешение. Кроме того, вы можете сделать файл Исполняемым, позволяя ему работать как программа, установив флажок "Является выполняемым" .

Примечание: Команда ls используется для вывода содержимого каталогов и информации о файлах. Ключ –l используется для вывода детальной информации о правах доступа, владельце, размере файла и пр.

Если применить команду ls -l к нашему файлу Адреса.txt, то мы будем наблюдать такой вывод:


Выходные данные содержат следующую информацию:


Тип — обозначает тип объекта. Это может быть обычный файл ( - ), каталог ( d ) или ссылка ( l ).

Разрешения (права доступа) — в этом поле отображается набор разрешений для файла, о которых мы поговорим ниже.

Жесткая ссылка — отображает количество ссылок, имеющихся у файла. По умолчанию устанавливается значение 1 .

Владелец — имя пользователя, который владеет файлом. Часто (но не всегда) совпадает с именем его создателя.

Группа — группа, имеющая доступ к файлу. Одновременно владеть файлом может только одна группа.

Размер — размер файла в байтах.

Дата модификации — дата и время последнего изменения файла.

Имя файла.

Информация о правах доступа к файлу сгруппирована в строку символов, перед которой стоит - . При этом каждая буква задает определенное разрешение, а именно:

r (read) — разрешение на чтение/просмотр файла;

w (write) — разрешение на запись/изменение файла;

x (execute) — разрешение на выполнение файла;

– — нет набора разрешений.

Пользователи, имеющие разрешение на Чтение, могут видеть содержимое файла (или файлов в каталоге), однако они не могут изменить его (или добавить/удалить файлы в каталоге). С другой стороны, те, у кого есть права на Запись, могут редактировать (добавлять и удалять) файлы. Наконец, возможность Выполнения означает, что пользователь может запустить файл. Эта опция в основном используется для запуска скриптов.

Разрешения всегда идут именно в таком порядке, то есть rwx . А далее, они устанавливаются для всех трех категорий пользователей в порядке Владелец, Группа и Остальные/Другие:


Итак, если вы вооружитесь вышеприведенной картинкой и посмотрите на вывод команды ls –l , то сможете сказать следующие вещи о правах доступа к файлу Адреса.txt:

-rw-r--r-- 1 diego diego 2 фев 17 21:15 /home/diego/Документы/Адреса.txt

Владелец diego имеет права на чтение и запись в файл.

Группа diego имеет права только на чтение.

Остальным пользователям (всем, кто имеет доступ к системе) также доступно только чтение файла. Вам не нужно знать кто этот другой пользователь, потому что к другому относятся все остальные пользователи.

Теперь попробуем применить ту же самую команду ls -l , но к другому файлу:

$ ls -l /bin/ping
-rwxr-xr-x 1 root root 77432 фев 2 20:49 /bin/ping

Владельцем файла является пользователь root, который имеет права доступа на чтение, изменение и выполнение файла ( rwx ).

Все члены группы root имеют права на чтение и выполнение файла ( r-x ).

Остальные пользователи тоже имеют права на чтение и выполнение файла ( r-x ).

Замечу, что один пользователь может быть членом нескольких групп, но только основная группа пользователя может быть назначена файлу. Основную группу пользователя можно найти с помощью команды id , например, id -gn <имя_пользователя> . Оставьте имя_пользователя пустым, если вы хотите получить информацию о своей собственной основной группе.

Теперь, когда вы знаете, как узнать права доступа к файлу, давайте посмотрим, каким образом можно сменить их и владельца файла.

Изменение прав доступа. Команда chmod

Синтаксис команды chmod следующий:

chmod [разрешения] [имя файла]

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

Использование команды chmod в символьном режиме

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

o — остальные пользователи;

a — для всех трех категорий (Владелец + Группа + Остальные).

А также используются следующие математические символы:

= — переопределение существующих разрешений новым значением.

Теперь, когда вы знаете, как это работает, давайте попробуем использовать команду chmod в символьном режиме и установим новые разрешения для ранее упомянутого файла Адреса.txt следующим образом:

чтение, запись и выполнение для Владельца;

чтение и запись для членов Группы;

чтение для Остальных пользователей.

chmod u=rwx,g=rw,o=r /home/diego/Документы/Адреса.txt

В результате мы получаем:

$ chmod u=rwx,g=rw,o=r /home/diego/Документы/Адреса.txt
diego@debian:

$ ls -la /home/diego/Документы/Адреса.txt
-rwxrw-r-- 1 diego diego 2 фев 17 21:15 /home/diego/Документы/Адреса.txt

Как видите, права доступа к файлу изменились с -rw-r--r-- на -rwxrw-r-- , что нам и требовалось.

А если мы теперь хотим убрать разрешение на чтение файла для пользователей, не входящих в нашу группу и не являющихся владельцем файла, то достаточно выполнить следующее:

chmod o-r /home/diego/Документы/Адреса.txt

$ chmod o-r /home/diego/Документы/Адреса.txt
diego@debian:

$ ls -la /home/diego/Документы/Адреса.txt
-rwxrw---- 1 diego diego 2 фев 17 21:15 /home/diego/Документы/Адреса.txt

Права доступа к файлу изменились с -rwxrw-r-- на -rwxrw---- .

Подумав, мы решаем дать полные права (за исключением права на выполнение) абсолютно всем пользователям системы, и выполняем команду:

$ chmod a+rw-x /home/diego/Документы/Адреса.txt

$ chmod a+rw-x /home/diego/Документы/Адреса.txt
diego@debian:

$ ls -la /home/diego/Документы/Адреса.txt
-rw-rw-rw- 1 diego diego 2 фев 17 21:15 /home/diego/Документы/Адреса.txt

Права доступа к файлу изменились с -rwxrw---- на -rw-rw-rw- . Все пользователи могут читать и изменять наш файл, но ни у кого нет права на его выполнение.

Использование команды chmod в числовом режиме

Другой способ указать права доступа к файлу — применить команду chmod в числовом режиме. В этом режиме каждое разрешение файла представлено некоторым числом (в восьмеричной системе счисления):

r (чтение/просмотр) = 4

w (запись/изменение) = 2

x (выполнение) = 1

– (не задано) = 0

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

Число Тип разрешения Символ
0 Нет разрешения −−−
1 Выполнение −−x
2 Запись −w−
3 (2+1) Запись + Выполнение −wx
4 Чтение r−−
5 (4+1) Чтение + Выполнение r−x
6 (4+2) Чтение + Запись rw−
7 (4+2+1) Чтение + Запись + Выполнение rwx

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

В качестве примера, давайте посмотрим на наш файл Адреса.txt, права которого, я напомню, мы сконфигурировали (в символьном режиме) с помощью команды:

chmod u=rwx,g=rw,o=r /home/diego/Документы/Адреса.txt

Те же параметры разрешений, но уже в числовом формате, можно определить следующим образом:

chmod 764 /home/diego/Документы/Адреса.txt

Теперь поменяем разрешения файла так, чтобы Владелец мог читать и писать, Группа — только читать, а у Остальных — вообще не было прав на доступ. Судя по вышеприведенной таблице, для Владельца числовое представление прав доступа соответствует числу 6 ( rw- ), для Группы — числу 4 ( r-- ), а для Остальных — 0 ( --- ). В совокупности должно получиться 640 ( rw-r----- ):

$ chmod 640 /home/diego/Документы/Адреса.txt

$ chmod 640 /home/diego/Документы/Адреса.txt
diego@debian:

$ ls -la /home/diego/Документы/Адреса.txt
-rw-r----- 1 diego diego 2 фев 17 21:15 /home/diego/Документы/Адреса.txt

Как видите, права изменились с -rwxrwr-- на -rw-r----- , этого мы и хотели.

Смена владельца и группы

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

chown [имя_пользователя] [имя_файла]

Если вы хотите сменить не только владельца, но также и группу для файла или каталога, то синтаксис будет следующим:

chown [имя_пользователь]:[группа] [имя_файла]

Если вы просто хотите изменить группу, а владельца оставить прежним, то синтаксис примет вид:

chown :[группа] [имя_файла]

chgrp [группа] [имя_файла]

В качестве тренировки давайте сменим владельца и группу файла Адреса.txt на пользователя root и группу root (при этом вам могут понадобиться права суперпользователя):

$ sudo chown root:root /home/diego/Документы/Адреса.txt
[sudo] пароль для diego:
diego@debian:

$ ls -la /home/diego/Документы/Адреса.txt
-rw-r----- 1 root root 2 фев 17 21:15 /home/diego/Документы/Адреса.txt
diego@debian:

Как вы можете видеть, владелец и группа файла сменились с diego:diego на root:root .

Заметьте, что мне пришлось использовать sudo с chown . Это потому, что здесь задействован пользователь root, и чтобы иметь с ним дело, вам нужны права суперпользователя.

Есть ли приоритет в правах доступа к файлам?

Представим ситуацию, когда владелец не имеет никаких разрешений на доступ к файлу, группа имеет разрешение на чтение, в то время как другие пользователи имеют разрешения на чтение и запись.

----r--rw- 1 diego coolgroup 2 фев 17 21:15 /home/diego/Документы/Адреса.txt

Теперь, если пользователь diego попытается прочитать файл с помощью команды cat или less , сможет ли он это сделать? Ответ — нет, потому что у него нет разрешения на чтение.

Но как же так? Ведь пользователь diego является частью группы coolgroup, а группа имеет доступ на чтение. И даже все другие пользователи имеет разрешение на чтение и запись! Это должно означать, что каждый (включая пользователя diego) может читать и изменять файл, не так ли? Неправильно!

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

Если процесс инициировал не Владелец файла, то система проверяет Группу. Если пользователь, инициировавший процесс, находится в той же Группе, что и Группа-владелец файла, то считываются биты разрешений для Группы.

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

Подсказки

Файл /etc/group содержит все группы, определенные в системе.

Вы можете использовать команду groups , чтобы найти все группы, членом которых вы являетесь:


Вы можете использовать команду newgrp для работы в качестве члена группы отличной от вашей заданной по умолчанию группы:


Две группы не могут владеть одним и тем же файлом.

В Linux нет вложенных групп. Одна группа не может быть подгруппой другой.

Подводя итоги

Linux-системы являются многопользовательскими системами, в которых применяются права доступа к файлам и каталогам.

В Linux-системах различают три категории пользователей, а именно: Владелец, Группа и Остальные/Другие.

Права доступа к файлам подразделяются на права Чтения/Просмотра, Записи/Изменения и Выполнения, обозначаемые буквами r , w и x .

Права доступа к файлу могут быть изменены командой chmod , которая поддерживает как числовой, так и символьный режимы задания прав доступа.

В данном посте рассматривается создание и администрирование пользователей в операционных системах (ОС) на базе ядра Linux. Для примера будет использоваться ОС Oracle Linux 7.5. Будут рассмотрены следующие вопросы:

  • Типы пользователей
  • Основные файлы, хранящие информацию о пользовательских учетных записях
  • Администрирование (управление) учетными записями

Типы пользователей

В Linux есть три типа пользовательских учетных записей – root (суперпользователь), системные и пользовательские.

  • root(суперпользователь) – учетная запись, имеющая полный контроль над системой. Суперпользователь может запускать любую команду без каких-либо ограничений;
  • системные – эти учетные записи нужны для операций над системными компонентами, например для почтовых или sshd учетных записей. Эти учетные записи обычно нужны для выполнения каких-либо конкретных функций в системе, и потому не модифицируются;
  • пользовательские – учетные записи этого типа предоставляют доступ к системе для пользователей. Обычные пользователи имеют именно этот тип учетной записи, что ограничивает их доступ к критично важным системным файлам и папкам.

Основные файлы, хранящие информацию о пользовательских учетных записях

Основные параметры пользовательской учетной записи это: Имя, пароль, UID, GID, Комментарий, Домашняя директория, командная оболочка.

Основные файлы ОС, хранящие информацию о пользовательских учетных записях:

  • /etc/passwd– Содержит информацию об учетной записи и пароле. Это основной файл, содержащий информацию об учетных записях.
  • /etc/shadow– Содержит пароли в зашифрованном виде (SHA-512) для соответствующей учетной записи.
  • /etc/group– Содержит информацию о группах для каждой учетной записи.
  • /etc/gshadow– Содержит информацию, касающуюся безопасности групп.

Далее подробно рассмотрим каждый файл и его содержимое.

  • loginID – имя пользователя (Имя должно быть уникальным и состоять максимум из 32 символов (любые, кроме двоеточия [:] и символа новой строки [\n] )).
  • x – плейсхолдер для зашифрованного пароля хранящегося в файле /etc/shadow.
  • UID – номер, использующийся системой, для идентификации пользователя (UID для обычных пользователей должны иметь диапазон от 100 до 2^32-1).
  • GID – номер, использующийся системой, для идентификации основной группы пользователя.
  • comment (GECOS) – комментарий, обычно содержит полное имя пользователя.
  • home_directory – полный путь к пользовательской домашней директории. В данной директории хранятся конфигурационные файлы пользователя.
  • login_shell – пользовательское командная оболочка.

После установки ОС файл /etc/passwd выглядит (по умолчанию) как на скриншоте:


В файле /etc/shadow находятся записи в следующем виде:

  • loginID – имя пользователя,
  • password – пароль в зашифрованном виде. Пароль должен минимум в 8 символов длиной, включая спецсимволы, цифры, и буквы. Обычно формат пароля $id$salt$hashed, где $id – алгоритм, которым шифруется пароль ($1$ is MD5, $2a$ is Blowfish, $2y$ is Blowfish, $5$ is SHA-256, $6$ is SHA-512).
  • lastchg – количество дней c 1.01.1970, когда пароль был изменен в последний раз.
  • min – минимальное число дней между сменами пароля
  • max – максимальное число дней, в течении которых пароль будет валиден
  • warn – количество дней за которые пользователь будет предупрежден об истечении пароля
  • inactive – количество дней, в течении которых пользователь может быть неактивен перед блокировкой
  • expire – дата, когда истекает срок пользовательской учетной записи

Скриншот файла /etc/shadow


Структура файла /etc/group следующая:

  • groupname – имя группы (максимум 8 символов);
  • group-password – пустое поле или звездочка;
  • GID – идентификатор группы;
  • username-list – список пользователей, для которых данная группа является вторичной.


Структура файла /etc/gshadow следующая:

  • groupname – имя группы;
  • encrypted-password — зашифрованный пароль группы. Если задан, то пользователи, не являющиеся членами группы, могут присоединиться к группе введя пароль этой группы используя команду newgrp. Если значение этого поля равно !, то пользователи не смогут присоединиться к группе командой newgrp. Значение !! означает то же самое, что и . однако еще обозначает то, что пароль еще не был задан. Если значение пусто – в группу могут логиниться только члены группы;
  • group-admins — члены группы, перечисленные в этом поле, могу добавлять или убирать членов группы используя команду gpasswd;
  • group members — члены группы, перечисленные в этом поле, являются обычными пользователями данной группы.


Администрирование (управление) учетными записями

Добавление пользователей

Для того, чтобы добавить пользовательскую учетную запись, необходимо выполнить команду useradd. Пример добавления пользователя с именем test:

Проверим, появилась ли соответствующая запись в файле /etc/passwd:

Зададим пароль пользователю dushanbe командой passwd:

Далее появится приглашение ввести новый пароль.

Проверим, появилась ли соответствующая запись в файле /etc/shadow:

Модификация пользователей

Для модификации пользователей используется команда usermod. Попробуем изменить имя пользователя dushanbe на test с помощью команды usermod и опции –l.

Проверим, изменилась ли соответствующая запись в файле /etc/passwd:

Удаление пользователей

Для удаления пользователей используется команда userdel (опция –r так же удалит домашнюю директорию пользователя).

Добавление группы

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

Проверим, появилась ли соответствующая запись в файле /etc/group:

Модификация группы

Производится командой groupmod. Сменим имя группе testgrp на testg:

Проверим, изменилась ли соответствующая запись в файле /etc/group:

Удаление группы

Для удаления группы из ОС используется команда groupdel:



Добавление/удаление учетной записи в группу

usermod –G groupname username – добавить учетную запись в группу;

gpasswd –d username groupname – удалить учетную запись из группы.


В примере проверим файл /etc/group на наличие группы dushanbe и добавим в эту группу пользователя molly. Проверим файл еще раз, и затем – удалим пользователя из группы. Снова проверяем файл, чтобы убедиться в правильности выполнения команды:

Сегодня я хочу поговорить о пользователях в Linux. Мы познакомимся с типами пользователей и узнаем в каких файлах хранится связанная с ними информация. Изучим команды позволяющие управлять пользователями и изменять их данные. Рассмотрим примеры создания пользователей с различными параметрами и последующим изменениям пользовательских настроек.

Типы пользователей

В ОС Linux существует три типа пользователей:

root (от англ. root - корень) - суперпользователь, аккаунт в UNIX-подобных системах, владелец которого имеет право на выполнение всех операций без исключения. Присутствует в системе по умолчанию.

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

Обычные пользователи - учетные записи пользователей, допущенных к управлению системой. Создаются системным администратором.

Каждый пользователь помимо имени имеет числовой идентификатор пользователя UID (User IDentificator). Пользователь root имеет идентификатор 0. Системные пользователи имеют идентификаторы от 1 до 100. Обычные пользователи имеют UID от 100.

Пользователи могут объединяться в группы. Каждый пользователь обязательно входит в ту или иную группу. Группы имеют числовой идентификатор группы GID (Group IDentificator).

Информация пользователей

В системе присутствует следующая информация о каждом пользователе:

  • Имя пользователя (user name) - в рамках системы имя должно быть уникальным. В именах должны использоваться только английские буквы, числа и символы _ и . (точка).
  • Идентификационный номер пользователя (UID) - является уникальным идентификатором пользователя в системе. Система отслеживает пользователей по UID, а не по именам.
  • Идентификационный номер группы (GID) - обозначает группу, к которой относится пользователь. Каждый пользователь может принадлежать к одной или нескольким группам. Принадлежность пользователя к группе устанавливает системный администратор, чтобы иметь возможность ограничивать доступ пользователей к тем или иным ресурсам системы.
  • Пароль (password) - пароль пользователя в зашифрованном виде.
  • Полное имя (full name) - помимо системного имени может присутствовать полное имя пользователя, например фамилия и имя.
  • Домашний каталог (home directory) - каталог, в который попадает пользователь после входа в систему. Подобный каталог имеется у каждого пользователя, все пользовательские каталоги хранятся в директории /home.
  • Начальная оболочка (login shell) - командная оболочка, которая будет запускаться при входе в систему. Например, /bin/bash.

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

passwd (etc/passwd) - содержит информацию о пользователях, имеет следующий формат записи - "user_name:password:UID:GID:full_name:home_directory:login_shell". Элементы записи должны разделяться символом - ":" (двоеточие) и записываются без пробелов. Если пароль хранится в зашифрованном виде в файле /etc/shadow, то вместо пароля указывается - "x".

group (etc/group) - информация о группах, формат - "group_name:password:GID:user1,user2,user3". Элементы записи должны разделяться символом - ":" (двоеточие) записываются без пробелов. Имена пользователей записываются через запятую.

У файлов /etc/passwd и /etc/group всегда определенные права доступа: чтение и запись для root, для остальных только чтение.

shadow (etc/shadow) - в этом файле хранятся так называемые "теневые пароли", информация о паролях пользователей в зашифрованном виде. Cделано это для безопасности, так как файл /etc/passwd может читаться кем угодно, а файл /etc/shadow может прочитать только root.

gshadow (etc/gshadow) - то же самое что и shadow, только для паролей групп.

Помимо основных, в системе присутствуют дополнительные файлы.

useradd (etc/default/useradd) - файл задающий свойства "по умолчанию" для всех добавляемых пользователей. Можно просмотреть командой - useradd -D.

login.defs (/etc/login.defs) - содержит настройки для создания новых пользователей.

/etc/skel - каталог с дефолтными файлами, которые копируются в домашний каталог каждого пользователя при его создании.

Команды управления

Для управления пользователями используются следующие команды:

useradd или adduser - добавить нового пользователя.

passwd - задать пароль для пользователя.

usermod - изменить параметры учетной записи пользователя.

userdel или deluser - удалить учетную запись пользователя.

Для управления группами используются следующие команды:

groupadd - добавляет новую группу.

gpasswd - устанавливает пароль группы.

groupmod - изменение параметров группы.

groupdel - удаление группы.

Обычное добавление пользователя

При создании нового пользователя автоматически указываются несколько параметров. В файле /etc/passwd, заводится запись с указанием имени пользователя, домашнего каталога, UID, GID. В каталог помещаются файлы инициализации командной оболочки. Все можно указать вручную, при помощи дополнительных опций. Список опций можно просмотреть командой useradd --help или useradd -h.

Для создания пользователя достаточно выполнить команду useradd и указать его имя.

Синтаксис команды: useradd options username

Теперь нужно задать пароль для созданного пользователя. Пароль задается командой passwd с указанием имени пользователя.

Можно задать пароль для пользователя сразу при создании, например так:

Проверим с какими параметрами был создан пользователь:

Подобным образом команда useradd работает в CentOS и других подобных ему системах, но в Debian или Ubuntu она просто создаст голого пользователя, а все остальное придется добавлять потом вручную.

Чтобы создать пользователя с подобными параметрами в Debian & Ubuntu команда useradd должна выглядеть следующим образом.

Поэтому в Ubuntu & Debian удобнее пользоваться утилитой adduser, при ее использовании нужно будет ответить на несколько вопросов, в процессе ее выполнения будут видны все шаги по созданию нового пользователя.

Проверим как создался пользователь.

Пользователь создался как и в CentOS, за исключением того, что там мы не указывали полного имени "Techlist. ", через запятые должны были быть указаны номера комнаты и телефонов, которые мы пропустили нажав на <Enter>.

Создание пользователя с домашней директорией, отличной от дефолтной директории

По умолчанию команда useradd создает домашний каталог пользователя в директории /home, имя домашнего каталога всегда совпадает с именем пользователя. Например при создании пользователя techlist, создается домашняя директория /home/techlist.

Допустим что возникла необходимость задать пользователю домашний каталог с размещением и именем отличающимися от стандартных настроек. При использовании опции -d можно задать свой каталог для пользователя.

Как можно видеть, пользователь techlist создался с домашним каталогом в /opt/tech.

Создание пользователя с определенным UID и GID

Каждому пользователю при его создании присваивается UID, присвоение идет по порядку: 1000, 1001 и т.д. При использовании опции -u пользователю можно задать определенный UID. Для примера создадим пользователя techlist c UID равным 777.

Сначала создадим группу techlist c GID равным 777.

Обратите внимание, группа создана но пользователей в нет, теперь можно создать пользователя с UID=777 и указать его принадлежность к группе techlist с помощью опции -g и указания GID 777.

Создание пользователя с указанием принадлежности к нескольким группам

Если пользователь должен принадлежать сразу к нескольким группам, то указывается опция -G, после чего через запятую указываются группы к которым будет принадлежать пользователь.

Допустим что новый пользователь techlist должен принадлежать к следующим группам: group_1, group_2 и group_3.

Создание пользователя без домашнего каталога

Иногда пользователю не требуется домашний каталог, для этого используется опция -M.

Создание пользователя с истекающим сроком действия аккаунта

По умолчанию каждый пользователь не имеет срока действия аккаунта. Срок действия можно установить задав дату истечения аккаунта. Для этого следует использовать опцию -e после которой указывается дата истечения аккаунта в формате YYYY-MM-DD. Создадим пользователя techlist с истечением аккаунта в 2017-05-01, по достижении даты аккаунт будет недействителен.

Создание пользователя с истекающим сроком действия пароля

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

Создание пользователя с указанием доп. информации

Иногда может возникнуть необходимость указать примечание для пользователя, в виде краткой заметки или указания имени и фамилии пользователя. Для этого можно воспользоваться опцией -c. Создадим пользователя vasek, с указанием имени и фамилии Vasya Pupkin.

Создание пользователя с указанием командной оболочки

Для того чтобы указать командную оболочку для пользователя используется опция -s

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

Изменение существующего пользователя

Иногда может потребоваться внести некоторые изменения в аккаунт пользователя. Сделать это можно при помощи команды usermod.

Синтаксис команды: usermod options username

Команда usermod имеет дополнительные опции, посмотреть список доступных опций можно командой usermod -h.

Рассматривать применение команды будем на примере пользователя techlist.

Пользователь был создан с дефолтными настройками.

Добавление доп. информации пользователю

Для начала добавим имя и фамилию пользователя, опцией -c.

Изменение домашнего каталога пользователя

По умолчанию домашним каталогом пользователя techlist является /home/techlist. Изменим его на каталог /opt/techlist, при помощи опции -d и опцией -m перенесем в новый каталог все содержимое старого.

Установка даты истечения срока аккаунта

Назначим дату истечения действия аккаунта, аккаунт будет действовать до 2017-05-01, дата задается опцией -e.

Изменение группы пользователя

Изменим группу пользователя techlist. Сначала посмотрим к каким группам он принадлежит.

Добавим пользователя techlist к группе group_1, используя опцию -g.

Как можно увидеть группа изменилась, если раньше была 1001(techlist), то теперь стала 1002(group_1).

Как добавить пользователя к новой группе без удаления из предыдущей? Для этого существует опция -G.

Теперь пользователь принадлежит одновременно к двум группам 1002(group_1) и 1003(group_2).

Добавление пользователя в дополнительные группы

Для добавления пользователя в одну из дополнительных групп, одновременно используются две опции -a и -G. В качестве дополнительной группы будет выступать группа wheel.

Теперь пользователь techlist относится к дополнительной группе wheel, что может наделить его привилегиями выполнять root-команды.

Изменение имени пользователя

Существующему пользователю можно изменить имя, изменим имя пользователя techlist на techlist_admin, делается это опцией -l.

Блокировка аккаунта пользователя

Для блокировки аккаунта пользователя достаточно выполнить команду с опцией -L.

Разблокировка аккаунта пользователя

Для того чтобы разблокировать аккаунт пользователя, достаточно выполнить команду с опцией -U.

Изменение командной оболочки пользователя

Чтобы изменить командную оболочку пользователя, надо выполнить следующую команду с опцией -s. Изменим пользовательскую оболочку для techlist_admin с /bin/bash/ на /bin/sh/.

Изменение UID и GID пользователя

Для изменения UID пользователя используется опция -u.

Для изменения GID пользователя используется опция -g.

Таким образом можно управлять пользователями и изменять их по своему усмотрению.

Удаление пользователей

Для удаления пользователей в Linux существуют две команды userdel и deluser, команда userdel используется в RedHat - подобных системах, а deluser в Debian и производных системах. Помимо deluser в Debian можно использовать и userdel.

userdel

синтаксис команды: userdel options username

Для того чтобы удалить пользователя, выполняем команду userdel. Команда userdel не удаляет пользователя если он работает в системе, сначала необходимо завершить все связанные с ним процессы. Для просмотра дополнительных опций команды userdel, используется ключ -h.

-f - позволяет удалить залогиненного т.е. работающего в системе пользователя. Рекомендуется использовать только в самых крайних случаях, данная опция может привести к краху системы.

deluser

синтаксис команды: deluser options username

Для просмотра справки используется команда deluser -h.

Настройки команды находятся в файле /etc/deluser.conf, здесь задается поведение утилиты при удалении пользователя.

Правильное удаление пользователя

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

Блокировка пользователя

Удаляемый пользователь не должен быть залогинен в системе и использовать какие либо файлы или программы.

Блокировку пользователя мы рассматривали выше.

Убить все пользовательские процессы

Если пользователь залогинен, то его нужно выкинуть из системы. Для этого найдем все процессы запущенные от его имени и завершим их.

Узнаем что это за процессы используя их pid.

Hичего серьезного нет, можно завершать все. Завершение всех процессов вышвырнет пользователя из системы, а заново войти он не сможет, ибо был заранее заблокирован.

Читайте также: