Пользователи Linux
Назовите себя
кто я
Команда whoami сообщает вам ваше имя пользователя.
datasoft @ datasoft-linux /$ whoami
datasoft
datasoft @ datasoft-linux /$ su - datasoft
Password:
datasoft @ datasoft-linux ~$ whoami
datasoft
datasoft @ datasoft-linux ~$
кто
Команда who предоставит вам информацию о том, кто вошел в систему.
datasoft @ datasoft-linux ~$ who
datasoft :0 2014-08-18 15:14 (:0)
datasoft pts/11 2014-08-18 15:15 (:0)
кто я
Если кто я, команда who будет отображать только строку, указывающую на ваш текущий сеанс.
datasoft @ datasoft-linux ~$ who am i
datasoft pts/11 2014-08-18 15:15 (:0)
вес
Команда w показывает, кто вошел в систему и что они делают.
[email protected]:~$ w
17:18:34 up 7 min, 2 users, load average: 1.16, 1.61, 0.91
USER TTY FROM [email protected] IDLE JCPU PCPU WHAT
ritwik tty7 :0 17:11 7:26 10.43s 0.28s gnome-session -
ritwik pts/1 :0 17:17 0.00s 0.11s 0.00s w
[email protected]:~$
Я бы
Команда id предоставит вам ваш идентификатор пользователя, идентификатор основной группы и список групп, к которым вы принадлежите.
datasoft @ datasoft-linux ~$ id
uid=1000(datasoft) gid=1000(datasoft) groups=1000(datasoft),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare)
datasoft @ datasoft-linux ~$ su - brel
No passwd entry for user 'brel'
datasoft @ datasoft-linux ~$ id
uid=1000(datasoft) gid=1000(datasoft) groups=1000(datasoft),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare)
пользователи
Управление пользователями
Управление пользователями в любом Unix может осуществляться тремя дополнительными способами. Вы можете использовать графические инструменты, предоставляемые вашим дистрибутивом. Эти инструменты имеют внешний вид, который зависит от дистрибутива. Если вы начинающий пользователь Linux в своей домашней системе, используйте графический инструмент, предоставляемый вашим дистрибутивом. Это гарантирует, что вы не столкнетесь с проблемами.
Другой вариант - использовать такие инструменты командной строки, как useradd, usermod, gpasswd, passwd и другие. Администраторы сервера могут использовать эти инструменты, поскольку они знакомы и очень похожи во многих различных дистрибутивах. Эта глава сосредоточится на этих инструментах командной строки.
Третий и довольно экстремистский способ - редактировать локальные конфигурационные файлы напрямую, используя vi (или vipw / vigr). Не пытайтесь сделать это как новичок в производственных системах!
/ и т.д. / пароль
Локальная база данных пользователей в Linux (и в большинстве Unixes) - это / etc / passwd.
datasoft @ datasoft-linux ~$ tail /etc/passwd
rtkit:x:107:114:RealtimeKit,,,:/proc:/bin/false
saned:x:108:115::/home/saned:/bin/false
whoopsie:x:109:116::/nonexistent:/bin/false
speech-dispatcher:x:110:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh
avahi:x:111:117:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false
lightdm:x:112:118:Light Display Manager:/var/lib/lightdm:/bin/false
colord:x:113:121:colord colour management daemon,,,:/var/lib/colord:/bin/false
...
Как видите, этот файл содержит семь столбцов, разделенных двоеточием. Столбцы содержат имя пользователя, х, идентификатор пользователя, идентификатор основной группы, описание, имя домашнего каталога и оболочку входа.
корень
Пользователь root, также называемый суперпользователем, является самой мощной учетной записью в вашей системе Linux. Этот пользователь может делать практически все, включая создание других пользователей. Пользователь root всегда имеет ID пользователя 0 (независимо от имени учетной записи).
datasoft @ datasoft-linux ~$ head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
useradd
Вы можете добавлять пользователей с помощью команды useradd. В приведенном ниже примере показано, как добавить пользователя с именем yanina (последний параметр) и одновременно принудительно создать домашний каталог (-m), задать имя домашнего каталога (-d) и задать описание (- с).
datasoft @ datasoft-linux /$ sudo useradd -m -d /home/psr -c "psr" psr
datasoft @ datasoft-linux /$ tail -1 /etc/passwd
psr:x:1001:1001:psr:/home/psr:
Пользователь с именем yanina получил идентификатор пользователя 529 и идентификатор основной группы 529.
/ и т.д. / по умолчанию / useradd
Как в Red Hat Enterprise Linux, так и в Debian / Ubuntu есть файл / etc / default / useradd, который содержит некоторые пользовательские параметры по умолчанию. Помимо использования cat для отображения этого файла, вы также можете использовать useradd -D.
datasoft @ datasoft-linux /$ sudo useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no
userdel
Вы можете удалить пользователя yanina с помощью userdel. Опция -r userdel также удалит домашний каталог.
usermod
Вы можете изменить свойства пользователя с помощью команды usermod. Этот пример использует usermod для изменения описания пользователя psr.
datasoft @ datasoft-linux /$ tail -1 /etc/passwddatasoft:x:1000:1000:datasoft,,,:/home/datasoft:/bin/bash
datasoft @ datasoft-linux /$ sudo useradd -m -d /home/psr -c "psr" psr
datasoft @ datasoft-linux /$ tail -1 /etc/passwd
psr:x:1001:1001:wizard:/home/psr:
datasoft @ datasoft-linux /$
пароли:
ПАРОЛЬ
Пароли пользователей могут быть установлены с помощью команды passwd. Пользователи должны будут предоставить свой старый пароль, прежде чем дважды вводить новый.
datasoft @ datasoft-linux /$ passwd
Changing password for datasoft.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
You must choose a longer password
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
datasoft @ datasoft-linux /$
Как видите, инструмент passwd выполнит некоторую базовую проверку, чтобы пользователи не могли использовать слишком простые пароли. Пользователь root не должен следовать этим правилам (хотя будет предупреждение). Пользователь root также не обязан указывать старый пароль, прежде чем вводить новый пароль дважды.
/ и т.д. / тень
Пароли пользователей зашифрованы и хранятся в / etc / shadow. Файл / etc / shadow доступен только для чтения и может быть прочитан только пользователем root. В разделе о правах доступа к файлам мы увидим, как пользователи могут менять свой пароль. На данный момент вы должны знать, что пользователи могут изменить свой пароль с помощью команды / usr / bin / passwd.
datasoft @ datasoft-linux /$ tail /etc/shadow
saned:*:16177:0:99999:7:::
whoopsie:*:16177:0:99999:7:::
speech-dispatcher:!:16177:0:99999:7:::
avahi:*:16177:0:99999:7:::
lightdm:*:16177:0:99999:7:::
colord:*:16177:0:99999:7:::
hplip:*:16177:0:99999:7:::
pulse:*:16177:0:99999:7:::
datasoft:$6$jH/aE9bK$8Kc6vqN8/1cYbbysQb2m7QZBus.19EdHJM3hTaOipaI.ioqmlW59TD4eZAITsuRBkhoNNqNrH1whrafr2.Rvg/:16300:0:99999:7:::
psr:!:16300:0:99999:7:::
Файл / etc / shadow содержит девять столбцов, разделенных двоеточиями. Девять полей содержат (слева направо) имя пользователя, зашифрованный пароль (обратите внимание, что зашифрованный пароль есть только у inge и laura), день последней смены пароля (день 1 - 1 января 1970 г.), количество дней. пароль должен быть оставлен без изменений, день истечения срока действия пароля, количество предупреждений за несколько дней до истечения срока действия пароля, количество дней после истечения срока действия до отключения учетной записи и день, когда учетная запись была отключена (опять же, с 1970 года). Последнее поле пока не имеет смысла.
шифрование пароля
шифрование с помощью passwd
Пароли хранятся в зашифрованном формате. Это шифрование выполняется функцией crypt. Самый простой (и рекомендуемый) способ добавления пользователя с паролем в систему - это добавить пользователя с помощью команды userradd -m user, а затем установить пароль пользователя с помощью passwd.
datasoft @ datasoft-linux /$ sudo useradd -m saha
datasoft @ datasoft-linux /$ sudo passwd saha
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
datasoft @ datasoft-linux /$
шифрование с помощью openssl
Другой способ создания пользователей с паролем - использовать параметр -p в useradd, но для этого параметра требуется зашифрованный пароль. Вы можете создать этот зашифрованный пароль с помощью команды openssl passwd.
datasoft @ datasoft-linux /$ sudo openssl passwd stargate
[sudo] password for datasoft:
poTPZHPnIoGyg
datasoft @ datasoft-linux /$ sudo useradd -m -p poTPZHPnIoGyg mohamed
шифрование с помощью склепа
Третий вариант - создать собственную программу на C, используя функцию crypt, и скомпилировать ее в команду.
datasoft @ datasoft-linux /$ cat MyCrypt.c
#include <stdio.h>
#define __USE_XOPEN
#include <unistd.h>
int main(int argc, char** argv)
{
if(argc==3)
{
printf("%s\n", crypt(argv[1],argv[2]));
}
else
{
printf("Usage: MyCrypt $password $salt\n" );
}
return 0;
}
Эта маленькая программа может быть скомпилирована с помощью gcc следующим образом.
datasoft @ datasoft-linux ~$ gcc MyCript.c -o MyCript -lcrypt
Чтобы использовать его, нам нужно дать два параметра MyCript. Первый - незашифрованный пароль, второй - соль. Соль используется для нарушения алгоритма шифрования одним из 4096 различных способов. Этот вариант не позволяет двум пользователям с одинаковым паролем иметь одинаковую запись в / etc / shadow.
datasoft @ datasoft-linux ~$ ./MyCript stargate 12 12L4FoTS3/k9U
datasoft @ datasoft-linux ~$ ./MyCript stargate 01 01Y.yPnlQ6R.Y
datasoft @ datasoft-linux ~$ ./MyCript stargate 33 330asFUbzgVeg
datasoft @ datasoft-linux ~$ ./MyCript stargate 42 42XFxoT4R75gk
Вы заметили, что первые два символа пароля - соль?
Стандартный вывод функции crypt использует алгоритм DES, который устарел и может быть взломан за считанные минуты. Лучший способ - использовать пароли md5, которые могут быть распознаны солью, начинающимся с $ 1 $.
datasoft @ datasoft-linux ~$ ./MyCript stargate '$1$12'
$1$12$xUIQ4116Us.Q5Osc2Khbm1
datasoft @ datasoft-linux ~$ ./MyCript stargate '$1$01'
$1$01$yNs8brjp4b4TEw.v9/IlJ/
datasoft @ datasoft-linux ~$ ./MyCript stargate '$1$33'
$1$33$tLh/Ldy2wskdKAJR.Ph4M0
datasoft @ datasoft-linux ~$ ./MyCript stargate '$1$42'
$1$42$Hb3nvP0KwHSQ7fQmIlY7R.
Соль md5 может быть длиной до восьми символов. Соль отображается в / etc / shadow между вторым и третьим $, поэтому никогда не используйте пароль в качестве соли!
datasoft @ datasoft-linux ~$ ./MyCript stargate '$1$stargate'
$1$stargate$qqxoLqiSVNvGr5ybMxEVM1
пароль по умолчанию
/etc/login.defs
Файл /etc/login.defs содержит некоторые настройки по умолчанию для паролей пользователей, такие как устаревание пароля и настройки длины. (Вы также найдете числовые ограничения идентификаторов пользователей и групп и идентификаторы того, следует ли создавать домашний каталог по умолчанию).
datasoft @ datasoft-linux ~$ grep -i pass /etc/login.defs
# Password aging controls:
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_WARN_AGE Number of days warning given before a password expires.
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_WARN_AGE 7
...
Chage
Команда chage может использоваться для установки срока действия учетной записи пользователя (-E), установки минимального (-m) и максимального (-M) срока действия пароля, даты истечения срока действия пароля и установки количества дней предупреждения перед паролем. Дата окончания срока. Большая часть этой функциональности также доступна из команды passwd. Параметр изменения -l выведет список этих настроек для пользователя.
отключение пароля
Пароли в / etc / shadow не могут начинаться с восклицательного знака. Когда второе поле в / etc / passwd начинается с восклицательного знака, пароль не может быть использован.
Использование этой функции часто называется блокировкой, отключением или приостановкой учетной записи пользователя. Помимо vi (или vipw) вы можете сделать это с помощью usermod.
Первая строка на следующем скриншоте отключит пароль пользователя subho, что сделает невозможным аутентификацию Гарри с использованием этого пароля.
Пользователь root (и пользователи с правами sudo на su) по-прежнему смогут использовать su (потому что пароль здесь не нужен). Также обратите внимание, что Гарри все равно сможет войти, если он настроил ssh без пароля!
datasoft @ datasoft-linux /$ sudo su psr
[email protected]:/$
Вы можете снова разблокировать учетную запись с помощью usermod -U.
Обратите внимание на небольшие различия в параметрах командной строки passwd, usermod и useradd в разных дистрибутивах! Проверяйте локальные файлы при использовании таких функций, как «отключение, приостановка или блокировка» пользователей и паролей
редактирование локальных файлов
Если вы все еще хотите вручную отредактировать / etc / passwd или / etc / shadow, узнав эти команды для управления паролями, тогда используйте vipw вместо vi (m) напрямую. Инструмент vipw сделает правильную блокировку файла.
[email protected]:~$ sudo vipw /etc/passwd
домашние каталоги
создание домашних каталогов
Самый простой способ создать домашний каталог - это указать параметр -m с помощью useradd (он, вероятно, установлен в Linux как параметр по умолчанию).
Менее простой способ - создать домашний каталог вручную с помощью mkdir, который также требует установки владельца и прав доступа к каталогу с помощью chmod и chown (обе команды подробно обсуждаются в другой главе).
datasoft @ datasoft-linux /home$ sudo chown subho:subho /home/subho
datasoft @ datasoft-linux /home$ sudo chown subho:subho /home/subho
datasoft @ datasoft-linux /home$ sudo chmod 700 /home/subho
datasoft @ datasoft-linux /home$ ls -ld /home/subho/
drwx------ 2 subho subho 4096 Aug 19 17:04 /home/subho/
/ и т.д. / Skel /
При использовании useradd опции -m каталог / etc / skel / копируется во вновь созданный домашний каталог. Каталог / etc / skel / содержит некоторые (обычно скрытые) файлы, которые содержат настройки профиля и значения по умолчанию для приложений. Таким образом / etc / skel / служит домашним каталогом по умолчанию и профилем пользователя по умолчанию.
datasoft @ datasoft-linux /home$ ls -la /etc/skel/
total 40
drwxr-xr-x 2 root root 4096 Apr 17 06:56 .
drwxr-xr-x 132 root root 12288 Aug 19 17:06 ..
-rw-r--r-- 1 root root 220 Apr 9 06:33 .bash_logout
-rw-r--r-- 1 root root 3637 Apr 9 06:33 .bashrc
-rw-r--r-- 1 root root 8980 Oct 4 2013 examples.desktop
-rw-r--r-- 1 root root 675 Apr 9 06:33 .profile
удаление домашних каталогов
Опция -r userdel гарантирует, что домашний каталог будет удален вместе с учетной записью пользователя.
пользовательская оболочка
оболочка входа
Файл / etc / passwd определяет оболочку входа для пользователя. На приведенном ниже снимке экрана видно, что пользовательские аннелисты будут входить в систему с помощью оболочки / bin / bash, а пользовательские субхо - с помощью оболочки / bin / ksh.
datasoft @ datasoft-linux /home$ tail -2 /etc/passwd
mohamed:x:1003:1003::/home/mohamed:
subho:x:1004:1004::/home/subho:
Вы можете использовать команду usermod, чтобы изменить оболочку для пользователя.
datasoft @ datasoft-linux /home$ usermod -s /bin/bash/subho
datasoft @ datasoft-linux /home$ tail -l /etc/passwd
avahi:x:111:117:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false
lightdm:x:112:118:Light Display Manager:/var/lib/lightdm:/bin/false
colord:x:113:121:colord colour management daemon,,,:/var/lib/colord:/bin/false
hplip:x:114:7:HPLIP system user,,,:/var/run/hplip:/bin/false
pulse:x:115:122:PulseAudio daemon,,,:/var/run/pulse:/bin/false
datasoft:x:1000:1000:datasoft,,,:/home/datasoft:/bin/bash
psr:x:1001:1001:wizard:/home/psr:
saha:x:1002:1002::/home/saha:
mohamed:x:1003:1003::/home/mohamed:
subho:x:1004:1004::/home/subho:
CHSH
Пользователи могут изменить свою оболочку входа в систему с помощью команды chsh. Сначала пользователь subho получает список доступных оболочек (он мог бы также выполнить cat / etc / shells), а затем меняет свою оболочку входа в систему на оболочку Korn (/ bin / ksh). При следующем входе в систему subho будет по умолчанию ksh вместо bash.
переключать пользователей с помощью su
su другому пользователю
Команда su позволяет пользователю запускать оболочку как другой пользователь.
datasoft @ datasoft-linux /home$ su subho
Password:
datasoft @ datasoft-linux /home$
су корень
Да, вы также можете su, чтобы стать пользователем root, когда вы знаете пароль пользователя root.
datasoft @ datasoft-linux /home$ su root
Password:
datasoft @ datasoft-linux /home$
Сильный> Су как корень
Если вы не вошли в систему как root, для запуска оболочки от имени другого пользователя необходимо знать пароль этого пользователя. Пользователь root может стать любым пользователем, не зная пароля пользователя.
su - $ username
По умолчанию команда su поддерживает ту же среду оболочки. Чтобы стать другим пользователем, а также получить среду целевого пользователя, введите команду su -, за которой следует имя целевого пользователя.
су -
Если для su или su - не указано имя пользователя, команда будет считать, что root является целью.
запустить программу от имени другого пользователя
о судо
Программа sudo позволяет пользователю запускать программу с учетными данными другого пользователя. Прежде чем это сработает, системный администратор должен настроить файл / etc / sudoers. Это может быть полезно для делегирования административных задач другому пользователю (без указания пароля root).
На скриншоте ниже показано использование sudo. Пользователь Пол получил право на запуск useradd с учетными данными root. Это позволяет Павлу создавать новых пользователей в системе, не становясь root и не зная пароля root.
setuid на судо
В двоичном файле sudo установлен бит setuid, поэтому любой пользователь может запустить его с эффективным идентификатором пользователя root.
visudo
Проверьте man-страницу visudo, прежде чем играть с файлом / etc / sudoers.
судо су
В некоторых системах Linux, таких как Ubuntu и Kubuntu, пользователь root не имеет установленного пароля. Это означает, что невозможно войти в систему как root (дополнительная безопасность). Для выполнения задач от имени root, первый пользователь получает все права sudo через / etc / sudoers. Фактически все пользователи, которые являются членами группы администраторов, могут использовать sudo для запуска всех команд от имени пользователя root.
Конечным результатом этого является то, что пользователь может набрать sudo su - и стать пользователем root без необходимости вводить пароль root. Команда sudo требует ввода вашего собственного пароля. Таким образом, запрос пароля на скриншоте ниже предназначен для sudo, а не для su.
Упражнение, практика и решение:
1. Создайте пользователей Серена Уильямс, Винус Уильямс и Джастин Энен, все из них с паролем, заданным для звездных врат, с именем пользователя (строчными буквами!) В качестве имени и полного имени в комментарии. Убедитесь, что пользователи и их домашний каталог созданы правильно.
Код:
useradd -m -c "Serena Williams" serena ; passwd serena
useradd -m -c "Venus Williams" venus ; passwd venus
useradd -m -c "Justine Henin" justine ; passwd justine
tail /etc/passwd ; tail /etc/shadow ; ls /home
Keep user logon names in lowercase!
2. Создайте пользователя с именем kornuser, предоставьте ему оболочку Korn (/ bin / ksh) в качестве оболочки по умолчанию. Войдите в систему с этим пользователем (в командной строке или в tty).
Код:
useradd -s /bin/ksh kornuser ; passwd kornuser
3. Создайте пользователя с именем einstime без домашнего каталога, укажите его / bin / date в качестве оболочки по умолчанию для входа. Что происходит, когда вы входите в систему с этим пользователем? Можете ли вы вспомнить полезный пример из реальной жизни для изменения оболочки входа пользователя в приложение?
Код:
useradd -s /bin/date einstime ; passwd einstime
4. Попробуйте команды who, whoami, who i, w, id, echo $ USER $ UID.
Код:
who ; whoami ; who am i ; w ; id ; echo $USER $UID
5. Заблокируйте учетную запись пользователя venus с помощью usermod.
Код:
usermod -L venus
6. Используйте passwd -d для отключения пароля серены. Проверьте строку serena в / etc / shadow до и после отключения.
Код:
grep serena /etc/shadow; passwd -d serena ; grep serena /etc/shadow
7. В чем разница между блокировкой учетной записи пользователя и отключением пароля учетной записи пользователя?
Код:
Locking will prevent the user from logging on to the system with his password (by putting
a ! in front of the password in /etc/shadow). Disabling with passwd will erase the password
from /etc/shadow.
8. В качестве пользователя root измените пароль einstime на stargate.
Код:
Log on as root and type: passwd einstime
9. Теперь попробуйте изменить пароль Серены на Серена как Серена.
Код:
log on as serena, then execute: passwd serena... it should fail!
10. Убедитесь, что каждый новый пользователь должен менять свой пароль каждые 10 дней.
Код:
For an existing user: chage -M 10 serena
For all new users: vi /etc/login.defs (and change PASS_MAX_DAYS to 10)
11. Установите количество предупреждений четыре дня для kornuser.
Код:
chage -W 4 kornuser
12. Установите пароль двух отдельных пользователей для звездных врат. Посмотрите на зашифрованные звездные врата в / etc / shadow и объясните.
Код:
If you used passwd, then the salt will be different for the two encrypted passwords.
13. Сделайте резервную копию как корень / etc / shadow. Используйте vi, чтобы скопировать зашифрованные звездные врата другому пользователю. Может ли этот другой пользователь войти в систему с помощью Stargate в качестве пароля?
Код:
Yes.
14. Поместите файл в каталог скелета и проверьте, скопирован ли он в домашний каталог пользователя. Когда копируется каталог скелета?
Код:
When you create a user account with a new home directory.
15. Зачем использовать vipw вместо vi? В чем может быть проблема при использовании vi или vim?
Код:
vipw will give a warning when someone else is already using
that file.
16. Используйте chsh, чтобы вывести список всех оболочек и сравнить их с cat / etc / shells. Измените свою оболочку входа на оболочку Korn, выйдите из системы и снова войдите в нее. Теперь вернитесь обратно в bash.
Код:
On Red Hat Enterprise Linux: chsh -l
On Debian/Ubuntu: cat /etc/shells
17. Какая опция useradd позволяет вам назвать домашнюю директорию?
Код:
-d
18. Как узнать, заблокирован ли пароль пользователя harry или нет? Дайте решение с помощью grep и решение с помощью passwd.
Код:
grep harry /etc/shadow
passwd -S harry
Предыдущий: Linux регулярные выражения
Далее: Linux группы
Новый контент: Composer: менеджер зависимостей для PHP , R программирования