notes

User management

Table of content

Common

  1. whoami - показывает имя учетной записи
  2. who - предоставляет информацию о том, какие пользователи осуществили вход в систему
  3. whoami - выводит информацию о сессии текущего пользователя
  4. w - показывает информацию о пользователях, которые осуществили вход в систему, а так же о том, чем они занимаются
  5. id - показывает идентификатор текущего пользователя, основной идентификатор группы, а так же список групп, в которых состоит текущий пользователя.
     $ id
     uid=1000(max) gid=1000(max) groups=1000(max),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare),999(docker)
    
  6. su - позволяет работать от другого пользователя системы
     su tania
     su root
    
    • по умолчанию при смене пользователя утилита su оставляет сохранение переменных окружения командной оболочик. Для того, чтобы работать от лица другого пользователя в окружении командной оболочки целевого пользователя, следует применять команду su -

        su - laura
      
    • если после su не указанно имя пользователя то считает что целевым пользователем является root.

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

  8. В некоторых дистрибутивах Linux, таких, как Ubuntu и Xubuntu пароль пользователя root изначально не установлен. Это значит, что не имеется возможности войти в систему под именем пользователя root. Для выполнения задач от лица пользователя root первому пользователю системы предоставляется возможность использования утилиты sudo благодаря добавлению специальной записи в файл /etc/sudoers.

    • Фактически все пользователи, являющиеся членами группы admin, также могут использовать утилиту sudo для исполнения команд от лица пользователя root.
        $ sudo grep admin /etc/sudoers
        # Members of the admin group may gain root privileges
        %admin ALL=(ALL) ALL
      
    • В результате первый пользователь работать от лица пользователя root
        sudo su -
      

CRUD Users

  1. Files with default settings
    • /etc/default/useradd
    • /etc/login.defs
    • /etc/skel - content of this directory will be copied to new user’s home
  2. Локальная база данных учетных записей пользователей расположена в файле /etc/passwd.
     $ cat /etc/passwd | grep -E 'max|root'
     root:x:0:0:root:/root:/bin/bash
     max:x:1000:1000:max,,,:/home/max:/bin/bash
    
    • В столбцах (разделённых двоеточикем) содержится следующая информация:
      • имя пользователя
      • симол х
      • идентификатор пользователя
      • идентификатор основной группы пользователя
      • описание учетной записи пользователя
      • пусть к домашней директории пользователя
      • пусть к исполняемому файлу командной оболочки.
    • root всегда получает идентификатор 0
    • дополнительная информация может быть взята из справки:
        man 5 passwd
      
  3. useradd - добавляет пользователя в систему
     $ useradd -m -d /home/yanina -c "yanina wickmayer" yanina
     $ tail -1 /etc/passwd
     yanina:x:529:529:yanina wickmayer:/home/yanina:/bin/bash
    
    • /etc/default/useradd - файл содержащий параметры по умолчанию для новых добавляемых в систему пользователей.

    • useradd -D - просмотр файла с дефолтными настройками для новых пользователей.

  4. adduser - shortcut for adding user interactively

  5. userdel - удаляет пользователя из системы
     userdel -r yanina
    
    • -r - удаляет так же и домашнюю директорию пользователя
  6. usermod - модифицирует параметры указанной записи
     $ tail -1 /etc/passwd
     harry:x:516:520:harry potter:/home/harry:/bin/bash
     $ usermod -c 'wizard' harry
     $ tail -1 /etc/passwd
     harry:x:516:520:wizard:/home/harry:/bin/bash
    
  7. /etc/skel - в случае использования параметра -m утилиты useradd содержимое директории /etc/skell копируется в создаваемую домашнюю директорию пользователя. Обычно в /etc/skell находятся скрыте файлы, которые содержат стандартные параметры профиля пользвователя и значения параметров приложений.
     $ ls -la /etc/skel/
     total 40
     drwxr-xr-x   2 root root  4096 май 20 19:20 .
     drwxr-xr-x 144 root root 12288 авг 27 15:40 ..
     -rw-r--r--   1 root root   220 сен  1  2015 .bash_logout
     -rw-r--r--   1 root root  3771 сен  1  2015 .bashrc
     -rw-r--r--   1 root root  8980 апр 20  2016 examples.desktop
     -rw-r--r--   1 root root   655 июн 24  2016 .profile
    

CRUD User Groups

  1. /etc/group - хранит информацию о членстве пользователях в группах
     $ tail -5 /etc/group
     max:x:1000:
     sambashare:x:124:max
     docker:x:999:max
     mysql:x:125:
     debian-tor:x:126:
    
    • имя группы : зашифрованный пароль группы : идентификатор группы : список членов группы
  2. groupadd - добавить группу
  3. groups username - список групп в которых состоит пользователь
  4. usermod -a -G groupname username - добавляет пользователя в группу
  5. groupmod - изменить параметры группы (-n изменить имя)
  6. groupdel - удалить группу
  7. gpasswd -A - делегирует функции контроля над группой другому пользователю

     root@$ gpasswd -A serena sports # user serena now have rights to edit sports user group
     root@$ su - serena
     serena@$ gpasswd -a harry sports # add user hary to group sports
    
    • /etc/gshadow - содержит информацию об администраторах групп пользователей
    • gpasswd -A "" groupname - очищает список администраторов группы пользователей
  8. newgrp groupname - создаёт дочернюю командную оболочку с новой основной группой пользователей
     $ touch st.txt
     $ ls -l
     total 0
     -rw-r--r-- 1 root root 0 Sep  1 05:46 st.txt
     $ newgrp test-gr
     $ echo $SHLVL
     2
     $ touch st2.txt
     $ ls -l
     total 0
     -rw-r--r-- 1 root root    0 Sep  1 05:46 st.txt
     -rw-r--r-- 1 root test-gr 0 Sep  1 05:47 st2.tx
    

Add root access

  1. Information about users with root access is stored in /etc/sudoers
  2. Add file with the following content inside /etc/sudoers.d/
     username ALL=(ALL) NOPASSWD:ALL
    

User Passwords

  1. passwd - изменяет пароль текущего пользователя.
    • Применяет несколько стандартных проверок на качество пароля.
    • Пользователь root не обязан следовать правилам проверки.
  2. passwd username - изменяет пароль пользователя с именем username
  3. /etc/shadow - хранит зашифрованные пароли пользователей. Содержит в себе
    • имя пользователя
    • зашифрованный пароль
    • время последнего изменения пароля (с 01.01.1970)
    • количество дней, в течение которых пароль должен оставаться неизменным
    • день истечения срока действия пароля
    • количество дней перед истечением срока действия пароля, по прошествии которых должно выводиться предупреждение
    • количество дней после истечения пароля, по прошествии которых учетная запись должна быть отключена
    • день отключения учетной записи (с 01.01.1970)
  4. Возможно создать пользователя и сразу задать ему пароль с помощью утилиты openssl
    • Создание пользователя user1 с паролем hunter2
        useradd -m -p $(openssl passwd hunter2) user1
      
    • Нужно помнить что при задании пароля таким образом, он останется в истории командной оболочки
  5. /etc/login.defs - содержит некоторые стандартные значения параметров паролей пользователей.
     $ grep PASS /etc/login.defs
     #	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
     #PASS_CHANGE_TRIES
     #PASS_ALWAYS_WARN
     #PASS_MIN_LEN
     #PASS_MAX_LEN
    
  6. chage - устанавливает дату истечения срока действия пользовательской учетной записи (-E), установка минимального (-m), максимального (-M) срока действия пароля и других параметров паролей.
    • -l - позволяет ознакомиться с текущими параметрами пароля для указанной записи
        ~$ chage -l $USER
        Last password change					: окт. 29, 2016
        Password expires					: never
        Password inactive					: never
        Account expires						: never
        Minimum number of days between password change		: 0
        Maximum number of days between password change		: 99999
        Number of days of warning before password expires	: 7
      

Блокировка учетных записей

  1. Если пароль в /etc/shadow начинается с ! то учетная запись не может использоваться.
  2. usermod -L username - блокировка записи
  3. usermod -U username - разблокировка записи