Управлението на потребителите във всяка операционна система е една от основните рутинни задачи на системния администратор.
За операционна система, базирана на Linux, това обикновено включва създаване на потребителски акаунти, модифициране на съществуващи акаунти, като промяна на тяхната начална директория, обвивка по подразбиране, заключване/отключване на един или повече акаунти и премахване на потребителски акаунти.
Преди да проучим командите и процесите за изпълнение на тези задачи, нека разгледаме накратко как потребителските акаунти могат да бъдат класифицирани в Linux. Също така имайте предвид, че освен ако не е изрично посочено, дадените команди ще работят в повечето от често срещаните Linux дистрибуции.
Съдържание
Типове потребители
Коренен потребител
Потребителят root е администраторът на ОС с всички права за извършване на операции. Обикновено само root може да инсталира/деинсталира или актуализира основни системни програми и библиотеки. Това е единственият потребителски акаунт с привилегии за цялата система.
И така, root потребителят е най-мощният потребител на системата.
Специален потребител
Това са потребителите без вход. Те нямат всички привилегии на root потребителя. В зависимост от акаунта те поемат различни специализирани роли.
Те се създават автоматично по време на инсталиране на всяко приложение. bin, sync, lp, mail, operator, squid са някои от примерите за специални потребители.
Общи потребители
Обикновените потребители имат пълни привилегии само в тяхната работна директория, обикновено тяхната домашна директория. Те нямат права да управляват системата или да инсталират софтуера. Те не могат да изпълняват тези задачи, без да имат специални привилегии чрез sudo.
Добавяне на потребител
Debian/Ubuntu
В базирана на Debian или Ubuntu система има няколко опции за добавяне на потребители от CLI. Първата команда е adduser, която е Perl скрипт и използва команда useradd в бекенда, чието използване ще видим по-късно.
Тъй като добавянето на потребител е привилегирована задача, ще трябва да използвате sudo като префикс и потребителско име като аргумент. Други подробности могат да бъдат посочени при поискване. С изключение на потребителско име и парола, останалите подробности не са задължителни. Можем да проверим дали потребителят е създаден с помощта на команда id.
$ sudo adduser johndoe Adding user `johndoe' ... Adding new group `johndoe' (1003) ... Adding new user `johndoe' (1003) with group `johndoe' ... Creating home directory `/home/johndoe' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for johndoe Enter the new value, or press ENTER for the default Full Name []: John Doe Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] Y $ $ id johndoe uid=1003(johndoe) gid=1003(johndoe) groups=1003(johndoe) $
CentOS/RHEL/Fedora (включително Debian/Ubuntu)
Следващата команда, useradd, ще работи в RHEL базирани OS дистрибуции, както и работи еднакво добре на Ubuntu/Debian хостове. Най-простият синтаксис (без допълнителни опции) за създаване на нов потребител е:
$ sudo useradd <username>
Пример:
$ sudo useradd janedoe
Командата useradd поддържа множество опции, които могат да бъдат зададени при създаването на потребителя, като най-често срещаните са потребителски идентификатор (UID), групов идентификатор (GID), обвивка по подразбиране и домашна директория и т.н. Един такъв пример е даден по-долу:
$ sudo useradd -s /bin/sh -d /data/newhome -c "Jane Doe" -u 1005 janedoe
Можете да проверите новосъздадения потребител с помощта на командата id:
$ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe) $
Промяна на потребителя
Човек често трябва да модифицира някои свойства на съществуващи потребители въз основа на организационни изисквания, потребителски заявки или миграции на системата. Повечето от тези свойства са лесни за модифициране, въпреки че трябва да гарантираме как това ще се отрази на потребителската среда и достъпа до файлове, притежавани или достъпни от потребителя.
Обвивка по подразбиране
Обвивката по подразбиране е CLI обвивката, създадена, когато потребител стартира нова CLI сесия или локално, или чрез SSH. Повечето съвременни системи имат потребителски Bash по подразбиране, въпреки че може да варира в зависимост от дистрибуцията на Linux или средата на потребителя. За да промените обвивката по подразбиране на потребител, използвайте:
$ sudo usermod -s <shell> <username>
Пример:
$ getent passwd janedoe janedoe:x:1005:1005::/data/newhome:/bin/sh $ sudo usermod -s /bin/bash janedoe $ getent passwd janedoe janedoe:x:1005:1005::/data/newhome:/bin/bash $
Както можете да видите в горния резултат, обвивката е променена от /bin/sh на /bin/bash за потребител janedoe.
Домашен указател
Подобно на обвивката по подразбиране, домашната директория на потребителя може да бъде променена на различно местоположение с помощта на:
$ sudo usermod -d <new_directory_path> <username>
В примера по-долу потребителската начална директория на потребителя janedoe е променена на /data/janedoe:
$ getent passwd janedoe janedoe:x:1005:1005::/data/newhome:/bin/bash $ sudo usermod -d /data/janedoe janedoe $ getent passwd janedoe janedoe:x:1005:1005::/data/janedoe:/bin/bash $
Преди да направите превключването, уверете се, че новата директория има правилната собственост и разрешения. В противен случай потребителят може да се сблъска с проблеми по време на влизане или работа в новата начална директория.
Потребителско име
Можете да промените потребителския идентификатор на съществуващ потребител, като използвате:
$ sudo usermod -u <new_uid> <username>
Пример:
$ getent passwd janedoe janedoe:x:1005:1005::/data/janedoe:/bin/bash $ sudo usermod -u 1010 janedoe $ getent passwd janedoe janedoe:x:1010:1005::/data/janedoe:/bin/bash $
Отново промяната на UID променя начина, по който файловата система на Linux картографира собствеността и разрешението за файл или директория. Уверете се, че домашната директория на потребителя и нейното съдържание, както и всички други файлове навсякъде в системата, първоначално притежавани от потребителя (със стар UID), са променени на картографирани UID. Ако не го направите, това може да причини проблеми в CLI сесията и достъпа до файлове от потребителя.
Група по подразбиране
Групата по подразбиране обикновено е идентификаторът на групата по подразбиране на потребителя, който се създава по време на създаването на потребител, освен ако не е указан друг GID. Linux ви позволява да променяте групата по подразбиране на потребител, като използвате и командата usermod. Ето синтаксиса, който трябва да използвате:
$ sudo usermod -g <new_gid or group_name> <username>
Ето един пример:
$ getent passwd janedoe janedoe:x:1010:1005::/data/janedoe:/bin/bash $ sudo usermod -g 1001 janedoe $ getent passwd janedoe janedoe:x:1010:1001::/data/janedoe:/bin/bash $
Отново се уверете, че новият идентификатор на групата е зададен в домашната директория на потребителя, съдържанието и всички други файлове или директории, приложими за правилното мигриране на техните разрешения за собственост.
Добавяне/премахване на групи
Освен групата по подразбиране, потребител в Linux може да бъде част от вторични групи. Винаги можем да добавяме или премахваме допълнителни групи, към които принадлежи даден потребител, използвайки командата usermod.
$ sudo usermod -a -G <group_id or group_name> <username>
Пример:
$ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe) $ sudo usermod -a -G docker janedoe $ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe),1001(docker) $
По същия начин, за да премахнете потребител от една от вторичните групи, използвайте командата gpasswd, както е показано по-долу:
$ sudo gpasswd -d <username> <groupname>
Пример:
$ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe),1001(docker) $ sudo gpasswd -d janedoe docker Removing user janedoe from group docker $ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe) $
Коментар на GECOS
Полето GECOS в /etc/passwd съдържа потребителска информация или коментар. Можем да променим тази информация за съществуващ потребител като:
$ sudo usermod -c <comment> <username>
Пример:
$ getent passwd janedoe janedoe:x:1005:1005::/data/janedoe:/bin/bash $ sudo usermod -c "Jane Doe - System Admin" janedoe $ getent passwd janedoe janedoe:x:1005:1005:Jane Doe - System Admin:/data/janedoe:/bin/bash $
Моля, обърнете внимание, че ако вашият коментар или потребителски данни съдържат интервали, оградете това поле в кавички, както е направено в горния пример.
Потребителско име
Името за вход на потребителя може също да бъде променено с помощта на командата usermod чрез използване на флаг -l:
$ sudo usermod -l <new_username> <old_username>
Пример:
$ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe) $ sudo usermod -l jane_doe janedoe $ id jane_doe uid=1005(jane_doe) gid=1005(janedoe) groups=1005(janedoe) $
Не забравяйте да актуализирате потребителските препратки според новото име, където и да се използва. Дори в команди като id трябва да се посочи новото потребителско име.
Премахване на потребител
Потребител може да бъде премахнат от Linux чрез командата userdel.
$ sudo userdel <username>
Пример:
$ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe) $ sudo userdel janedoe $ id janedoe id: ‘janedoe’: no such user $
За да премахнете потребител заедно с неговата домашна директория и пощенски спул, добавете също флаг -r.
$ sudo userdel -r <username>
Специално за системи, базирани на Ubuntu, можете също да използвате команда deluser, за да премахнете потребител:
$ sudo deluser <username>
По същия начин, за да премахнете домашната директория и спула за поща, използвайте:
$ sudo deluser --remove-home <username>
За подробна информация и други поддържани опции вижте главната страница на различни команди, като използвате:
$ man adduser $ man useradd $ man usermod $ man deluser $ man userdel
Заключение
Тази статия показа различни аспекти на управлението на потребителите в Linux система. Това включва обяснение на различни категории потребители и как да ги добавяте и премахвате. Той също така обхваща различни опции, които помагат да се променят параметрите на съществуващ потребител. Въпреки че не обхваща всички възможности, поддържани от различни команди, то обхваща много общи административни задачи, с които системният администратор ще се сблъска в ежедневната си работа.
Може също да ви е интересно да прочетете: Как да премахвам файлове и директории в Linux?