Библиотека сайта rus-linux.net
Цилюрик О.И. Linux-инструменты для Windows-программистов | ||
Назад | Консольные команды | Вперед |
Пользователи и права
Эта группа команд позволяет манипулировать с именами пользователей (добавлять, удалять, менять им права). Управление учётными записями пользователей — это целый раздел искусства системного администрирования. Мы же рассмотрим эту группу команд в минимальном объёме, достаточном для администрирования своего локального рабочего места.
Основная команда добавления нового имени пользователя:
# adduser Usage: useradd [options] LOGIN Options: -b, --base-dir BASE_DIR base directory for the new user account home directory -c, --comment COMMENT set the GECOS field for the new user account -d, --home-dir HOME_DIR home directory for the new user account ... # which adduser /usr/sbin/adduser
При создании нового имени пользователя для него будут определены (в диалоге) и значения основных параметров пользователя: пароль, домашний каталог и другие. Команды той же группы:
# ls /usr/sbin/user* /usr/sbin/useradd /usr/sbin/userhelper /usr/sbin/usermod /usr/sbin/userdel /usr/sbin/userisdnctl /usr/sbin/usernetctl
С этими командами достаточно ясно без объяснений. Вот как мы меняем домашний каталог для нового созданного пользователя:
# adduser kernel # usermod -d /home/guest kernel # cat /etc/passwd | grep kernel kernel:x:503:100:kernel:/home/guest:/bin/bash
А вот так администратор может сменить пароль любого другого пользователя:
# passwd kernel Смена пароля для пользователя kernel. Новый пароль : НЕУДАЧНЫЙ ПАРОЛЬ: основан на слове из словаря НЕУДАЧНЫЙ ПАРОЛЬ: слишком простой Повторите ввод нового пароля : passwd: все токены проверки подлинности успешно обновлены.
Уже находясь в системе (под каким-то, естественно именем), мы можем всегда перерегистрироваться (в одном отдельном терминале) под именем любого известного системе пользователя:
$ su - kernel Пароль: $ whoami kernel $ pwd /home/guest
Сложнее с действиями с паролем
пользователя. Вот как посмотреть состояние пароля пользователя
(выполняется только с правами root
):
$ sudo passwd -S olej
olej PS 2010-03-13 0 99999 7 -1 (Пароль задан, шифр SHA512.)
Но узнать (восстановить) пароль любого
ординарного пользователя администратор не может, он может только
сменить его на новый — это один из основных принципов UNIX. А
как следствие этого принципа: если вы утеряли пароль пользователя
root
, то
легальных способов исправить ситуацию не существует ... да и
нелегальные вряд ли помогут — система достаточно надёжно
защищена.
Ещё один часто задаваемый вопрос с не
очевидным ответом: если команда создания пользователя adduser
всегда создаёт пользователя с паролем входа, то как создать
пользователя с пустым паролем? Для этого нам нужно удалить пароль у
уже существующего пользователя:
# adduser guest ... # passwd -d guest Удаляется пароль для пользователя guest.. passwd: Успех # passwd -S guest guest NP 2011-03-23 0 99999 7 -1 (Пустой пароль.)
Все регистрационные записи пользователей (как созданных администратором, так и создаваемых самой системой) хранятся в файле:
$ cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin ... olej:x:500:500:O.Tsiliuric:/home/olej:/bin/bash olga:x:501:501:olga:/home/olga:/bin/bash
- 3-е поле каждой записи — это численный идентификатор пользователя (UID), а 4-е - численный идентификатор основной группы (GID) этого пользователя. А вот значение 'x' во 2-м поле говорит о том, что пароль для пользователя хранится в файле теневых паролей:
$ ls -l /etc/shad* -r-------- 1 root root 1288 Янв 24 2010 /etc/shadow -r-------- 1 root root 1288 Янв 24 2010 /etc/shadow-
Обратите внимание на права доступа к этому файлу: даже root
не имеет права записи в этот файл.
По умолчанию, при создании командой adduser
нового пользователя с именем xxx
создаётся и новая группа с тем же именем xxx
.
Кроме того, пользователя дополнительно можно включить в любое число
существующих групп. Смотрим состав групп, их (групп) численные
идентификаторы (GID) и принадлежность пользователей к группам:
$ cat /etc/group ... nobody:x:99: users:x:100:olej,games,guest,olga,kernel ... olej:x:500: ...
- во 2-й показанной строке здесь olej
— это имя пользователя в группе users
,
а в последней — имя группы, только совпадающее по написанию
с именем olej
пользователя: это результат отмеченного умолчания при создании
пользователя, но от него можно и отказаться, задавая группу вручную.
Пример того, как получить информацию (если забыли) кто, как и где зарегистрирован в системе на текущий момент:
$ who root tty2 2011-03-19 08:55 olej tty3 2011-03-19 08:56 olej :0 2011-03-19 08:22 olej pts/1 2011-03-19 08:22 (:0) olej pts/0 2011-03-19 08:22 (:0) olej pts/2 2011-03-19 08:22 (:0) olej pts/3 2011-03-19 08:22 (:0) olej pts/4 2011-03-19 08:22 (:0) olej pts/5 2011-03-19 08:22 (:0) olej pts/6 2011-03-19 08:22 (:0) olej pts/9 2011-03-19 09:03 (notebook)
- здесь:
а). две (стр.1,2) регистрации в текстовых
консолях (# 2 и 3) под разными именами (root
и olej
);
б). X11 (стр.3) регистрация (консоль #7, CentOS 5.2 ядро 2.6.18);
в). 7 открытых графических терминалов в X11, дисплей :0;
г). одна удалённая
регистрация по SSH (последняя строка) с компьютера с сетевым именем
notebook
.
А вот так узнать имя, под которым зарегистрирован пользователь на текущем терминале:
$ whoami olej
- и это совсем не пустая формальность при одновременно открытых в системе нескольких десятков терминалов.
А как получают права root
?
На то есть несколько возможностей:
1. Перерегистрация:
$ su - Пароль: #
2. Выполнение единичной команды от имени root
:
$ su -c ls Пароль: build.articles $ su -c 'ls -l' Пароль: итого 520 drwxrwxr-x 4 olej olej 4096 Мар 13 19:54 build.articles ...
3. Наилучший способ выполнения команды от имени root
:
$ sudo makewhatis ...
Но иногда (в зависимости от дистрибутива), при первом употреблении команда sudo
нещадно ругается... В этом случае нужно настроить поведение sudo
:
cat /etc/sudoers ... ## Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL %olej ALL=(ALL) NOPASSWD: ALL ...
- здесь показана одна новая строка, добавленная по
образцу закомментированной, разрешающая «беспарольный sudo»
для пользователя с именем olej
.
Предыдущий раздел: | Оглавление | Следующий раздел: |
Справочные системы | Команды файловой системы |