English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Система Linux - это многоуровневая многозадачная система разделения времени, и любой пользователь, который хочет использовать системные ресурсы, должен сначала запросить у системного администратора учетную запись, а затем войти в систему под этой учетной записью.
Учетные записи пользователей с одной стороны помогают системному администратору отслеживать пользователей, использующих систему, и контролировать их доступ к системным ресурсам; с другой стороны, они также помогают пользователям организовывать файлы и обеспечивать их безопасность.
Каждая учетная запись пользователя имеет уникальное имя пользователя и свои собственные пароли.
Пользователь может войти в систему и свой домашний каталог, если он введет правильное имя пользователя и пароль при входе.
Для реализации управления учетными записями пользователей необходимо выполнить несколько основных задач:
Добавление, удаление и изменение учетных записей пользователей.
Управление паролями пользователей.
Управление группами пользователей.
Управление учетными записями пользователей в основном включает в себя добавление, изменение и удаление учетных записей.
Добавление учетной записи пользователя заключается в создании новой учетной записи в системе, а затем в分配е ресурсов для новой учетной записи, таких как номер пользователя, группа пользователей, домашний каталог и shells для входа. Новоиспеченная учетная запись заблокирована и не может быть использована.
useradd опция имя_пользователя
Объяснение параметров:
Опции:
-c comment Определяет комментарий.
-d каталог Определяет домашний каталог пользователя, если этот каталог не существует, можно использовать опцию -m для создания каталога.
-g группа Определяет группу пользователя.
-G группа, группа Определяет дополнительные группы пользователя.
-s файл_Shell Определяет shell для входа пользователя.
-u номер_пользователя Определяет номер пользователя, если также используется опция -o, то можно повторно использовать идентификатор другого пользователя.
Имя пользователя:
Определение нового login name для учетной записи.
# useradd –d /home/sam –m sam
Эта команда создала пользователя sam, где опции -d и -m используются для создания домашнего каталога для login name sam /home/sam (default parent directory of the user's home directory is /home).
# useradd -s /bin/sh -g group –G adm,root gem
Эта команда создала пользователя gem, у которого shell для входа /bin/sh, он принадлежит к группе пользователей group, а также к группам adm и root, где group - это основная группа.
Здесь может быть создана новая группа: # groupadd group и groupadd adm
Добавление учетной записи пользователя означает добавление новой записи для пользователя в файл /etc/passwd и обновление других системных файлов, таких как /etc/shadow, /etc/group и т.д.
Linux предоставляет интегрированный инструмент системы управления пользователями userconf, который можно использовать для единой управления учетными записями пользователей.
Если учетная запись пользователя больше не используется, ее можно удалить из системы. Удаление учетной записи пользователя означает удаление записи пользователя из системных файлов, таких как /etc/passwd, и в случае необходимости удаление домашнего каталога.
Удаление существующей учетной записи пользователя с помощью команды userdel, формат которой следующий:
userdel опция имя_пользователя
Часто используемый параметр -r, который удаляет домашний каталог пользователя.
Например:
# userdel -r sam
Эта команда удаляет запись пользователя sam в системных файлах (в основном в /etc/passwd, /etc/shadow, /etc/group и т.д.) и удаляет домашний каталог пользователя.
Изменение учетной записи пользователя означает изменение связанных свойств пользователя в зависимости от实际情况, таких как номер пользователя, домашний каталог, группа пользователей, shells для входа и т.д.
Изменение информации о существующем пользователе с помощью команды usermod, формат которой следующий:
usermod опция имя_пользователя
Часто используемые опции включают -c, -d, -m, -g, -G, -s, -u и -o, которые имеют то же значение, что и опции команды useradd, и могут назначать пользователям новые значения ресурсов.
Кроме того, некоторые системы могут использовать опцию: -l новое_имя_пользователя
Эта опция указывает на новый аккаунт, то есть изменяет текущее имя пользователя на новое имя пользователя.
Например:
# usermod -s /bin/ksh -d /home/z –g developer sam
Эта команда изменяет登录 Shell пользователя sam на ksh, изменяет домашний каталог на /home/z, а группу на developer.
Одним из важных аспектов управления пользователями является управление паролями пользователей. При создании учетной записи пользователя не существует пароля, но она заблокирована системой и не может быть использована. Ее необходимо разблокировать, назначив пароль, даже если это пустой пароль.
Команда passwd для назначения и изменения пароля пользователя. Суперпользователь может назначать пароли себе и другим пользователям, а обычные пользователи могут использовать ее только для изменения своего пароля. Формат команды:
passwd опция имя_пользователя
Доступные опции:
-l блокирует пароль, то есть отключает аккаунт.
-u разблокирует пароль.
-d делает аккаунт без пароля.
-f принудительно требует изменения пароля при следующем входе.
Если указан имя пользователя по умолчанию, то изменяется пароль текущего пользователя.
Например, предположим, что текущий пользователь sam, то下面的 команда изменяет пароль этого пользователя:
$ passwd Старый пароль:****** Новый пароль:******* Повторите новый пароль:*******
Если это суперпользователь, то можно указать пароль любому пользователю в следующей форме:
# passwd sam Новый пароль:******* Повторите новый пароль:*******
Когда обычный пользователь изменяет свой пароль, команда passwd сначала спрашивает о старом пароле, проверяет его, а затем требует ввести два раза новый пароль; если два введенных пароля совпадают, то этот пароль назначается пользователю; а суперпользователь, назначая пароль пользователю, не должен знать старый пароль.
Для обеспечения безопасности системы пользователи должны выбирать более сложные пароли, например, лучше использовать пароли длиной 8 символов, содержащие заглавные и строчные буквы и цифры, и они должны быть различны от имени, дня рождения и т.д.
При указании пустого пароля для пользователя, выполняется команда в следующей форме:
# passwd -d sam
Эта команда удаляет пароль пользователя sam, таким образом, при следующем входе пользователя sam в систему, система больше не позволяет этому пользователю входить.
Команда passwd может также использовать опцию -l (lock), чтобы заблокировать определенного пользователя, чтобы он не мог входить, например:
# passwd -l sam
Каждый пользователь имеет группу пользователей, и система может управлять всеми пользователями в группе пользователей. Разные системы Linux по-разному определяют группы пользователей, например, в Linux пользователи belong к группе с их именем, которая создается одновременно с созданием пользователя.
Управление группами пользователей включает добавление, удаление и изменение групп. Добавление, удаление и изменение групп на самом деле является обновлением файла /etc/group.
groupadd опция группа пользователей
Используемые опции включают:
-g GID Определяет GID нового пользователя группы (GID).
-o Обычно используется вместе с опцией -g, что означает, что GID нового пользователя группы может быть таким же, как у существующей группы пользователей системы.
# groupadd group1
Эта команда добавляет новую группу group1 в систему, новый идентификатор группы (GID) является следующим за наибольшим уже существующим идентификатором группы.
# groupadd –g 101 group2
Эта команда добавляет новую группу group2 в систему, одновременно specifying новый идентификатор группы (GID) 101.
groupdel группа пользователей
# groupdel group1
Эта команда удаляет группу group1 из системы.
groupmod опция группа пользователей
Обычные опции включают:
-g GID Определяет новый идентификатор группы (GID) для группы пользователей.
-o Используется вместе с опцией -g, новый GID группы пользователя может быть таким же, как у существующей группы пользователей системы.
-n новогруппа пользователя Изменяет имя группы пользователя на новое имя
# groupmod –g 102 group2
Эта команда изменяет идентификатор группы group2 на 102.
# groupmod –g 10000 –n group3 group2
Эта команда изменяет идентификатор группы group2 на 10000 и имя группы на group3.
Пользователь может切换 к другой группе пользователей после входа в систему, используя команду newgrp, параметром которой является целевая группа пользователей. Например:
$ newgrp root
Эта команда переключает текущего пользователя в группу root, при условии, что группа root действительно является основной или дополнительной группой этого пользователя. Управление группами пользователей, как и управление учетными записями пользователей, можно выполнять с помощью интегрированных системных инструментов управления.
Есть много способов выполнения работы по управлению пользователями, но каждый из них на самом деле является изменением соответствующих системных файлов.
Информация о пользователях и группах хранится в некоторых системных файлах, включая /etc/passwd, /etc/shadow, /etc/group и т.д.
Ниже мы рассмотрим содержимое этих файлов.
Каждый пользователь в системе Linux имеет соответствующую запись в файле /etc/passwd, которая содержит некоторые основные атрибуты пользователя.
Этот файл доступен для чтения всем пользователям. Его содержимое类似 следующему примеру:
# cat /etc/passwd root:x:0:0:Суперпользователь:/: daemon:x:1:1:Системные демоны:/etc: bin:x:2:2:Владелец системных команд:/bin: sys:x:3:3:Владелец системных файлов:/usr/sys: adm:x:4:4:Счетная система:/usr/adm: uucp:x:5:5:Administrator UUCP:/usr/lib/uucp: auth:x:7:21:Administrator аутентификации:/tcb/files/auth: cron:x:9:16:Cron daemon:/usr/spool/cron: listen:x:37:4:Network daemon:/usr/net/nls: lp:x:71:18:Administrator принтера:/usr/spool/lp: sam:x:200:50:Sam san:/home/sam:/bin/sh
Из примера выше мы можем видеть, что каждая строка в /etc/passwd соответствует одному пользователю, каждая строка разделена двоеточием (:) на 7 полей, формат и конкретное значение которых таковы:
Имя пользователя:пароль:идентификатор пользователя:идентификатор группы:описание:основная директория: SHELL для входа
Обычно длина не превышает 8 символов и состоит из больших и малых букв и/или цифр. В登录ном имени не должно быть двоеточия (:), так как здесь оно служит разделителем.
Для совместимости最好不要在登录名中包含点字符(.) и не использовать дефис (-) и плюс (+) в начале.
Хотя это поле содержит только зашифрованный строку пароля, а не текст, так как файл /etc/passwd доступен для чтения всем пользователям, это все же является потенциальной уязвимостью безопасности. Поэтому многие системы Linux (например, SVR4) используют технологию shadow, чтобы хранить настоящие зашифрованные пароли в файле /etc/shadow, а в поле пароля файла /etc/passwd хранится специальный символ, например «x» или «*».
Обычно это совпадает с именем пользователя. Если несколько пользователей имеют одинаковые идентификаторы пользователей, система рассматривает их как одного и того же пользователя, но они могут иметь разные пароли, разные основные каталоги и разные Shell для входа.
Обычно диапазон значений идентификатора пользователя составляет от 0 до 65 535. Значение 0 - это идентификатор суперпользователя root, значения от 1 до 99 зарезервированы системой для учетных записей администраторов, идентификаторы обычных пользователей начинаются с 100. В системе Linux этот предел составляет 500.
Это соответствует записи в файле /etc/group.
Например, имя пользователя, телефон, адрес и т.д., это поле не имеет реального использования. В различных системах Linux формат этого поля не унифицирован. В многих системах Linux это поле содержит любое текстовое описание, используемое в качестве вывода команды finger.
Это каталог, в котором пользователь находится после входа в систему. В большинстве систем основные каталоги всех пользователей организованы в одном конкретном каталоге, а имя основного каталога пользователя соответствует его имени пользователя. У каждого пользователя есть права на чтение, запись и выполнение (поиск) в своем основном каталоге, в то время как доступ других пользователей к этому каталогу устанавливается в зависимости от конкретной ситуации.
Shell является интерфейсом между пользователем и операционной системой Linux. В Linux существует множество различных Shell, у каждого из которых есть свои особенности. Самыми распространенными являются sh (Bourne Shell), csh (C Shell), ksh (Korn Shell), tcsh (TENEX/TOPS-20 type C Shell) и bash (Bourne Again Shell).
系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。
用户的登录Shell也可以指定为某个特定的程序(此程序不是一个命令解释器)。
利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux 系统要求只有那些在系统中登记了的程序才能出现在这个字段中。
这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。
常见的伪用户如下所示:
伪 用 户 含 义 bin 拥有可执行的用户命令文件 sys 拥有系统文件 adm 拥有帐户文件 uucp UUCP使用 lp lp或lpd子系统使用 nobody NFS使用
1、除了上面列出的伪用户外,还有许多标准的伪用户,例如:audit, cron, mail, usenet等,它们也都各自为相关的进程和文件所需要。
由于/etc/passwd文件是所有用户都可读的,如果用户的密码太简单或规律比较明显的话,一台普通的计算机就能够很容易地将它破解,因此对安全性要求较高的Linux系统都把加密后的口令字分离出来,单独存放在一个文件中,这个文件是/etc/shadow文件。 有超级用户才拥有该文件读权限,这就保证了用户密码的安全性。
2、/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生
它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用":"隔开。这些字段是:
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
"登录名"是与/etc/passwd文件中的登录名相一致的用户账号
"口令"字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合 { ./0-9A-Za-z }中的字符,则对应的用户不能登录。
Поле "время последнего изменения" указывает на количество дней с определенного момента до момента последнего изменения пароля пользователем. Начало времени может варьироваться в зависимости от системы. Например, в SCO Linux это начало времени — 1 января 1970 года.
Поле "минимальный интервал" означает минимальное количество дней между двумя изменениями пароля.
Поле "максимальный интервал" означает максимальное количество дней, в течение которых пароль действует.
Поле "время предупреждения" указывает на количество дней между началом предупреждения пользователя о скором истечении срока действия пароля и его официальным失效ом.
Поле "недактивный период" указывает на максимальное количество дней, в течение которых пользователь не может быть активен, но аккаунт все еще остается действительным.
Поле "время失效" указывает на абсолютное количество дней, если это поле используется, то оно указывает на срок жизни соответствующего аккаунта. По истечении срока жизни аккаунт больше не является легитимным и не может быть использован для входа.
Вот пример файла /etc/shadow:
# cat /etc/shadow root:Dnakfw28zf38w:8764:0:168:7::: daemon:*::0:0:::: bin:*::0:0:::: sys:*::0:0:::: adm:*::0:0:::: uucp:*::0:0:::: nuucp:*::0:0:::: auth:*::0:0:::: cron:*::0:0:::: listen:*::0:0:::: lp:*::0:0:::: sam:EkdiSECLWPdSa:9740:0:0::::
Разделение пользователей на группы — это один из способов управления пользователями и контроля доступа в операционной системе Linux.
Каждый пользователь принадлежит к определенной группе; в одной группе может быть несколько пользователей, и один пользователь может принадлежать к нескольким группам.
Когда пользователь является членом нескольких групп, в файле /etc/passwd записывается основная группа пользователя, также известная как базовая группа при входе, а другие группы называются дополнительными.
Чтобы пользователь мог получить доступ к файлам, принадлежащим дополнительным группам, он должен сначала использовать команду newgrp, чтобы стать членом группы, к которой он хочет получить доступ.
Все информация о группах пользователей хранится в файле /etc/group. Формат этого файла также ähnlich dem des Dateis /etc/passwd, разделенный двумя точками (:), и включает в себя следующие поля:
Имя группы: пароль: идентификатор группы: список пользователей в группе
"Имя группы" — это имя группы пользователей, состоящее из букв и цифр. Как и имя пользователя в файле /etc/passwd, имя группы не должно повторяться.
"口令" поле хранит зашифрованный пароль пользователя группы. Обычно в Linux-системах у групп нет паролей, поэтому это поле обычно пусто или содержит '*'.
"Идентификатор группы" аналогичен идентификатору пользователя и является целым числом, которое используется системой для идентификации группы.
"Список пользователей в группе" - это список всех пользователей, принадлежащих к этой группе, разделенных запятыми (,). Эта группа может быть основной или дополнительной.
Пример файла /etc/group может выглядеть так:
root::0:root bin::2:root,bin sys::3:root,uucp adm::4:root,adm daemon::5:root,daemon lp::7:root,lp users::20:root,sam
Добавление и удаление пользователей для каждого администратора Linux-системы не составляет большого труда, но когда нужно добавить несколько десятков, сотен или даже тысяч пользователей, мы вряд ли будем использовать команду useradd для добавления пользователей по одному, а必然会 искать более удобный способ создания большого количества пользователей. Linux-система предоставляет инструменты для создания большого количества пользователей, которые позволяют сразу же создать большое количество пользователей, следующим образом:
Каждая колонка должна быть написана в формате файла паролей /etc/passwd. Важно, чтобы имя пользователя, UID и домашний каталог каждого пользователя были уникальными, а строка с паролем могла быть оставлена пустой или заполнена символом 'x'. Пример файла user.txt может выглядеть так:
user001::600:100:user:/home/user001:/bin/bash user002::601:100:user:/home/user002:/bin/bash user003::602:100:user:/home/user003:/bin/bash user004::603:100:user:/home/user004:/bin/bash user005::604:100:user:/home/user005:/bin/bash user006::605:100:user:/home/user006:/bin/bash
# newusers < user.txt
Затем можно выполнить команду vipw или vi /etc/passwd, чтобы проверить, не появилась ли в файле /etc/passwd информация о данных этих пользователей, а также не был ли создан их домашний каталог.
Декодируйте shadow-пароли, созданные в /etc/shadow, и перепишите их в /etc/passwd, а также удалите строку паролей shadow в /etc/shadow. Это делается для удобства下一步 работы с паролями, то есть сначала отключить функцию shadow-паролей.
# pwunconv
Формат:
Имя пользователя:пароль
Содержимое примерного файла passwd.txt такое:
user001:123456 user002:123456 user003:123456 user004:123456 user005:123456 user006:123456
Создайте пароль пользователя, команда chpasswd записывает закодированные пароли, обработанные командой /usr/bin/passwd, в строку паролей в /etc/passwd.
# chpasswd < passwd.txt
Выполните команду /usr/sbin/pwconv, чтобы закодировать пароли в shadow-пароли и записать результат в /etc/shadow.
# pwconv
Таким образом, было создано множество пользователей, после чего вы можете проверить, правильно ли установлены права доступа к домашним директориям пользователей в /home, и убедиться, что пароли пользователей верны.