Потребители и групи
Някои команди, които използват /etc/passwd
4. Промяна на параметрите на потребител
6. Превключване като друг потребител
7. Заключване (lock) или отключване (unlock) на потребител
8. Добавяне или изтриване на група
9. Добавяне или изтриване на потребител в група
10. Проверка на потребителите влезли в системата
В една Unix/Linux система има три вида accounts :
Root account (административна)
Нарича се често superuser и има пълен и неограничен контрол върху системата. Може да изпълнява без ограничения всяка команда.
System accounts
Необходими са за изпълнение на специфични компоненти, които се нуждаят от специфични права - например mail, sshd, www. Всяка модификация, може да има неблагоприятни последствия за функционирането на системата.
User accounts
Осигуряват интерактивен достъп до системата на потребители и групи от потребители. Обикновените потребители получават такива акаунти и имат ограничен достъп до критичните файлове и директории. На всеки потребител се присвояват определени привилегии.
Unix/Linux поддържа концепцията за групи от акаунти(потребители). Всеки потребител е член на една или повеч групи, което позволява правата за достъп до файловете и процесите и сигурността да се управляват за цялата група.
Използват се 4 главни файла за
администриране на потребители и групи:
/etc/passwd
− Съхранява главната информация за акаунтите
(потребителите). Разрешен за четене, но
в него
може да пише само superuser.
/etc/shadow
− Съхранява паролите в криптиран вид за потребителите. Достъпен за четене и
писане само от superuser.
/etc/group
− Съхранява информация за групите от потребители. Разрешен за четене, но
в него
може да пише само superuser.
/etc/gshadow
− съдържа информация за паролата и администраторите на групата. Достъпен за четене и
писане само от superuser.
Командите, които са налични в повечето Unix/Linux системи за управление на потребителите и групите:
Синтаксисът на командите може да се види в man страниците. Това са команди от ниско ниво. Обикновено се използват по-мощни команди описани по-долу.
Файлът съхранява съществена информация необходима при вписването на потребителя. Той е разрешен за четене, но в него може да пише само superuser/root.
$ ls -l /etc/passwd
Всеки ред от файла има следния вид ( 7 колони разделени с ":" ) :
1. Username – Използва се при вписване на потребителя (login-in) в системата. Между 1 и 32 символа
2. Password – Символът x показва, че паролата се съхранява във файла /etc/shadow. Тя се изчислява чрез hash функция. Трябва да се използва командата passwd за изчисление на hash стойността съхранявана в /etc/shadow.
3. User ID (UID) – Присвоява се на всеки потребител. UID 0 (zero) е резервирано за root потребителя, номерата от 1-999 са резервирани за системни акаунти.
4. Group ID (GID) – Номерът на групата съхраняван в /etc/group. GID 0 (zero) е резервирано за root потребителя, номерата от 1-999 са резервирани за системни акаунти.
5. User ID Info – Коментар. Позволява въвеждането на допълнителна информация за потребителя, като пълно име, телефон, …
6. Home directory – Личната директория на потребителя. Ако тя не е зададена се приема /
7. Command/shell – Абсолютния път към обвивката (обикновено) или команда. Ако този път е /sbin/nologin на потребитела се забранява логване в системата (прави се обикновено за системни акаунти). При опит за директно логване в този случай ядрото прекратява връзката.
$cat /etc/passwd |egrep 100[0-9]
$cat /etc/passwd |egrep ^root
$ cat /etc/passwd |egrep nologin
· passwd command
· su command
· sulogin command
· getent command
· login command
· pwck command
· pwunconv command
· chpasswd command
· chsh command
· chfn command
· useradd command
· userdel command
Файлът е достъпен за четене и писане само от superuser/root
$sudo cat /etc/shadow |egrep imom
Всеки ред от файла има следния вид ( 8 колони разделени с ":" ):
1. Username.
2. Password : Криптираната парола. Тя трябва да бъде минимум 8-12 символа включително специални знаци. Обикновено паролата започва с $id$, който показва използвания алгоритъм за криптиране
a. $1$ is MD5
b.
$2a$ $2y$
$y$ are
Blowfish
c. $5$ is SHA-256
d. $6$ is SHA-512
3. Последна смяна на паролата – броя на дните след Jan 1, 1970 когато паролата е сменена.
4. Minimum : Минимален брой на дните преди потребителя да му бъде разрешена смяна на паролата (обикновено 0).
5. Maximum : Максимален брой на дните (след това трябва да смени паролата си)
6. Warn :Броят на дните преди изтичане на паролата, когато потребителят получава съобщение за промяна.
7. Inactive : Броят на дните след крайния срок на изтичане на срока за смяна на паролата (и деактивиране на акаунта)
8. Expire : Брой на дните след Jan 1, 1970 задаващ дата, след която потребителят не може да ползва системата.
Потребителите на Linux/UNIX се присъединяват към една или повече групи по следните причини.
· Да се споделят файлове или други ресурси с ограничена група потребители
· По-лесно управление на потребителите.
· По-лесно следене на потребителите.
· Особено полезно е при големи Linux /UNIX инсталации.
· За да се дадат специални права за файлове, директории и устройства на всички принадлежащи на тази група.
Файлът е достъпен за четене от всички, а за писане само от super-user/root
$cat /etc/group |egrep 100[0-9]
Всеки ред от файла има следния вид ( 4 колони разделени с ":" ):
group_name:password:GID:user_list
където
1. group_name: Името на групата. Вижда се при изпълнение на команда ls -l в полето за групата.
2. Password: Обикновено полето не се използва. Може да съдържа криптирана парола и да се използва при създаване привилегировани групи.
3. Group ID (GID): номера на групата.
4. user_list: Списъкът от потребители, членове на групата разделени със запетая.
Файлът може да се чете само от root user и съдържа криптирана парола на всяка група, членовете на групата и информация за администратора. Както в файла /etc/group, всяка група е на отделна линия. Отделните информации се разделят с двоеточие и представляват ( 4 колони разделени с ":" ):
!
,
тогава никой потребител не може да се добави с newgrp команда
. Стойност !!
се интерпретира като !
като допълнително показва, че не е задавана парола . $sudo cat /etc/gshadow |egrep imom
Примерен ред от /etc/gshadow
general:!!:shelley:juan,bob
Този ред показва, че групата general няма парола и не позволява присъединяването на нови членове с newgrp команда , shelley е администратор на групата , а juan и bob са обикновенни членове.
Всяка Unix/Linux система има потребител наречен root, който има пълни права върху системата и който трябва да се използва само за администриране на потребители, софтуер и ресурси.
В Ubuntu административния root акаунт е деактивиран по подразбиране – дадена му е парола, която не може да се криптира и не е възможно директно логване като root. Вместо това потребителите се насърчават да използват средство с име sudo за изпълнение на административни задачи. Това средство е достъпно за всички потребители, които са включени в група sudo. При инсталирането на системата първият потребител е в включен в тази група. Ако трябва такива права да се дадат на други потребители, те просто трябва да се включат в тази група.
Ако по някакви особени причини трябва да се активира root акаунта ( не се препоръчва поради липса на поддръжка от Ubuntu), трябва да му се зададе парола (sudo passwd).
Използва се скрипт написан на perl, който облекчава и води процеса на създаването на нов потребител и на нова група. Информация за скрипта може да се види с.
$ cat /usr/sbin/adduser |less
Пример:
$ sudo adduser test
Adding user `test' ...
Adding new group `test' (1001) ...
Adding new user `test' (1001) with group `test' ...
Creating home directory `/home/test' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for test
Enter the new value, or press ENTER for the default
Full Name []: Test account
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
$
$ cat /etc/passwd | grep test
test:x:1001:1001:Test account,,,:/home/test:/bin/bash
$ cat /etc/passwd | grep 100[0-9]
При създаването на нов потребител, скриптът копира предварително създадените файлове от директория /etc/skel (skel derived from skeleton):
$ ls -a /etc/skel
. .. .bash_logout .bashrc .profile
Това са три скрити скриптови файла, които се използват за унифициране на автоматично изпълняваните действия при login logout на потребителите.
.profile .bashrc , are read and the commands in them executed by shell every time you log in to the system
The ".profile" ( or“.bash_profile” ) file is responsible for setting up the environment using environment variables that store information about text editor, layout settings, etc. It executes only once when you log in to your machine. Whereas “.bashrc” contains commands, aliases, bash functions and runs when you open the terminal to an already logged-in system.
Файлът .bash_logout се чете и изпълнява при logout.
Повече за тези файлове може да видите тук.
Мястото на директорията skel може да се променя с SKEL= в конфигурационния файл /etc/default/useradd.
Командата usermod се използва от superuser за извършването на промени за съществуващ потребител.
Синтаксис:
usermod [options] username
Ако акаунта username не съществува командата дава грешка. Опциите се разделят с празни интервали.
Някои опции:
Options:
-c, --comment COMMENT | new value of the
comment field $sudo usermod -c "new comment information" test $cat /etc/passwd |egrep test |
-d, --home HOME_DIR | new home directory for
the user account change home directory from /home/test to /var/www/ $sudo usermod -d /var/www/ test $cat /etc/passwd |egrep test |
-e, --expiredate EXPIRE_DATE | set account expiration
date to EXPIRE_DATE ( date format YYYY-MM-DD) or to numbers of days
after Jan 1, 1970 verify (chage -change user password expiry information command): $sudo chage -l test change: $ sudo usermod -e 2024-11-01 test $sudo chage -l test |
-f, --inactive INACTIVE |
set password inactive
after expiration INACTIVE days The number of days after a password expires until the account is permanently disabled. A value of 0 disables the account as soon as the password has expired, and a value of -1 disables the feature. |
-g, --gid GROUP | force use GROUP as new
primary group veriify (id - print real and effective user and group IDs command) $ id test change: $sudo usermod -g imom test $id test |
-G, --groups GROUPS | new list of supplementary GROUPS |
-a, --append | append the user to the supplemental GROUPS mentioned by the -G option without removing him/her from other groups |
-l, --login NEW_LOGIN | new value of the login name |
-d, --home HOME_DIR | new home directory for the user account |
-m, --move-home | move contents of the home directory to the new location (use only with -d) |
-s, --shell SHELL | new login shell for the user account |
Допълнителни примери могат да се видят тук!
Пълният списък на опциите може да се види в man страницата
Така например ако потребител pijo,
трябва да бъде променен на pijo2 и да му бъде
сменена съответно личната директория трябва да се подаде команда
(опцията -m премества съдържанието на личната директория в
новосъздадената):
$ sudo usermod -d /home/pijo2 -m -l pijo2 pijo
За добавяне на потребител john в групата sudo :
$ sudo usermod -a -G sudo john
$sudo deluser username
Командата премахва съответната група, ако в нея няма други членове, но не премахва личната директория на потребителя. От администратора зависи дали ще я запази (за информация например какво е правил) или премахне.
Внимание! Всеки добавен по-късно потребител със същите UID/GID ще я получи като лична директория. За да се избегне такава опасност личната директория може да се премести:
sudo mkdir /home/archived_users
sudo mv /home/username
/home/archived_users/username
Вместо да се прави logging off и отново logging on, може да се използва командата switch user (su):
$su - test
$Password:
$pwd
/home/test
Опцията „-" прави текуща директория личната директория на новия потребител.
sudo passwd -l username
This option disables a password by
changing it to a value which matches no possible encrypted value
(it adds a ´!´ at the beginning of the password).
Note that
this does not disable the account. The user may still be able to login
using another authentication token (e.g. an SSH key). To disable
the account, administrators should use usermod --expiredate 1
(this set the account's expire date to Jan 2, 1970).
Users with
a locked password are not allowed to change their password.
Отключването се извършва с
sudo passwd -u username
sudo addgroup groupname
sudo delgroup groupname
sudo adduser username groupname
sudo deluser username groupname
Команда | Извежда |
w | Логнатите в момента потребители с техните процеси |
who | Логнатите в момента потребители |
users | Логнатите в момента потребители на един ред разделени със запетаи и сортирани в азбучен ред |