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

Добавление пользователей в систему, управление паролями и т.д.

Статья включает:

Для чего служат учетные записи пользователей?
База данных учетных записей
Управление собственной учетной записью
Управление другими учетными записями
Устранение неполадок

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


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

Для чего служат учетные записи пользователей?

Пользовательская учетная запись связывает текстовое имя пользователя с числовым идентификатором пользователя, идентификатором группы, паролем для входа в систему, полным именем, домашним каталогом и начальным командным интерпретатором (login shell). Эти данные хранятся в файлах /etc/passwd и /etc/shadow, которые используются утилитами входа в систему и другими приложениями, нуждающимися в информации учетных записей.


Note: Имена пользователей и пароли должны создаваться с учетом регистра.

Учетные записи позволяют выполнять следующие действия:

Группы (groups) используются для связывания аналогичных прав доступа с группами пользователей. Список членов группы определяется записями в файлах /etc/passwd и /etc/group, а права доступа для членов группы – идентификатором группы выполняющейся программы, идентификатором группы и правами доступа к файлам и каталогам. При входе в систему пользователь считается принадлежащим к группе, указанной в файле /etc/passwd. Переключиться в другую группу можно с помощью утилиты newgrp.

Учетные записи и идентификаторы пользователей: вход в систему, считывание и права доступа

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


Note: Изменение имени пользователя, группы, идентификатора и прочих параметров в базе данных учетных записей не влияет на доступ к файлам до тех пор, пока пользователь не войдет в систему заново.

Пользователь root (с идентификатором 0) имеет право выполнять почти любые действия с файлами независимо от их владельцев и установленных разрешений. Более подробные сведения см. в Владение файлами и права доступа.


Note: Когда командный интерпретатор обрабатывает путевое имя ~имя_пользователя, он считывает домашний каталог пользователя из файла /etc/passwd. Если вы удалите или измените учетную запись пользователя, то командный интерпретатор, ранее использовавший путевое имя ~имя_пользователя для доступа к домашнему каталогу, может попытаться воспользоваться устаревшей информацией, поскольку командный интерпретатор кэширует такого рода данные. Новые командные интерпретаторы заново считывают данные из файла /etc/passwd. Это может вызывать проблемы в тех случаях, когда командный сценарий, использующий ~имя_пользователя, запускает другой сценарий, который использует эту же возможность для определения полного пути. Эти сценарии будут оперировать разными путями, если информация о домашнем каталоге изменилась с момента первого считывания.

Что происходит при входе в систему?

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

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

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


Note: Более подробные сведения о характеристиках, наследуемых программами от родительских программ, см. в разделе в spawn(). Информацию о сессиях и группах процессов можно найти в IEEE Std 1003.1-2001 Standard for Information Technology Portable Operating System Interface.

Вход в систему в текстовом режиме (утилита login) происходит иначе, чем в графическом режиме (утилита phlogin2-ksz или phlogin2):

Команда ph запускает среду оконного окружения Photon. Из этой среды вы можете запустить в окне утилиты pterm командный интерпретатор, определенный значением переменной окружения SHELL.

База данных учетных записей

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

Файл Владелец Группа Разрешения
/etc/passwd root root rw- r-- r--
/etc/group root root rw- r-- r--
/etc/shadow root root rw- --- ---
/etc/.pwlock root root rw- r-- r--

Обратите внимание на неограниченный доступ на чтение файла /etc/passwd, что позволяет стандартным утилитам получать информацию о пользователях. Однако шифрованные пароли хранятся не в этом файле, а в /etc/shadow, доступ к которому имеет только пользователь root. Таким образом, пароли защищаются от дешифрации.


Note: Для обеспечения безопасности не изменяйте вышеописанные разрешения.

Файл /etc/passwd

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

username:has_pw:userid:group:comment:homedir:shell

Компоненты строки разделяются двоеточиями. Далее приводятся их описания:

username
имя пользователя, которое может содержать любые символы за исключением двоеточия (:). Кроме того, следует избегать специальных символов командного интерпретатора. Более подробные сведения см. в Применение кавычек со специальными символами.
has_pw
это поле должно либо быть пустым, либо содержать значение x. Первый случай означает, что у пользователя нет пароля, а второй — что шифрованный пароль хранится в файле /etc/shadow.
userid
числовой идентификатор пользователя.
group
числовой идентификатор группы.
comment
поле для свободного комментария, в котором, как правило, сообщают реальное имя пользователя. В комментарии запрещено использовать двоеточие.
homedir
домашний каталог пользователя.
shell
первая команда, которая должна быть выполнена после утилиты login (по умолчанию /bin/sh).


Note: Программе login нельзя передавать аргументы.

Приведем пример записи в файле /etc/passwd:

fred:x:290:120:Fred L. Jones:/home/fred:/bin/sh

Файл /etc/group

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

groupname:x:group_ID:[username[,username]...]

Компоненты строки разделяются двоеточиями. Далее приводятся их описания:

groupname
имя группы. Как и имя пользователя, оно может содержать любые символы за исключением двоеточия (:), однако следует избегать специальных символов командного интерпретатора. Более подробные сведения см. в Применение кавычек со специальными символами.
x
пароль группы. Операционная система ЗОСРВ «Нейтрино» не поддерживает пароли для групп.
group_ID
числовой идентификатор группы.
username[,username]...
имена принадлежащих к данной группе пользователей, взятые из учетных записей. Разделяются запятыми (,).

Пример записи:

techies:x:123:michel,ali,sue,jake

Файл /etc/shadow

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

username:password:0:0

Компоненты строки разделяются двоеточиями. Далее приводятся их описания.

username
имя пользователя для входа в систему.
password
шифрованный пароль пользователя.

Файл /etc/.pwlock

Утилита passwd создает файл /etc/.pwlock для того, чтобы сообщить другим запущенным ее экземплярам, что файл паролей в данный момент изменяется. По завершении своей работы утилита passwd удаляет файл блокировки. Если системному администратору необходимо отредактировать файлы учетной записи, ему следует выполнить следующие действия:

  1. заблокировать базу данных паролей: создать файл /etc/.pwlock (если он уже существует, то дождаться его удаления).
  2. открыть нужные файлы с помощью какого-либо текстового редактора и внести необходимые изменения.
  3. разблокировать базу данных паролей посредством удаления файла /etc/.pwlock.

Управление собственной учетной записью

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

Изменение пароля

Для изменения пароля служит утилита passwd, а в оконном окружении Photon также может использоваться утилита phksz. Обе утилиты запрашивают текущий пароль и затем предлагают ввести новый. Для проверки ошибок новый пароль вводится дважды. С помощью утилиты phksz вы можете также "привязать" к вашему пользователю пиктограмму.

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

Если к системе имеют доступ другие пользователи (физически, через Интернет или коммутируемое соединение), пароль следует выбрать таким образом, чтобы он гарантировал защиту от несанкционированного доступа. Для этого пароль должен отвечать следующим требованиям:

Более подробные сведения об обеспечении безопасности систем см. в Обеспечение безопасности системы.

Если вы забыли пароль

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

Вообще никто не может получить ваш старый пароль из файла /etc/shadow. Если пароль короткий или состоит из одного слова, системный администратор (или злоумышленник) может без труда подобрать его, поэтому лучше задать новый пароль.

Если вы системный администратор и забыли пароль пользователя root, вам следует найти альтернативный способ доступа к файлам /etc/passwd и /etc/shadow, чтобы переустановить пароль. Например, вы можете использовать такие способы:

Управление другими учетными записями

Системный администратор должен добавлять и удалять учетные записи пользователей и их группы, управлять паролями и разрешать проблемы, связанные с работой пользователей. Для этого следует войти в систему как root, поскольку другие пользователи не имеют разрешение на изменение файлов /etc/passwd, /etc/shadow и /etc/group.


Warning: Изменять пароль существующего пользователя с помощью утилиты passwd можно в любое время. Однако любые другие изменения базы данных учетных записей во время использования системы могут быть небезопасны. Следующие операции по изменению учетных данных пользователя могут привести к некорректной работе приложений и утилит:
  • добавление нового пользователя при помощи утилиты passwd или посредством ручного редактирования файла /etc/passwd;
  • задание пароля для учетной записи, ранее не имевшей его;
  • редактирование файлов /etc/passwd и /etc/group.
Если существует вероятность использования утилиты passwd или обновления файлов базы данных учетных записей во время их редактирования, следует предварительно заблокировать базу данных паролей, создав файл /etc/.pwlock.

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

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

Примечание. Изменения файлов учетной записи вручную не проверяются на соответствие правилам, установленным в файле конфигурации утилиты passwd. (Более подробные сведения можно найти в информации о файле /etc/default/passwd)

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

Чтобы добавить пользователя:

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


Note: Длина имени пользователя не должна превышать 14 символов, в противном случае пользователь не сможет войти в систему.

Если вы задаете уже зарегистрированное ранее имя, утилита passwd считает, что вы хотите изменить его пароль. Если вы действительно хотите выполнить эту операцию, введите новый пароль и подтвердите его. В противном случае нажмите комбинацию клавиш <Ctrl> + C, чтобы завершить утилиту passwd сохранения изменений.

Если имя пользователя еще не зарегистрировано, утилита passwd предложит ввести данные для учетной записи (список групп пользователя, домашний каталог и начальный командный интерпретатор). Конфигурационный файл /etc/default/passwd определяет правила, по которым устанавливаются данные по умолчанию для новых учетных записей (более подробные сведения см. в описании команды passwd.)

Утилита passwd запрашивает следующие данные.

User id# (значение по умолчанию)
Введите числовой идентификатор нового пользователя. По умолчанию никакие два пользователя не могут иметь одинаковый идентификатор, иначе приложения не смогут однозначно определить имя пользователя, соответствующее этому идентификатору.
Group id # (значение по умолчанию)
Введите числовой идентификатор группы, к которой будет принадлежать пользователь после входа в систему.

Note: Утилита passwd добавляет нового пользователя в запись группы в файле /etc/group. Это можно сделать вручную с помощью текстового редактора (Более подробные сведения см. в подразделе "Определение групп" далее в этой статье).

Real name ()
Введите реальное имя пользователя. Реальное имя редко используется системными утилитами, однако оно может потребоваться для некоторых приложений (например, электронной почты).
Home directory (/home/имя_пользователя)
Введите путь домашнего каталога пользователя. Как правило, оно имеет вид /home/имя_пользователя. Утилита passwd создает заданный каталог. Если он уже существует, то по умолчанию предлагается выбрать другой путь. Для отключения этой возможности см. сведения о файле /etc/default/passwd в описании команды passwd.
Login shell (/bin/sh)
Программа, запускаемая при входе пользователя в систему. Как правило, это командный интерпретатор (/bin/sh), обеспечивающий интерактивную командную строку.

Note: Вместо начальной оболочки можно задать любую программу, однако ей нельзя передавать аргументы командной строки. Кроме того, вход в систему с использованием графических утилит phlogin2-ksz и phlogin2 невозможен, если начальная программа несовместима со стандартом POSIX.

Задать начальную программу можно не только в учетной записи, но и в файле .profile, находящемся в домашнем каталоге каждого пользователя. Командный интерпретатор /bin/sh запускает этот профиль автоматически в начале работы. Более подробные сведения см. Настройка параметров окружения и оболочки.
New password:
Укажите пароль учетной записи и подтвердите его повторным набором.

Удаление учетных записей

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

  1. заблокируйте базу данных учетных записей. Если файл /etc/.pwlock не существует, создайте его, в противном случае дождитесь его удаления;
  2. удалите информацию об учетной записи из файлов /etc/passwd и /etc/shadow, чтобы запретить вход пользователя в систему, либо укажите в качестве начального командного интерпретатора программу, которая выдает специальное сообщение и завершается;
  3. удалите ссылки на пользователя из файла /etc/group;
  4. разблокируйте базу данных учетных записей, удалив файл /etc/.pwlock;
  5. при необходимости удалите или измените владельцев системных ресурсов, которые имел пользователь;
  6. при необходимости удалите или измените ссылки на пользователя в системах электронной почты, файлах контроля доступа TCP/IP, приложения и т.д.

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

Если когда-нибудь возникнет необходимость воспользоваться этой учетной записью, вы сможете либо переключиться на этого пользователя с пользователя root с помощью утилиты su ("switch user"), либо войти под этой учетной записью в систему. Если вы забудете пароль этой учетной записи, то всегда можете изменить его через пользователя root.

Что следует сделать с ресурсами, которыми владел бывший пользователь? Далее перечислено несколько возможностей:


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

Определение групп

Запись пользователя в файле /etc/passwd определяет группу, в которой он будет находиться при входе в систему, а в файле /etc/group определены все другие группы, членом которых является пользователь и в которые он может перейти с помощью утилиты newgrp. Как и в случае с именами и идентификаторами пользователя, возможности доступа программы к ресурсам системы определяются числовым эффективным идентификатором группы. Рассмотрим следующий пример. Вы хотите обеспечить доступ к файлу /home/projects для участников группы разработки, но не желаете, чтобы другие пользователи имели доступ к нему. Для этого выполните следующие действия:

  1. добавьте группу с именем projects в файл /etc/group и включите в нее всех необходимых пользователей (более подробные сведения см. в следующем разделе);
  2. если вы хотите сделать эту группу в качестве группы по умолчанию, измените записи пользователей в файле /etc/passwd, указав для них новый идентификатор группы по умолчанию;
  3. измените идентификатор и права доступа группы у каталога /home/projects и его содержимого:

    chgrp -R projects /home/projects
    chmod -R g+rw /home/projects

  4. запретите доступ для всех остальных пользователей:

    chmod -R o-rwx /home/projects

Более подробные сведения см. в Владение файлами и права доступа.

Создание новой группы

Чтобы создать новую группу, откройте файл /etc/group в текстовом редакторе и добавьте строку, определяющую имя, идентификатор и членов новой группы. Например:

techies:x:101:michel,jim,sue

Более подробные сведения об указанных полях см. в разделе "Файл /etc/group" ранее в этой статье.


Warning: Эту работу следует выполнять во время простоя системы. Если во время изменения файла /etc/group посредством текстового редактора какое-либо приложение или утилита (например, ls -l, newgrp) попытается его прочитать, это может привести к некорректной работе.

Изменение существующей группы

Чтобы включить в группу нового пользователя (например, при создании новой учетной записи пользователя с помощью утилиты passwd), необходимо отредактировать файл /etc/group и добавить этого пользователя в соответствующую запись. Например, если вы хотите включить пользователя zeke в существующую группу с именем techies, измените строку:

techies:x:101:michel,jim,sue
на
techies:x:101:michel,jim,sue,zeke
Изменять файл /etc/group следует лишь при условии, что никакая программа или пользователь не обращаются к нему в данный момент.

Устранение неполадок

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

утилита passwd дает сбой после изменения пароля.
При обновлении базы данных паролей утилита passwd блокирует ее с помощью файла /etc/.pwlock. Существование этого файла препятствует выполнению passwd. Если в процессе обновления базы данных система терпит аварию и файл /etc/.pwlock сохраняется, утилита passwd не будет работать до тех пор, пока системный администратор не удалит его. В случае повреждения файлов паролей при системном сбое администратору также следует использовать резервные файлы /etc/oshadow и /etc/opasswd для восстановления /etc/shadow и /etc/passwd, соответственно, чтобы предотвратить возможные проблемы.
почему я не могу войти в систему в графическом режиме?
Если вы вводите имя пользователя и пароль по запросу утилиты входа графической оболочки ( phlogin2-ksz или phlogin2), а в ответ вновь получаете диалоговое окно с пустыми полями, это может быть вызвано следующими причинами: В любом случае следует обратиться за помощью к системному администратору.
почему я не могу войти в систему в текстовом режиме?
Если при вводе имени пользователя и пароля по запросу утилиты login, обеспечивающей вход в систему в текстовом режиме, возникает сообщение "Login incorrect", скорее всего, это означает, что в системе отсутствует пользователь с указанным именем или введен неверный пароль. Следует иметь в виду, что имя пользователя и пароль зависят от регистра клавиатуры, поэтому проверьте, чтобы клавиша <Caps Lock> не была нажата. Чтобы избежать подсказок неавторизованным пользователям, утилита login не сообщает, какие именно данные (имя пользователя или пароль) введены неверно. Если вам не удается разрешить проблему самостоятельно, системный администратор (пользователь root) может установить новый пароль для вашей учетной записи. Подобная проблема может возникать в случаях, когда отсутствует один или несколько файлов, хранящих информацию о паролях. Если системный администратор в данный момент обновляет эти файлы, то неполадка, скорее всего, временная. Попытайтесь войти в систему заново через 1—2 минуты. Если это не поможет, обратитесь за помощью к системному администратору. Если вы являетесь системным администратором и не можете получить доступ к системе, попробуйте сделать это с другой машины ЗОСРВ «Нейтрино» через сеть Qnet, с инструментальной машины через интерфейс qconn, либо загрузите и запустите систему с установочного компакт-диска, чтобы обнаружить и устранить неполадку посредством командного интерпретатора.
при входе в систему в текстовом режиме выводится сообщение: "No such file or directory".
Это означает, что система не может найти утилиту, указанную в качестве начального командного интерпретатора. Это может происходить по следующим причинам:


Warning: Использование средств защиты информации от несанкционированного доступа, разработанных в соответствии с требованиями российских руководящих документов описано в документе «Описание применения. Часть 2. Комплекс средств защиты».




Предыдущий раздел: перейти