Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Фундаментальные основы Linux. Часть VII. Управление локальными учетными записями пользователей

Оригинал: Linux Fundamentals
Автор: Paul Cobbaut
Дата публикации: 16 октября 2014 г.
Перевод: А.Панин
Дата перевода: 22 декабря 2014 г.

Глава 25. Вводная информация об учетных записях пользователей

По прочтении данной небольшой главы вы научитесь идентифицировать свою учетную запись на компьютере под управлением системы Unix с помощью таких команд, как who am i, id и других.

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

Кроме того, вы узнаете о том, как запустить программу от лица другого пользователя с помощью команды sudo.

Утилита whoami

Утилита whoami сообщит вам имя вашей учетной записи.
[paul@centos7 ~]$ whoami
paul
[paul@centos7 ~]$

Утилита who

Утилита who предоставит вам информацию о том, какие пользователи осуществили вход в систему.
[paul@centos7 ~]$ who
root     pts/0        2014-10-10 23:07 (10.104.33.101)
paul     pts/1        2014-10-10 23:30 (10.104.33.101)
laura    pts/2        2014-10-10 23:34 (10.104.33.96)
tania    pts/3        2014-10-10 23:39 (10.104.33.91)
[paul@centos7 ~]$

Команда who am i

В случае использования утилиты who в рамках команды who am i будет выведена только одна строка с информацией о вашей текущей сессии.
[paul@centos7 ~]$ who am i
paul     pts/1        2014-10-10 23:30 (10.104.33.101)
[paul@centos7 ~]$

Утилита w

Утилита w предоставляет информацию о пользователях, которые осуществили вход в систему, а также о том, чем они занимаются.
[paul@centos7 ~]$ w
 23:34:07 up 31 min,  2 users,  load average: 0.00, 0.01, 0.02
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0     23:07   15.00s  0.01s  0.01s top
paul     pts/1     23:30    7.00s  0.00s  0.00s w
[paul@centos7 ~]$

Утилита id

Утилита id предоставит вам информацию о вашем идентификаторе пользователя, основном идентификаторе группы, а также выведет список групп, в которых вы состоите.
paul@debian7:~$ id
uid=1000(paul) gid=1000(paul) группы=1000(paul)
В дистрибутивах RHEL/CentOS с помощью данной утилиты вы также можете получить информацию о контексте SELinux.
[root@centos7 ~]# id
uid=0(root) gid=0(root) группы=0(root) контекст=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

Утилита su для работы от лица другого пользователя

Утилита su позволяет пользователю запустить командную оболочку от лица другого пользователя.
laura@debian7:~$ su tania
Password:
tania@debian7:/home/laura$

Утилита su для работы от лица пользователя root

Да, вы также можете использовать утилиту su для работы от лица пользователя root в том случае, если знаете пароль пользователя root.
laura@debian7:~$ su root
Password:
root@debian7:/home/laura#

Утилита su для пользователя root

Вы должны знать пароль пользователя, от лица которого хотите работать, за исключением случая, когда вы входите в систему как пользователь root. Пользователь root может работать от лица любого существующего в системе пользователя, не зная пароля этого пользователя.
root@debian7:~# id
uid=0(root) gid=0(root) группы=0(root)
root@debian7:~# su - valentina
valentina@debian7:~$

Команда su - $имя_пользователя

По умолчанию при смене пользователя утилита su осуществляет сохранение переменных окружения командной оболочки. Для того, чтобы работать от лица другого пользователя в окружении командной оболочки целевого пользователя, следует применять команду su - с последующим вводом имени целевого пользователя.
root@debian7:~# su laura
laura@debian7:/root$ exit
exit
root@debian7:~# su - laura
laura@debian7:~$ pwd
/home/laura

Команда su -

В том случае, если после команды su или su - не следует имени пользователя, считается, что целевым пользователем является пользователь root.
tania@debian7:~$ su -
Password:
root@debian7:~#

Запуск приложения от лица другого пользователя

Утилита sudo позволяет пользователю осуществлять запуск программ с привилегиями других пользователей. Для того, чтобы данная утилита работала, системный администратор должен отредактировать соответствующим образом файл /etc/sudoers. Данная утилита может оказаться полезной в случае возникновения необходимости делегирования административных задач другому пользователю (без передачи этому пользователю пароля пользователя root).

В примере ниже показана методика использования утилиты sudo. Пользователь paul получил право запускать утилиту useradd с привилегиями пользователя root. Это позволило пользователю paul создавать учетные записи новых пользователей в системе, не работая от лица пользователя root и не зная пароля пользователя root.

Исполнение первой введенной пользователем paul команды завершилось неудачей.
paul@debian7:~$ /usr/sbin/useradd -m valentina
useradd: Отказано в доступе
useradd: cannot lock /etc/passwd; try again later.
Но в случае использования sudo данная команда работает.
paul@debian7:~$ sudo /usr/sbin/useradd -m valentina
[sudo] password for paul:
paul@debian7:~$

Утилита visudo

Изучите страницу руководства утилиты visudo перед редактированием файла /etc/sudoers. Методика редактирования файла sudoers выходит за пределы набора тем, рассматриваемых в рамках данной книги.
paul@rhel65:~$ apropos visudo
visudo               (8)  - edit the sudoers file
paul@rhel65:~$

Команда sudo su -

В некоторых дистрибутивах Linux, таких, как Ubuntu и Xubuntu пароль пользователя root изначально не установлен. Это значит, что не имеется возможности войти в систему под именем пользователя root (по сути это дополнительная мера безопасности). Для выполнения задач от лица пользователя root первому пользователю системы предоставляется возможность использования утилиты sudo благодаря добавлению специальной записи в файл /etc/sudoers. Фактически все пользователи, являющиеся членами группы admin, также могут использовать утилиту sudo для исполнения команд от лица пользователя root.
root@laika:~# grep admin /etc/sudoers 
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
В результате пользователь может ввести команду sudo su - и работать от лица пользователя root без ввода пароля пользователя root. При этом команда sudo требует ввода пароля вызвавшего ее пользователя. Исходя из вышесказанного, можно сделать вывод о том, что запрос пароля из примера ниже выполняется утилитой sudo, а не su.
paul@laika:~$ sudo su -
Password:
root@laika:~#

Журналирование неудачных попыток использования утилиты sudo

Использование утилиты sudo без авторизации приведет к выводу строгого предупреждения.
paul@rhel65:~$ sudo su -

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for paul:
paul is not in the sudoers file.  This incident will be reported.
paul@rhel65:~$
После этого пользователь root сможет увидеть следующую запись в файле /var/log/secure в случае использования дистрибутива Red Hat (или /var/log/auth.log в случае использования дистрибутива Debian).
root@rhel65:~# tail /var/log/secure | grep sudo | tr -s ' '
Apr 13 16:03:42 rhel65 sudo: paul : user NOT in sudoers ; TTY=pts/0 ; PWD=\
/home/paul ; USER=root ; COMMAND=/bin/su -
root@rhel65:~#

Практическое задание: вводная информация об учетных записях пользователей

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

2. Выведите список всех пользователей, осуществивших вход в систему.

3. Выведите список всех пользователей, осуществивших вход в систему, включая информацию о командах, которые они выполняют в данный момент.

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

5. Используйте утилиту su для перехода к использованию учетной записи другого пользователя (если вы не используете учетную запись пользователя root, вам потребуется пароль от учетной записи другого пользователя). После этого вернитесь к использованию предыдущей учетной записи.

6. А теперь используйте команду su - для перехода к использованию учетной записи другого пользователя и отметьте различия.

Учтите, что команда su - переместит вас в домашнюю директорию другого пользователя (в примере это пользователь Tania).

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

8. А теперь попытайтесь сделать то же самое, но добавив вызов утилиты sudo перед вашей командой.

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

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

laura@debian7:~$ whoami
laura
laura@debian7:~$ echo $USER
laura

2. Выведите список всех пользователей, осуществивших вход в систему.

laura@debian7:~$ who
laura     pts/0        2014-10-13 07:22 (10.104.33.101)
laura@debian7:~$

3. Выведите список всех пользователей, осуществивших вход в систему, включая информацию о командах, которые они выполняют в данный момент.

laura@debian7:~$ w
 07:47:02 up 16 min,  2 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.104.33.101    07:30    6.00s  0.04s  0.00s w
root     pts/1    10.104.33.101    07:46    6.00s  0.01s  0.00s sleep 42
laura@debian7:~$

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

laura@debian7:~$ id
uid=1005(laura) gid=1007(laura) группы=1007(laura)
laura@debian7:~$

5. Используйте утилиту su для перехода к использованию учетной записи другого пользователя (если вы не используете учетную запись пользователя root, вам потребуется пароль от учетной записи другого пользователя). После этого вернитесь к использованию предыдущей учетной записи.

laura@debian7:~$ su tania
Password:
tania@debian7:/home/laura$ id
uid=1006(tania) gid=1008(tania) группы=1008(tania)
tania@debian7:/home/laura$ exit
laura@debian7:~$

6. А теперь используйте команду su - для перехода к использованию учетной записи другого пользователя и отметьте различия.

Учтите, что команда su - переместит вас в домашнюю директорию другого пользователя (в примере это пользователь Tania).

laura@debian7:~$ su - tania
Password:
tania@debian7:~$ pwd
/home/tania
tania@debian7:~$ logout
laura@debian7:~$

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

laura@debian7:~$ useradd valentina
-su: useradd: command not found
laura@debian7:~$ /usr/sbin/useradd valentina
useradd: Отказано в доступе.
useradd: cannot lock /etc/passwd; try again later.

Вполне возможно, что утилита useradd будет расположена по пути /sbin/useradd в файловой системе вашего компьютера.

8. А теперь попытайтесь сделать то же самое, но добавив вызов утилиты sudo перед вашей командой.

laura@debian7:~$ sudo /usr/sbin/useradd valentina
[sudo] password for laura:
laura is not in the sudoers file.  This incident will be reported.
laura@debian7:~$

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


Предыдущий раздел: Оглавление Следующий раздел:
Глава 24. Дополнительная информация о сценариях   Глава 26. Управление учетными записями пользователей