Linux что такое системный пользователь

Пользователи в Linux

Учётные записи

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

Системное имя (user name)

Это то имя, которое вводит пользователь в ответ на приглашение login: . Оно может содержать только латинские буквы и знак “ _ ”. Это имя используется также в качестве имени учётной записи.

Идентификатор пользователя (UID)

Linux связывает системное имя c идентификатором пользователя в системе — UID (User ID). UID — это положительное целое число, по которому система и отслеживает пользователей 1 . Обычно это число выбирается автоматически при регистрации учётной записи, однако оно не может быть совершенно произвольным. В Linux есть некоторые соглашения относительно того, каким типам пользователей могут быть выданы идентификаторы из того или иного диапазона. В частности, UID от “ 0 ” до “ 100 ” зарезервированы для псевдопользователей 2 .

Идентификатор группы (GID)

Кроме идентификационного номера пользователя с учётной записью связан идентификатор группы. Группы пользователей применяются для организации доступа нескольких пользователей к некоторым ресурсам. У группы, так же, как и у пользователя, есть имя и идентификационный номер — GID (Group ID). В Linux каждый пользователь должен принадлежать как минимум к одной группе — группе по умолчанию. При создании учётной записи пользователя обычно создаётся и группа, имя которой совпадает с системным именем 3 , именно эта группа будет использоваться как группа по умолчанию для этого пользователя. Пользователь может входить более чем в одну группу, но в учётной записи указывается только номер группы по умолчанию. Группы позволяют регулировать доступ нескольких пользователей к различным ресурсам.

Полное имя (full name)

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

Домашний каталог (home directory)

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

Начальная оболочка (login shell)

Важнейший способ взаимодействовать с системой Linux — командная строка, которая позволяет пользователю вести «диалог» с системой: передавать ей команды и получать её ответы. Для этой цели служит специальная программа — командная оболочка (или интерпретатор командной строки), по-английски — shell. Начальная оболочка (login shell) запускается при входе пользователя в систему в текстовом режиме (например, на виртуальной консоли). Поскольку в Linux доступно несколько разных командных оболочек, в учётной записи указано, какую из командных оболочек нужно запустить для данного пользователя. Если специально не указывать начальную оболочку при создании учётной записи, она будет назначена по умолчанию, вероятнее всего это будет bash.

Читайте также:  Time resolution download windows 10

Все перечисленные данные об учётных записях хранятся в файле /etc/passwd . Сведения о конкретной учётной записи пользователя можно получить с помощью утилиты getent 4 :

Первый параметр, passwd — это название базы, в которой нужно производить поиск, оно совпадает с именем соответствующего конфигурационного файла. Второй параметр, tester — это название учётной записи пользователя (системное имя). getent выводит ту строчку /etc/passwd , где описана искомая учётная запись: в ней через “ : ” указаны системное имя, пароль (тут стоит буква “ x ”, потому что пароль спрятан в другом месте, об этом ниже), UID, GID, полное имя, домашний каталог и начальная оболочка.

В Linux пароль пользователя в явном виде не хранится нигде, но только в зашифрованном. В современных системах обычно применяются так называемые «теневые пароли» (shadow passwords), которые хранятся отдельно от остальных сведений об учётной записи, а также позволяют назначать дополнительные ограничения, в частности, «срок годности» пароля. В зависимости от строгости политики безопасности зашифрованные пароли пользователей могут храниться в общем файле /etc/shadow (менее строго) или в отдельном файле shadow для каждого пользователя. В ALT Linux по умолчанию используется схема tcb , реализующая более строгую политику. Для просмотра сведений из файла shadow требуются полномочия суперпользователя, это можно сделать с помощью команды getent passwd tester . Подробнее о возможностях теневых паролей можно прочитать в руководствах shadow(5) и tcb(5) .

Также отдельно хранится информация обо всех группах пользователей в системе, для этого предназначен файл /etc/group . Информацию о конкретной группе можно получить с помощью той же утилиты getent :

Запись в файле /etc/group устроена очень просто: сначала идёт имя группы (как и имя учётной записи, потом поле для пароля (здесь опять “ х ”, но пароли для группы используются очень редко), GID, список через запятую названий учётных записей (имён пользователей), входящих в данную группу. Любой пользователь может получить список названий групп, в которых он состоит командой groups , а более подробные сведения о своей или чужой учётной записи командой id имя_пользователя . Принадлежность к группе существенна только в одном отношении — прав доступа, поскольку для каждого файла определён не только пользователь-владелец, но и группа-владелец.

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

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

Для создания полноценного пользователя Linux нужно выполнить несколько относительно независимых действий:

  • создать запись в /etc/passwd , где присвоить учётной записи уникальное имя, UID и пр.;
  • создать домашний каталог пользователя, обеспечить пользователю доступ к его домашнему каталогу (сделать его владельцем каталога);
  • поместить в домашний каталог стандартное наполнение (обычно конфигурационные файлы), взятое из /etc/skel ;
  • модифицировать системные конфигурационные файлы, в частности, создать хранилище для приходящей почты для данного пользователя ( /var/spool/mail/tester ).

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

Сначала useradd добавляет учётную запись (имя пользователя — единственный параметр, в нашем примере — test ), заполняя её значениями по умолчанию и проводя все необходимые изменения в системе. С помощью дополнительных параметров при вызове useradd можно явно указать значение для того или иного поля учётной записи, также эта утилита позволяет модифицировать параметры создания пользователей по умолчанию. Подробности можно найти в руководстве useradd(8) . Утилита passwd , вызванная с правами суперпользователя, позволяет назначить данному пользователю любой пароль. При этом сведения о предшествующем пароле данного пользователя (если таковой был), будут полностью утрачены. passwd , вызванная обычным пользователем (без параметров), позволяет ему сменить свой собственный пароль, но для этого потребуется ввести текущий пароль пользователя.

Читайте также:  Команда обновить windows 10

Существуют аналогичные useradd утилиты для модификации параметров уже существующей учётной записи ( usermod ) и для удаления пользователей ( userdel ). Пользователь также может изменить некоторые некритичные сведения в своей учётной записи самостоятельно. В частности, для установки своего полного имени и некоторых других информационных полей учётной записи служит утилита chfn(1) из пакета shadow-change, сменить начальную оболочку поможет утилита chsh(1) (позволяет выбрать только одну из оболочек, перечисленных в /etc/shells ) из того же пакета. Обратите внимание, что в ALT Linux пользователь имеет право редактировать собственную учётную запись только в том случае, если установлен соответствующий режим доступа: команда control chsh должна возвращать public , аналогично control chfn . Установить нужный доступ может суперпользователь командой control chsh public (аналогично для chfn ).

Самую востребованную операцию по работе с группами — добавление пользователя в группу — проще всего выполнить простым редактированием файла /etc/group . Достаточно открыть этот файл в любом текстовом редакторе (естественно, с правами суперпользователя), найти строчку, начинающуюся с названия нужной группы, и добавить в конец этой строки имя нужного пользователя через запятую). Для управления группами существует комплект утилит groupadd(8) , groupdel(8) , groupmod(8) , подробности о работе с ними можно найти в соответствующих руководствах.

1Это может оказаться важным, например, в такой ситуации: учётную запись пользователя с именем test удалили из системы, а потом добавили снова. Однако с точки зрения системы это уже другой пользователь, потому что у него другой UID.

2Обычно Linux выдаёт нормальным пользователям UID, начиная с “ 500 ” или “ 1000 ”.

3Как правило, численное значение GID в этом случае совпадает со значением UID.

4Эта утилита также полезна для получения сведений о некоторых других системных ресурсах, см. getent —help .

Источник

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

Введение в систему аутентификации

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

  • — пользователь root
  • — системные (фиктивные) пользователи
  • — обычные пользователи

Каждому пользователю кроме имени присваивается числовой идентификатор пользователя (UID, User IDentificator). Пользователь root имеет UID равный 0. Системные пользователи имеют идентификаторы от 1 до 499. Обычные пользователи имеют UID от 500.
Для удобства управления доступом пользователей к файлам системы пользователи объединяются в группы. Каждый пользователь входит хотя бы в одну группу. Группе присваивается числовой идентификатор группы (GID — Group IDentificator).

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

Файл Описание
/etc/passwd пользователи
/etc/group группы пользователей
/etc/shadow зашифрованные пароли пользователей
/etc/gshadow зашифрованные пароли групп

Дополнительная информация располагается в файлах:

Файл Описание
/etc/default/useradd свойства по умолчанию для новых пользователей
/etc/login.defs настройки новых пользователей
/etc/skel/ каталог, файлы из которого копируются в домашний каталог нового пользователя

Файл /etc/passwd имеет следующий текстовый формат:

Все элементы записи разделяются символом : (двоеточие) и пишутся без пробелов. В случае, если пароль хранится в зашифрованном виде в файле /etc/shadow , то вместо пароля указывается символ x (икс).

Файл /etc/group имеет следующий текстовый формат:

Все элементы записи разделяются символом : (двоеточие) и пишутся без пробелов. Список пользователей группы разделяется символом , (запятая).

К файлам /etc/passwd и /etc/group должны быть заданы права доступа: чтение и запись для пользователя root и только чтение — для всех остальных (644).

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

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

Команда Описание
useradd добавить нового пользователя
passwd установить пароль пользователя
usermod измененить параметры учетной записи пользователя
userdel удалить учетную запись пользователя

Для управления группами служат команды.

Команда Описание
groupadd создать новую группу
gpasswd установить пароль группы
groupmod измененить параметры группы
groupdel удалить группу
Читайте также:  Мониторинг использования диска linux

Управление правами доступа к файлам и каталогам

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

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
тип файла SUID SGID T-бит права владельца права группы права всех остальных

Первые четыре бита отвечают за тип файла:

Двоичный код Десятичный код Тип файла
1010 10 сокет
1100 12 символическая ссылка
1000 8 обычный файл
0110 6 блочное устройство
0100 4 каталог
0010 2 символьное устройство
0001 1 именованный канал

Далее следуют три бита, значение которых будет рассмотрено в следующем пункте.

Затем следуют три группы по три бита каждая. Первые три бита управляют правами доступа к файлу владельца этого файла, следующие три бита задают права группы, к которой принадлежит файл и, наконец, последние три бита — права всех остальных.
Первый бит задает право на чтение файла, второй бит право на запись в файл и третий бит право на выполнение файла. Из трех бит всего возможны восемь комбинаций, определяющих права доступа к файлу:

Двоичный код Восьмеричный код Права доступа к файлу
100 4 чтение (r)
010 2 запись (w)
001 1 выполнение (x)
110 6 чтение и запись (rw)
101 5 чтение и выполнение (rx)
011 3 запись и выполнение (wx)
111 7 чтение, запись и выполнение (rwx)
000 0 нет доступа

Для управления правами доступа к файлам служит команда:

chmod [uga] [+-=] [rwx] имя_файла

Например, для того, чтобы позволить владельцу файла и группе читать и редактировать файл test.txt необходимо выполнить команду:

chmod ug=rw test.txt

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

chmod 660 test.txt

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

Команда Описание
chown владелец имя_файла изменить владельца файла
chgrp группа имя_файла изменить группу, к которой принадлежит файл

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

Биты 11, 10, 9 в первом слове дескриптора файла определяют дополнительные свойства файла.
Бит 9 указывается для каталогов и показывает возможность удаления файлов в этом каталоге только владельцем файлов. Например, для защиты от удаления файлов из каталога test всеми остальными установить этот T-бит (бит защищенности) в значение 1 с помощью команды:

Бит 11 (бит SUID) позволяет любому пользователю выполнять исполняемый файл с правами владельца этого файла.
Бит 10 (бит SGID) позволяет любому пользователю выполнять исполняемый файл с правами группы этого файла.
Например, может быть задана возможность исполнения скрипта script.sh кем угодно с правами владельца и группы с помощью команды:

chmod ug+s script.sh

И, наоборот, для отмены такой возможности:

chmod ug-s script.sh

Для поиска файлов с установленными битами SUID и SGID можно выполнить команду:

find / -type f -perm /6000

Для каждого найденного файла можно выполнить команду. Например, для отображения информации о файлах с установленными битами SUID и SGID командой ls -ld необходимо выполнить команду:

find / -type f -perm /6000 \-exec ls -ld <> \;

Для выполнения некоторых команд от имени суперпользователя служит команда sudo . Для получения такой возможности непривелигерованный пользователь должен иметь запись в файле /etc/sudoers . Редактирование этого файла лучше осуществлять командой visudo , которая запустит текстовый редактор vim , заблокирует на время файл /etc/sudoers и проверит введенные данные.
Например, для разрешения пользователю master выполнять команды /bin/mount и /bin/umount в файле /etc/sudoers необходимо добавить строки:
Чтобы дать пользователю master права суперпользователя необходимо записать в файл /etc/sudoers :
Для получения возможности выполнять команды без ввода пароля:

Источник

Оцените статью