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

В Linux у каждого обычного пользователя есть учетная запись, включающая в себя имя пользователя, пароль и домашний каталог. Существуют также особые пользователи, созданные для определенных целей, и самым важным специальным пользователем является учетная запись администратора admin с именем пользователя по умолчанию root. Кроме того, в Linux предусмотрены группы пользователей, то есть каждый пользователь принадлежит хотя бы к одной группе, что облегчает управление разрешениями.

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

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

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

Команда useradd#

Выполните команду useradd от имени пользователя root, чтобы добавить информацию о пользователе в систему. В данной команде options обозначает связанные параметры, а username — имя пользователя.

useradd [options] username

Файлы с информацией о пользователе#

Следующие файлы содержат информацию об учетной записи пользователя.

  • /etc/passwd: информация об учетной записи пользователя.
  • /etc/shadow: информация о шифровании учетной записи пользователя.
  • /etc/group: информация о группе.
  • /etc/default/useradd: конфигурации по умолчанию.
  • /etc/login.defs: общесистемные настройки.
  • /etc/skel: каталог по умолчанию, содержащий исходные файлы конфигурации.

Пример#

Например, чтобы создать пользователя с именем userexample, выполните следующую команду от имени пользователя root:

# useradd userexample

ПРИМЕЧАНИЕ.
Если в командной строке ничего не отображается, значит пользователь создан. После создания пользователя выполните команду passwd, чтобы назначить пользователю пароль. Новая учетная запись без пароля будет заблокирована.

Чтобы просмотреть информацию о новом пользователе, выполните команду id:

# id userexample
uid=502(userexample)    gid=502(userexample)    groups=502(userexample)

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

# passwd userexample

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

  1. Пароль должен содержать не менее восьми символов.
  2. Пароль должен содержать по меньшей мере три из следующих типов символов: прописные буквы, строчные буквы, цифры и специальные символы.
  3. Пароль должен отличаться от имени учетной записи.
  4. Пароль не может содержать слова из словаря.
    • Запрос словаря. В установленной среде openEuler можно выполнить следующую команду, чтобы экспортировать файл библиотеки словарей dictionary.txt, а затем проверить, присутствует ли пароль в словаре.
      cracklib-unpacker /usr/share/cracklib/pw_dict > dictionary.txt
      
    • Изменение словаря
      1. Измените экспортированный файл библиотеки словарей, а затем выполните следующую команду, чтобы обновить библиотеку словарей:
        # create-cracklib-dict dictionary.txt
        
      2. Выполните следующую команду, чтобы добавить еще один файл словаря custom.txt в исходную библиотеку словарей.
        # create-cracklib-dict dictionary.txt custom.txt
        

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

# passwd userexample
Changing password for user userexample.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

ПРИМЕЧАНИЕ.
Если выходные данные команды содержат сообщение BAD PASSWORD: The password fails the dictionary check - it is too simplistic/sytematic (Неверный пароль. Пароль не проходит проверку по словарю — он слишком простой или распространенный), значит пароль слишком простой и его нужно сбросить.

Изменение учетной записи пользователя#

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

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

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

Обычные пользователи могут использовать команду chsh, чтобы изменить оболочку, используемую для входа в систему. Только администратор может использовать команду chsh username, чтобы изменять оболочку входа для других пользователей.

Пользователи также могут выполнить команду usermod от имени пользователя root, чтобы изменить информацию об оболочке. В данный команде new_shell_path обозначает путь к целевой оболочке, а username — имя пользователя, которое нужно изменить. Изменяйте их в зависимости от конкретных предъявляемых требований.

usermod -s new_shell_path username

Например, чтобы изменить оболочку пользователя userexample на csh, выполните следующую команду:

# usermod -s /bin/csh userexample

Изменение домашнего каталога#

  • Чтобы изменить домашний каталог, выполните следующую команду от имени пользователя root. В данной команде new_home_directory обозначает созданный целевой домашний каталог, а username — имя пользователя, которое нужно изменить. Изменяйте их в зависимости от конкретных предъявляемых требований.

    usermod -d new_home_directory username
    
  • Чтобы переместить содержимое текущего домашнего каталога в новый каталог, выполните команду usermod с параметром -m:

    usermod -d new_home_directory -m username
    

Изменение ИД пользователя (UID)#

Чтобы изменить идентификатор пользователя, выполните следующую команду от имени пользователя root. В данной команде UID обозначает идентификатор целевого пользователя, а username — имя пользователя. Изменяйте их в зависимости от конкретных предъявляемых требований.

usermod -u UID username

Команда usermod позволяет изменить ИД пользователя для всех файлов и каталогов, находящихся в домашнем каталоге этого пользователя. Однако для файлов, расположенных вне домашнего каталога пользователя, владельцев можно изменить только с помощью команды chown.

Изменение даты окончания срока действия учетной записи#

Если используется теневой пароль, выполните следующую команду от имени пользователя root, чтобы изменить срок действия учетной записи. В данной команде MM, DD и YY обозначают месяц, день и год соответственно, а username — имя пользователя. Изменяйте их в зависимости от конкретных предъявляемых требований.

usermod -e MM/DD/YY username

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

Выполните команду userdel от имени пользователя root, чтобы удалить существующего пользователя.

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

# userdel Test

Если вам также нужно удалить домашний каталог пользователя и все содержащиеся в нем объекты, выполните команду userdel с параметром -r для их рекурсивного удаления.

ПРИМЕЧАНИЕ.
Не рекомендуется напрямую удалять пользователя, выполнившего вход в систему. Чтобы принудительно удалить пользователя, выполните команду userdel -f Test.

Предоставление прав обычному пользователю#

Команда sudo позволяет обычным пользователям выполнять команды, которые разрешено выполнять только под учетными записями администратора.

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

sudo /usr/sbin/useradd newuserl

Эта команда sudo позволяет указать обычного пользователя, добавленного в файл /etc/sudoers, для обработки необходимых задач.

Информация, настроенная в файле /etc/sudoers, имеет следующий вид:

  • Пустые строки или строки комментариев, начинающиеся с #: не имеют определенных функций.

  • Необязательные строки псевдонимов хостов: создание имени для списка хостов. Строки должны начинаться с Host_Alias. Имена хостов в списке должны разделяться запятыми (,). Например:

    Host_Alias  linux=ted1,ted2
    

    ted1 и ted2 — это два имени хоста под псевдонимом linux.

  • Необязательные строки псевдонимов пользователей: создание имени для списка пользователей. Строки должны начинаться с User_Alias. Имена пользователей в списке должны разделяться запятыми (,). Строки псевдонимов пользователей имеют тот же формат, что и строки псевдонимов хостов.

  • Необязательные строки псевдонимов команд: создание имени для списка команд. Строки должны начинаться с Cmnd_Alias. Команды в списке должны разделяться запятыми (,).

  • Необязательные строки псевдонимов рабочих режимов: создание имени для списка пользователей. Отличие заключается в том, что такой псевдоним может позволить пользователю в списке выполнить команду sudo.

  • Обязательные строки объявления для доступа пользователя:

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

    user host = [ run as user ] command list
    

    Задайте для пользователя реальное имя пользователя или определенный псевдоним пользователя, а для хоста — реальное имя хоста или определенный псевдоним хоста. По умолчанию все команды, выполняемые с помощью sudo, выполняются от имени пользователя root. Если вы хотите использовать другую учетную запись, можете указать ее. command list — это либо список команд, разделенных запятыми (,), либо определенный псевдоним команды. Например:

    ted1   ted2=/sbin/shutdown
    

    В этом примере хост ted1 может выполнить команду завершения работы на хосте ted2. In this example, ted1 can run the shutdown command on ted2.

    newuser1 ted1=(root) /usr/sbin/useradd,/usr/sbin/userdel
    

    Эта команда указывает, что пользователь newuser1 на хосте ted1 может выполнять команды useradd и userdel от имени пользователя root.

    ПРИМЕЧАНИЕ.
    — Вы можете определить несколько псевдонимов в строке, разделив их двоеточиями (:).
    — Вы можете добавить восклицательный знак (!) перед командой или псевдонимом команды, чтобы сделать эту команду или этот псевдоним команды недействительными.
    — Существует два ключевых слова: ALL и NOPASSWD. ALL указывает на все файлы, хосты или команды, а NOPASSWD указывает, что пароль не требуется.
    — Изменяя доступ пользователя, вы можете изменить права доступа обычного пользователя, чтобы они были такими же, как у пользователя root. Затем вы можете предоставить права обычному пользователю.

Ниже приведен пример файла sudoers.

#sudoers files
#User alias specification
User_Alias ADMIN=ted1:POWERUSER=globus,ted2
#user privilege specification
ADMIN ALL=ALL
POWERUSER ALL=ALL,!/bin/su

В представленных выше данных:

  • User_Alias ADMIN=ted1:POWERUSER=globus,ted2

    Определены два псевдонима — ADMIN и POWERUSER.

  • ADMIN ALL=ALL

    ADMIN может выполнять все команды от имени пользователя root на всех хостах.

  • POWERUSER ALL=ALL,!/bin/su

    POWERUSER может выполнять все команды, кроме команды su, от имени пользователя root на всех хостах.

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

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

Команда groupadd#

Выполните команду groupadd от имени пользователя root, чтобы добавить информацию о группе пользователей в систему. В данной команде options обозначает связанные параметры, а groupname — имя группы.

groupadd [options] groupname

Файлы информации о группах пользователей#

Следующие файлы содержат информацию о группе пользователей.

  • /etc/gshadow: информация о шифровании группы пользователей.
  • /etc/group: информация о группе.
  • /etc/login.defs: общесистемные настройки.

Пример#

Например, чтобы создать группу пользователей с именем groupexample, выполните следующую команду от имени пользователя root:

# groupadd groupexample

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

Изменение ИД группы (GID)#

Чтобы изменить идентификатор группы пользователей, выполните следующую команду от имени пользователя root. В данной команде GID обозначает идентификатор целевой группы пользователей, а groupname — имя группы пользователей. Изменяйте их в зависимости от конкретных предъявляемых требований.

groupmod -g GID groupname

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

Чтобы изменить имя группы пользователей, выполните следующую команду от имени пользователя root. В данной команде newgroupname обозначает новое имя группы пользователей, а oldgroupname — имя группы пользователей. Изменяйте их в зависимости от конкретных предъявляемых требований.

groupmod -n newgroupname oldgroupname

Удаление группы пользователей#

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

Например, выполните следующую команду, чтобы удалить группу пользователей Test:

# groupdel Test

ПРИМЕЧАНИЕ.
Основную группу пользователя нельзя удалить напрямую. Чтобы принудительно удалить основную группу пользователя, выполните команду groupdel -f Test.

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

Выполните команду gpasswd от имени пользователя root, чтобы добавить пользователя в группу или удалить пользователя из группы.

Например, выполните следующую команду, чтобы добавить пользователя userexample в группу пользователей Test:

# gpasswd -a userexample Test

Например, выполните следующую команду, чтобы удалить пользователя userexample из группы пользователей Test:

# gpasswd -d userexample Test

Изменение текущей группы пользователя на указанную группу#

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

Например, выполните следующую команду, чтобы изменить текущую группу пользователя userexample на группу пользователей Test:

$ newgrp Test