Различия между версиями 6 и 7
Версия 6 от 2008-09-20 17:04:59
Размер: 27198
Редактор: DmitryChistikov
Комментарий:
Версия 7 от 2008-09-21 17:53:06
Размер: 28578
Редактор: DmitryChistikov
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 72: Строка 72:
Создадим нового пользователя. Это делает программа useradd.

{{{
# usearadd -u -G wheel -c "Newly Added Admin" admin
}}}

Мы создали пользователя admin, который состоит в дополнительной группе wheel. Поскольку мы не указали ключ -u, uid был выбран первый попавшийся, мы не указали ключ -g, поэтому была создана новая группа admin и идентификатор её был выбран первый попавшийся. Нельзя считать, что не по этой команде будет создан пользователь admin, группа admin и uid будет совпадать с gid'ом. Например, если пользователь с номером 510 не существовал, а группа с таким номером существовала, и 510 было бы первым свободным номером uid'а, польователь создался бы с uid'ом 510, а gid был бы первый свободныё - например, 520. Такое поведение появилось недавно, раньше надо было указывать, в какую группу вы собираетесь добавить пользователей, и, как правило, сразу несколько пользователей добавлялись в одну и ту же группу. С некоторых пор стало популярно добавлять каждого пользователя в отдельную группу, и, если его нужно добавить ещё и в общую группу, эту общюю группу выносить отдельно в /etc/group. Это делается по двум соображениям. Во-первых, просто глядя в /etc/group удобно просмотреть всех пользователей, которые являются членами какой-то общей группы. Посмотрим, к чему привела эта операция.
Создадим нового пользователя. Зададим ему регистрационное имя `admin` и "описание" `Newly Added Admin` (оно будет занесено в поле GECOS):

{{{
# usearadd -G wheel -c "Newly Added Admin" admin
}}}

Ключ `-G` отвечает за список "дополнительных" групп, в которые создаваемый пользователь вступает (в данном случае это группа `wheel`). Поскольку мы не указали ключ `-g`, то была создана также основная группа для нашего пользователя. Ее имя совпадает с именем пользователя (`admin`), а идентификатор выбирается первый из доступных (свободных). Точно так же, поскольку мы не указали ключ `-u`, то идентификатор пользователя выбран первый из доступных. Отметим, что нельзя предполагать, что идентификаторы создаваемых пользователя и группы обязательно совпадут.

Сделаем еще одно важное замечание. В современных дистрибутивах ОС Linux принято создавать для каждого создаваемого "настоящего" пользователя отдельную группу, а все группы с более чем одним пользователем считать "дополнительными". Такой подход позволяет, с одной стороны, простым просмотром /etc/group оценивать состав всех зарегистрированных в системе групп пользователей и, с другой стороны, ...

Посмотрим, как при добавлении пользователя изменились файлы `/etc/passwd` и `/etc/group`:

 ''Мне кажется, полезно сделать более "честный" запрос, чтобы не вылезали всякие ftpadmin и пр.'' -- DmitryChistikov <<DateTime(2008-09-21T18:53:00+0400)>>
Строка 91: Строка 97:
Появилась группа admin (gid 501), пользователь admin (uid 501), а ещё этот пользователь добавился в группу wheel, этому пользвателю автоматически создался домашний каталог (в bsd для этого надо было говорить -m, иначе он не создастся). В домашний каталог автоматически скопировались некоторые настроечные файлы из /etc/skel. Вот, кстати, полезное знание для системного администратора: если вы хотите, чтобы у ваших пользователей при создании настраивалось какое-то минимальное окружение, настройки KDE, например, посмотрите, как точно устроено копирование файла из /etc/skel и подсуньте туда нужные файлы.

Пользователь заведён, и почти всё у него есть, единственное, чего у него нет --- пароля. Прежде чем переходить к этому, лектор сразу расскажет, как удалять пользователя. Это делается при помощи команды userdel, у неё есть ключ -r, который удаляет не только пользователя, но и homedir и его почту, лежащую в /var/mail. Сразу вопрос: хорошо ли удалять пользователей? Существует мнение, что пользователей удалять вообще не надо. Смотрите: вы завели некоторого пользователя, он что-то делал, у него был какой-то uid, и какое-то личное входное имя. Вы его удалили. Встаёт вопрос: удалять ли его домашний каталог или нет? Допустим, вы его не удалили. И так случилось, чт пользователь имел наибольший uid в вашем passwd, и теперь наименьший свободный uid совпадает с uid этого пользователя. Вы заводите следующего пользователя, и у него оказывается такой же uid. И он получает доступ в домашний каталог удалённого пользователя. Так случилось, потому что вы его удалили. На самом деле, если вы хотите, чтобы пользователь просто не работал в системе, над навсегда запретить логин. Для этого надо манипулировать командой sbin/passwd, где есть ключ -l (--lock), которая что-то делает с файлом shadow, после чего пользователь просто не сможет логиниться. Есть небольшая вероятность, что такой заблокированный пользователь сможет, например, логинится в ssh, если там отключена функция user login. Суперпользователь может модифицировать настройки уже заведённго пользователя разными способами, в частности, поменять некую информацию, которая хранится не в passwd, а в shadow. Например, сделать пароль временным, то есть пароль будет дейстовать некоторое время, после чего просрочится. Для этого служит ключ -e. Там вроде ещё была возможность сделать предупреждения, чтобы принудить пользователя менять парль раз в какое-то время.
Как мы видим, в `/etc/passwd` появилась новая запись для нашего пользователя (UID = 501), а в `/etc/group` была создана новая группа (GID = 501). Кроме того, в соответствии с нашим указанием пользователь `admin` был добавлен в группу `wheel`. Отметим, что при заведении пользователя был также создан его домашний каталог, куда сразу же скопировались файлы из каталога `/etc/skel`. Данный каталог обыкновенно содержит "базовый", минимальный набор конфигурационных файлов для создания комфортного пользовательского окружения и, естественно, может быть модифицирован администратором системы.

Уделим теперь внимание проблеме удаления пользователей из системы. За выполнение этого действия отвечает команда `userdel`, манипулирующая перечисленными выше файлами. У этой команды есть ключ `-r`, соответствующий удалению не только учетной записи пользователя, но и его домашнего каталога и почты (обычно лежащей в каталоге `/var/mail`). Однако всегда ли использование `userdel` оправдано? Работа `userdel` приводит к освобождению идентификатора пользователя, который впоследствии может быть присвоен другому, вновь созданному пользователю. Это приведет к тому, что все не удаленные из системы пользовательские данные (к примеру, создержащиеся в не удаленном домашнем каталоге) окажутся доступны новому пользователю. Понятно, что такой результат, вообще говоря, не может считаться удовлетворительным.

Как же стоит поступить в такой ситуации? Одним из решений может стать не удаление пользователя, а запрет на вход (логин). За такое действие отвечает команда `passwd(8)` с ключом `-l` (`--lock`). (''Кажется, это же самое делает и ''`usermod`''.'' -- DmitryChistikov <<DateTime(2008-09-21T18:53:00+0400)>>) Стоит, однако обратить внимание, что в такой ситуации не исключается возможность входа по SSH (например, если в конфигурационном файле `sshd_config` отключена опция `UseLogin`), поэтому следует предусмотреть и это.

Заметим, что учетные данные зарегистрированного в системе пользователя могут, разумеется, быть модифицированы системным администратором. Некоторые из таких модификаций производятся еще не встречавшейся нам утилитой `usermod`. Ее ключ `-e`, к примеру, позволяет указать дату "отключения" учетной записи. Есть также утилита `chage`, модифицирующая информацию о сроках "истекания" пароля, --- с ее помощью администратор может, допустим, установить политику смены пользователями своих паролей с той или иной периодичностью.
Строка 135: Строка 145:
Что ещё осталось на эту тему: мы создали пользователя admin, и он добавился только в одну группу --- wheel. А неплохо было бы добавить его в другие группы. Зачем добавлять пользователя в большое количество групп? При работе (в особенности с десктпом) было бы неплохо первому залогиненому пользователю выдать доступ к различным ресурсам (съёмным дискам, аудио, ...). Первому пользователю, ктрый зарегистрировался в системе, модуль pam'а выдаёт некие устройства из числа нахдящихся в /dev. Реально выдаёт, он меняет им uid, можно посмотреть ls -l /dev/ | grep имя искомого пользователя. Отметим, что при создании нашего пользователя `admin` мы выбрали для него лишь одну дополнительную группу --- `wheel`. Было бы полезным, однако, добавить его и в другие группы. Зачем это может понадобиться? Дело в том, что при работе, например, с пользовательским десктопом, полезно выдавать первому "вошедшему" доступ к таким ресурсам, как съемные диски, аудиоустройства и пр. Такие действия обычно производятся специальным модулем PAM, меняющим права к соответствующему набору файлов из каталога `/dev`. В нашем случае таких файлов оказалось довольно много (более двух десятков):
Строка 170: Строка 180:
А ещё в этом /dev есть куча устройств, которым специальный модуль pam'a ничего не меняет, которые принадлежат не к группе root или wheel, а к группе audio, floppy и т.д. Для этого-то и нужно включать пользователя в эти группы, чтобы он имел туда доступ.

Возвращаемся к теме. Как добавить пользователя в группу: в стандартном POSIX добавление/удаление в группах не было реализовано на уровне команды. Предполагалось, что сделать это легко: человек берёт текстовый редактор и вписывает, что нужно, в /etc/group. Ещё можно сказать usermod -G, и пишете список групп, в которых пользователь должен быть членом. Проблемма состоит в том, что если он уже член десяти групп, вам нужно сначала получить десять групп, потом добавить туда те, которые вы хотите и поле этого только добавлять. В общем, не атомарная операция. В альте для этго есть команда gpasswd.

{{{
# gpasswd -a admin xgrp proc
Какое отношение это имеет к группам? Оказывается, смена UID файлам устройств удобна далеко не всегда. Во многих случаях разумнее передавать права на такие файлы не одному пользователю, а целой группе --- а это действие может производиться заранее. В том же `/dev`, как несложно заметить, есть большое количество файлов, принадлежащим не группе `root` или `wheel`, а группе `audio`, `floppy` и пр. Для того, чтобы пользователи имели доступ к этим файлам, и нужно включать их в соответствующие группы.

Как же добавить пользователя в ту или иную группу? В стандарте POSIX добавление пользователя в группу (равно как и удаление его оттуда) не реализовывалось какой-либо конкретной утилитой. Предполагалось, что соответствующие действия будут производиться системным администратором путем непосредственного редактирования файла `/etc/group`. Была (и, разумеется, никуда не исчезла) также возможность использования утилиты `usermod` с ключом `-G`, который требует явного указания полного списка групп, в которых должен состоять пользователь. Понятно, однако, что если пользователь уже являлся членом десяти групп, то для добавления его в одиннадцатую вначале нужно было получить список первых десяти и только потом добавить к ним одиннадцатую. Такая операция, очевидно, не является атомарной, а потому в дистрибутивах ALT Linux предусмотрена команда `gpasswd`:

{{{
# gpasswd -a admin proc
Строка 177: Строка 187:
}}}

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

{{{
...
Строка 185: Строка 201:
|| 25 || 1 || 1 || 1 || || 1 || ConstantinYershow, DmitryChistikov, MaximByshevskiKonopko || || || || 33 || 1 || 1 || 1 || || 1 || ConstantinYershow, DmitryChistikov, MaximByshevskiKonopko || || ||

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

  • NB: Ошибка в учебнике: syslog.d используется не для хранения настрек, а для хранения сокетов, из которых читаются журналы.

    NB: Патч к предыдущему модулю: salt это не 2a, тут более хитрый алгоритм.

Хранение регистрационной информации

Большая часть регистрационной информации о пользователях хранится в файле /etc/passwd. Этот файл доступен на чтение всем пользователям системы, поэтому сведения о паролях (сами пароли вообще нигде не хранятся), времени их жизни и некоторые другие данные из этого файла исключены и находятся либо в файле /etc/shadow (в большинстве дистрибутивов ОС Linux), либо в /etc/tcb/имя_пользователя/shadow (в дистрибутивах ПСПО и некоторых других). И в том, и в другом случае доступ к этой информации существенно ограничен с помощью механизма разграничения прав доступа в Unix-подобных ОС.

Рассмотрим вначале файл passwd. Каждая строка в нем соответствует одному регистрационному имени и состоит из полей, разделенных двоеточиями:

$ head /etc/passwd
root:x:0:0:System Administrator:/root:/bin/bash
bin:x:1:1:bin:/:/dev/null
daemon:x:2:2:daemon:/:/dev/null
adm:x:3:4:adm:/var/adm:/dev/null
lp:x:4:7:lp:/var/spool/lpd:/dev/null
mail:x:8:12:mail:/var/spool/mail:/dev/null
news:x:9:13:news:/var/spool/news:/dev/null
uucp:x:10:14:uucp:/var/spool/uucp:/dev/null
games:x:12:100:games:/usr/games:/dev/null
ftp:x:14:50:FTP User:/var/ftp:/dev/null
  1. Первое поле в каждой строке содержит регистрационное имя пользователя. Дублирование этого поля катагорически не рекомендуется.
  2. Второе поле ранее содержало хэш пароля, однако сейчас в подавляющем большинстве случаев содержит символ x, означающий, что соответствующая информация лежит в другом месте.

  3. Третье поле --- это идентификатор пользователя (User ID, UID).
  4. Четвертое поле --- идентификатор основной (первичной) группы пользователя. Пользователь, разумеется, может входить и в другие группы, однако соответствующая информация хранится в файле /etc/group.
  5. Пятое поле по историческим причинам носит имя GECOS и содержит так называемое "полное имя" пользователя. Давным-давно создателям UNIX Кену Томпсону и Деннису Ритчи нужно было хранить информацию о том, какой пароль нужно использовать при регистрации в системе, к которой был подключен принтер. Управлялся доступ к принтеру операционной системой GECOS, поэтому именно такое название получило соответствующее поле в /etc/passwd. В наше же время в этом поле хранится разного рода информация о пользователе: полное имя, номер комнаты, телефон и, возможно, дополнительная информация (соответствующие "подполя" разделяются запятыми). Используется эта возможность, тем не менее, не слишком часто.
  6. Шестое поле содержит имя домашнего каталога пользователя.
  7. Последнее, седьмое поле содержит имя программы, запускаемой в качестве пользовательской оболочки (Shell).

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

  • Если в качестве оболочки указана один из интерпретаторов командной строки, перечисленных в файле /etc/shells, то пользователь считается "настоящим": он может "войти" в систему и полноценно ее использовать.
  • Если в качестве оболочки указано специальное значение /sbin/nologin (иногда --- несколько другое), то пользователь не сможет зарегистрироваться в системе обычным способом. Тем не менее, если это значение указать в списке допустимых оболочек (/etc/shells), то все подсистемы будут считать, что соответствующий пользователь --- "настоящий", а потому разрешат, например, подключение по SSH без запуска оболочки.
  • Если же в качестве оболочки указано имя несуществующей программы (или, скажем, /dev/null), то зарегистрироваться в системе пользователь не сможет вовсе. Эта возможность позволяет контролировать разделение прав доступа к разным частям системы. С точки зрения безопасности, разумно ограничить использование учетной записи суперпользователя при работе различных служб, а потому для каждой такой службы заводится специальная учетная запись. От имени соответствующего пользователя и будут запускаться нужные программы. С одной стороны, "по-настоящему" зарегистрироваться в системе с помощью этой учетной записи невозможно (нет пароля и возможности зарегистрироваться), с другой --- в случае атаки на эту службу под угрозой окажутся лишь ее собственные файлы. Соответствующие пользователи обычно называются "псевдопользователями" или "системными пользователями". Псевдопользователей в системе бывает довольно много, обычно --- более 40 (это число зависит от набора установленных служб).

Нужно упорядочить использование терминов. Зарегистрированный в системе пользователь --- это вошедший или указанный в /etc/passwd? -- DmitryChistikov 2008-09-20 17:04:58

Посмотрим теперь в файл /etc/group. В нем содержится список зарегистрированных в системе групп пользователей. Каждый пользователь может состоять в нескольких группах, а каждая группа --- содержать несколько пользователей.

$ head /etc/group
root:x:0:
bin:x:1:root
daemon:x:2:root
sys:x:3:root,bin,adm
adm:x:4:root
tty:x:5:
disk:x:6:root
lp:x:7:
mem:x:8:
kmem:x:9:

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

  1. Первое поле --- имя группы.
  2. Второе --- пароль группы (практически никогда не используется).
  3. Третье поле --- числовой идентификатор группы.
  4. Четвертое поле --- имена пользователей --- членов группы (через запятую).

Опишем теперь, как используется информация о членстве в группах. Каждый раз, когда от имени пользователя запускается тот или иной процесс, автоматически выясняется его "первичная" группа (обычно она соответствует полученному при входе в систему GID), а членство в процесса в остальных группах определяется с помощью просмотра файла /etc/group. Этот файл просматривается в поисках регистрационного имени (не UID!) пользователя --- подходящие строки и определяют результат. Заметим, что можно создать в системе учетные записи разных пользователей с одинаковым UID и организовать для них членство в разных раборах групп. Пользоваться этой возможностью, однако, следует с большой осторожностью.

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

Создадим нового пользователя. Зададим ему регистрационное имя admin и "описание" Newly Added Admin (оно будет занесено в поле GECOS):

# usearadd -G wheel -c "Newly Added Admin" admin

Ключ -G отвечает за список "дополнительных" групп, в которые создаваемый пользователь вступает (в данном случае это группа wheel). Поскольку мы не указали ключ -g, то была создана также основная группа для нашего пользователя. Ее имя совпадает с именем пользователя (admin), а идентификатор выбирается первый из доступных (свободных). Точно так же, поскольку мы не указали ключ -u, то идентификатор пользователя выбран первый из доступных. Отметим, что нельзя предполагать, что идентификаторы создаваемых пользователя и группы обязательно совпадут.

Сделаем еще одно важное замечание. В современных дистрибутивах ОС Linux принято создавать для каждого создаваемого "настоящего" пользователя отдельную группу, а все группы с более чем одним пользователем считать "дополнительными". Такой подход позволяет, с одной стороны, простым просмотром /etc/group оценивать состав всех зарегистрированных в системе групп пользователей и, с другой стороны, ...

Посмотрим, как при добавлении пользователя изменились файлы /etc/passwd и /etc/group:

  • Мне кажется, полезно сделать более "честный" запрос, чтобы не вылезали всякие ftpadmin и пр. -- DmitryChistikov 2008-09-21 17:53:00

# grep admin /etc/passwd /etc/group
/etc/passwd:admin:x:501:501:Newly Added Admin:/home/admin:/bin/bash
/etc/group:wheel:x:10:root,saj,admin
/etc/group:ftpadmin:x:51:
/etc/group:cvsadmin:x:53:
/etc/group:netadmin:x:104:
/etc/group:wineadmin:x:57:
/etc/group:admin:x:501:

Как мы видим, в /etc/passwd появилась новая запись для нашего пользователя (UID = 501), а в /etc/group была создана новая группа (GID = 501). Кроме того, в соответствии с нашим указанием пользователь admin был добавлен в группу wheel. Отметим, что при заведении пользователя был также создан его домашний каталог, куда сразу же скопировались файлы из каталога /etc/skel. Данный каталог обыкновенно содержит "базовый", минимальный набор конфигурационных файлов для создания комфортного пользовательского окружения и, естественно, может быть модифицирован администратором системы.

Уделим теперь внимание проблеме удаления пользователей из системы. За выполнение этого действия отвечает команда userdel, манипулирующая перечисленными выше файлами. У этой команды есть ключ -r, соответствующий удалению не только учетной записи пользователя, но и его домашнего каталога и почты (обычно лежащей в каталоге /var/mail). Однако всегда ли использование userdel оправдано? Работа userdel приводит к освобождению идентификатора пользователя, который впоследствии может быть присвоен другому, вновь созданному пользователю. Это приведет к тому, что все не удаленные из системы пользовательские данные (к примеру, создержащиеся в не удаленном домашнем каталоге) окажутся доступны новому пользователю. Понятно, что такой результат, вообще говоря, не может считаться удовлетворительным.

Как же стоит поступить в такой ситуации? Одним из решений может стать не удаление пользователя, а запрет на вход (логин). За такое действие отвечает команда passwd(8) с ключом -l (--lock). (Кажется, это же самое делает и usermod. -- DmitryChistikov 2008-09-21 17:53:00) Стоит, однако обратить внимание, что в такой ситуации не исключается возможность входа по SSH (например, если в конфигурационном файле sshd_config отключена опция UseLogin), поэтому следует предусмотреть и это.

Заметим, что учетные данные зарегистрированного в системе пользователя могут, разумеется, быть модифицированы системным администратором. Некоторые из таких модификаций производятся еще не встречавшейся нам утилитой usermod. Ее ключ -e, к примеру, позволяет указать дату "отключения" учетной записи. Есть также утилита chage, модифицирующая информацию о сроках "истекания" пароля, --- с ее помощью администратор может, допустим, установить политику смены пользователями своих паролей с той или иной периодичностью.

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

Возвращаемся к заведению пользователя. Пользователя мы завели, а пароль не задали. По умолчанию пользователь создаётся такой, что зайти в систему он не может. Поэтому надо сменить пароль. Пароль можно задать вручную, то есть, сказать passwd имя пользователя. Нужно заметить, что программа passwd, которую мы запускаем из-под рута и программа passwd, которую мы запускаем из-под обычного пользователя - разные программы с разными опциями. Одна лежит в /bin (для обычных пользователей), а другая в /sbin. воспользоваться bin/passwd. А можно задать пароль двумя другими способами:

  • Можно указать пароль в -p. Правда, это будет уже не пароль, а хэш. В альте blowfish'ные пароли, их так просто не получить. Что рекомендует делать в этом случае лектор: можно поставить пакет python-module-bcrypt, запустить питон и сказать bcrypt.hashpw("password", bcrypt.gensalt(8)).

...
  • Кто знает перл, пользуется перлом для той же цели. Специальной утилиты для этого нет. Это та штука, которую можно использовать для задания пароля. Почему лектор это вспомнил: если нужно создать кучу пользователей, и вы хотите просто написать скрипт, который заводит много пользователей и задаёт им какие-то пароли, то этот пароль можно либо заранее сгенерировать, взять от него хэш из passwd и подставлять, либо можно его вычислять на основании имени и ещё чего-то, либо как-то генерировать пароль pwgen'ом, его превращать в хэш, а пользователю отдавать пароль.

# pwgen
oi1Sieg1 Coovah3o chi1Et7t zei0Ub0A aeQua4Sh Oyei6aij aebe3Eod uafai1Pa
vu1AiFiu Phe4Eep5 aZiesh4o pheeBi2a Ahvo5cu8 Jei9Efae giK2aide Nohf6bah
Gi2heira eis7te6Z rai4eeSh GeeK9ui5 aesh6Ud6 nuiCe5im aphai8oX oChoo9Sh
UChek0He akei6Ien Reib8ahk xooJ3sai vaeL7miu up4saeSo wiith9Es choD7iex
pheV2ohf ahY0ooCh uekohv9A ood8Awae ekaiHah9 Chif5toH iF4ga1es ePhah0Ai
jaiShee7 Asa6GeeB iezou1Do bie7eeRe Luxieng3 keiZee5A Pach3Voo Iish5Wie
aiv5ra5O Quahgo8s deeXae2f ohVa7OhD pieh8aeH HahGhae6 eebai6Je iZooch9I
Bub7pee1 ep9NaPhe Bahveiv5 Eechee8g Wae6jogh Uch8eoxe Mokaet2t ech7OeKa
Aingeew8 zub1ohSo koTae2ek dohn1Ahk Ceim8Foo cee9eeTh UGho4nah Cho4aiTh
shiwee8I faecie0S aKaa8uen iezei6Qu EeHiiha7 Eexiech6 muWea6du ReeYi2he
vei7aiCe aiDohj0o iuSaum3f ca2queeL quaek1Ca ai5Iu3aC ieWe5We6 Cohk3ei9
mo1SeiG8 XeeN7aej GooTh0fa tie5TaeJ bah9ooSh nah2Dai7 aiCe0oeW Bah8Zuye
yohv5Eet aegie5Uz iZie6ca6 iw4Jaib4 oGhee9ie taexoe5A eeY6iehu ibaew6Vu
xie2Ieh8 eihe6eTa ooMe0oga ahli6eB7 ba2eaRah om7eiT2i Ie8shiWe Uiya3eew
Kai9ni2d Shoh2ePh EiZ4fe9Z ieSeipo0 ahxoi5Ee uNochae9 JooXo5uu BareiV0x
aa4Ishi2 jae9ohXa AeFo7Tha Zohthoo1 Ua4eeTho zo9Oa0Ph caiN7zeb bueZ2the
eelui6Ue joo8Baat phee8Tae ieQue4th eiya7eiJ ahGo7tho usoh7AhK mee9Fiec
au7Oow6u ohn8ohJu phij8Toh aigi1EiZ oZahmah0 quooGae3 Quaej7tu Ceexu7da
Quae4huz hoPhei6s Ahp3oopu aeGh7heg sah7ahMa ahCh0iit eiquae2A eixae7Uc
ingahCh5 Yai7ohve ohC3quee joth3Bay voyai8Bo shuNgoo3 wai5Kaiv ieJah3Ei

Pwgen'ом можно регулировать длину пароля, символы и т.п. В общем, если вам лень придумывать пароль по алгоритму, который был описан вчера, используйте pwgen.

Управление группами

Отметим, что при создании нашего пользователя admin мы выбрали для него лишь одну дополнительную группу --- wheel. Было бы полезным, однако, добавить его и в другие группы. Зачем это может понадобиться? Дело в том, что при работе, например, с пользовательским десктопом, полезно выдавать первому "вошедшему" доступ к таким ресурсам, как съемные диски, аудиоустройства и пр. Такие действия обычно производятся специальным модулем PAM, меняющим права к соответствующему набору файлов из каталога /dev. В нашем случае таких файлов оказалось довольно много (более двух десятков):

# ls -l /dev/ | grep saj
crw-rw---- 1 saj  audio   14,   12 Jul 31  2008 adsp
crw-rw---- 1 saj  audio   14,    4 Jul 31  2008 audio
crw------- 1 saj  root     5,    1 Jul 31 14:07 console
crw-rw---- 1 saj  audio   14,   25 Jul 31  2008 dmmidi1
crw-rw---- 1 saj  audio   14,    3 Jul 31  2008 dsp
crw------- 1 saj  root    29,    0 Jul 31  2008 fb0
brw-rw---- 1 saj  floppy   2,    0 Jul 31  2008 fd0
brw-rw---- 1 saj  floppy   2,   84 Jul 31  2008 fd0u1040
brw-rw---- 1 saj  floppy   2,   88 Jul 31  2008 fd0u1120
brw-rw---- 1 saj  floppy   2,   28 Jul 31  2008 fd0u1440
brw-rw---- 1 saj  floppy   2,  124 Jul 31  2008 fd0u1600
brw-rw---- 1 saj  floppy   2,   44 Jul 31  2008 fd0u1680
brw-rw---- 1 saj  floppy   2,   60 Jul 31  2008 fd0u1722
brw-rw---- 1 saj  floppy   2,   76 Jul 31  2008 fd0u1743
brw-rw---- 1 saj  floppy   2,   96 Jul 31  2008 fd0u1760
brw-rw---- 1 saj  floppy   2,  116 Jul 31  2008 fd0u1840
brw-rw---- 1 saj  floppy   2,  100 Jul 31  2008 fd0u1920
brw-rw---- 1 saj  floppy   2,   12 Jul 31  2008 fd0u360
brw-rw---- 1 saj  floppy   2,   16 Jul 31  2008 fd0u720
brw-rw---- 1 saj  floppy   2,  120 Jul 31  2008 fd0u800
brw-rw---- 1 saj  floppy   2,   52 Jul 31  2008 fd0u820
brw-rw---- 1 saj  floppy   2,   68 Jul 31  2008 fd0u830
srwx------ 1 saj  root           0 Jul 31 14:07 gpmctl
brw-r----- 1 saj  cdrom   22,    0 Jul 31  2008 hdc
crw-rw---- 1 saj  audio   14,   18 Jul 31  2008 midi1
crw-rw---- 1 saj  audio   14,    0 Jul 31  2008 mixer
crw-rw---- 1 saj  audio   14,   16 Jul 31  2008 mixer1
crw-rw---- 1 saj  audio   14,    1 Jul 31  2008 sequencer
crw-rw---- 1 saj  audio   14,    8 Jul 31  2008 sequencer2

Какое отношение это имеет к группам? Оказывается, смена UID файлам устройств удобна далеко не всегда. Во многих случаях разумнее передавать права на такие файлы не одному пользователю, а целой группе --- а это действие может производиться заранее. В том же /dev, как несложно заметить, есть большое количество файлов, принадлежащим не группе root или wheel, а группе audio, floppy и пр. Для того, чтобы пользователи имели доступ к этим файлам, и нужно включать их в соответствующие группы.

Как же добавить пользователя в ту или иную группу? В стандарте POSIX добавление пользователя в группу (равно как и удаление его оттуда) не реализовывалось какой-либо конкретной утилитой. Предполагалось, что соответствующие действия будут производиться системным администратором путем непосредственного редактирования файла /etc/group. Была (и, разумеется, никуда не исчезла) также возможность использования утилиты usermod с ключом -G, который требует явного указания полного списка групп, в которых должен состоять пользователь. Понятно, однако, что если пользователь уже являлся членом десяти групп, то для добавления его в одиннадцатую вначале нужно было получить список первых десяти и только потом добавить к ним одиннадцатую. Такая операция, очевидно, не является атомарной, а потому в дистрибутивах ALT Linux предусмотрена команда gpasswd:

# gpasswd -a admin proc
Adding user admin to group proc

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

...


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

End date

33

1

1

1

1

ConstantinYershow, DmitryChistikov, MaximByshevskiKonopko


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex

PspoClasses/080731/01UserManaging (последним исправлял пользователь MaximByshevskiKonopko 2008-10-09 22:08:22)