Потребители и групи

 

1.       Въведение. 1

Формат на файла /etc/passwd. 1

Някои команди, които използват /etc/passwd. 1

Формат на файла /etc/shadow.. 1

Формат на файла /etc/group

Формат на файла  /etc/gshadow. 1

2.       The Superuser: root 1

3.       Добавяне на нов потребител

4.     Промяна на параметрите на потребител. 1

5.       Изтриване на потребител. 1

6.       Превключване като друг потребител. 1

7.       Заключване (lock) или отключване (unlock) на потребител. 1

8.       Добавяне или изтриване на група. 1

9.       Добавяне или изтриване на потребител в група. 1

10.       Упражнения. 1

 

     1.     Въведение

В една 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 страниците. Това са команди от ниско ниво.  Обикбновено се използват по-мощни команди описани по-долу.




Формат на файла /etc/passwd

Файлът съхранява съществена информация необходима при вписването на потребителя. Той е разрешен за четене, но в него може да пише само 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 |еgrep ^root
$ cat /etc/passwd |egrep nologin

Някои команди, които използват /etc/passwd

·        passwd command

·        su command

·        sulogin command

·        getent command

·        login command

·        pwck command

·        pwunconv command

·        chpasswd command

·        chsh command

·        chfn command

·        useradd command

·        userdel command

Формат на файла /etc/shadow

Файлът е достъпен за четене и писане само от superuser/root

$sudo cat /etc/shadow |egrep imom

Всеки ред от файла има следния вид ( 8 колони разделени с ":" ):

https://www.cyberciti.biz/faqs/uploaded_images/shadow-file-718705.png

1.      Username.

2.      Password : Криптираната парола. Тя трябва да бъде минимум 8-12 символа включително специални знаци. Обикновено паролата започва с $id$, който показва използвания алгоритъм за криптиране

a.      $1$ is MD5

b.      $2a$ is Blowfish

c.      $2y$ is Blowfish

d.      $5$ is SHA-256

e.      $6$ is SHA-512

3.      Последна смяна на паролата – броя на дните след Jan 1, 1970 когато паролата е сменена.

4.      Minimum : Минимален брой на дните преди потребителя да му бъде разрешена смяна на паролата  (обикновено 0).

5.      Maximum : Максимален брой на дните (след това трябва да смени паролата си)

6.      Warn :Броят на дните преди изтичане на паролата, когато потребителят получава съобщение за промяна.

7.      Inactive : Броят на дните след крайния срок на изтичане на срока за смяна на паролата (и деактивиране на акаунта)

8.      Expire : Брой на дните след Jan 1, 1970 задаващ дата, след която потребителят не може да ползва системата.

 

 

Формат на файла /etc/group

Потребителите на 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: Списъкът от потребители, членове на групата разделени със запетая.

Формат на файла /etc/gshadow

Файлът може да се чете само от root user и съдържа криптирана парола на всяка група, членовете на групата и информация за администратора.  Както в  файла  /etc/group, всяка група е на отделна линия. Отделните информации се разделят с двоеточие и представляват ( 4 колони разделени с ":" ):


$sudo cat /etc/gshadow |egrep imom

Примерен ред от /etc/gshadow


general:!!:shelley:juan,bob

Този ред показва, че групата general няма  парола  и не позволява присъединяването на нови членове  с newgrp команда ,  shelley е администратор на групата , а   juan и bob са обикновенни членове.

 

     2.     The Superuser: root

Всяка Unix/Linux система има потребител наречен root, който има пълни права върху системата и който трябва да се използва само за администриране на потребители, софтуер и ресурси.

В Ubuntu административния root акаунт е деактивиран по подразбиране – дадена му е парола, която не може да се криптира и не е възможно директно логване като root. Вместо това потребителите се насърчават да използват средство с име sudo за изпълнение на административни задачи. Това средство е достъпно за всички потребители, които са включени в група sudo. При инсталирането на системата първият потребител е в включен в тази група. Ако трябва такива права да се дадат на други потребители, те просто трябва да се включат в тази група.

Ако по някакви особени причини трябва да се активира root акаунта ( не се препоръчва поради липса на поддръжка от Ubuntu), трябва да му се зададе парола (sudo passwd).

     3.     Добавяне на нов потребител

Използва се скрипт написан на 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

При създаването на нов потребител, скриптът копира предварително създадените файлове от директория /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

   

Разлики между   .bashrc и .profile

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.

4.     Промяна на параметрите на потребител

Командата  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

     5.     Изтриване на потребител

$sudo deluser username

Командата премахва съответната група, ако в нея няма други членове, но не премахва личната директория на потребителя. От администратора зависи дали ще я запази (за информация например какво е правил) или премахне.

Внимание! Всеки добавен по-късно потребител със същите UID/GID ще я получи като лична директория. За да се избегне такава опасност личната директория може да се премести:

sudo mkdir /home/archived_users
sudo mv /home/username /home/archived_users/username

     6.     Превключване като друг потребител

Вместо да се прави logging off и отново  logging on, може да се използва командата switch user (su):

$su - test

$Password:

$pwd

/home/test

Опцията „-" прави текуща директория личната директория на новия потребител.

     7.      Заключване (lock) или отключване (unlock) на потребител

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

     8.     Добавяне или изтриване на група

sudo addgroup groupname

sudo delgroup groupname

     9.     Добавяне или изтриване на потребител в група

sudo adduser username groupname

sudo deluser username groupname

 

     10.      Упражнения 

 
Към кой файл принадлежи всеки от следващите редове: