Лекция 4

Типове потребители. Администратор(root) и нормален потребител. Файлове с пароли. Скриване на паролите. Команди за създаване и изтриване на групи и потребители.


Достъпът до всяка Линукс система става чрез потребителски акаунт, установен от системния администратор. Това означава, че на всеки потребител се задава потребителско име за идентификация, парола, собствена директория и му се задават права за достъп до системата. Всичко това се прави чрез администраторския акаунт, наречен root.

Потребителя root се създава автоматично при инсталацията на дистрибуцията. Този потребител се нарича още свръхпотребител (суперпотребител), защото няма нещо, което този потребител да не може да направи. Пред този потребител няма никакви забрани или ограничения и затова работата с него е много удобна, но също толкова опасна. Поради значимостта на този потребител, командния интерпретатор променя обичайния prompt на командния ред.

Важно е да се отбележи, че името на този потребител не е задължително да бъде root, но това е името по подразбиране.

Освен суперпотребителя всяка Линукс система може да има и потребителски акаунти. Всеки акаунт има собствена директория в дървото на операционната система (изключение правят някои системни акаунти). Тя се нарича home (домашна) директория и потребителя попада винаги в нея след своя вход. Директорията се задава при създаването на потребителя и по подразбиране е : /home/ime_na_potrebitelia .

Обикновено потребителя има пълни права в тази директория, но това не е задължително. Например може да се ограничат правата на потребителя върху определени файлове в тази директория. Класически пример за това е ограничаването на правата върху файла profile, който се изпълнява след включване на потребителя в системата.

Цялата информация за потребителите се съхранява във файла /etc/passwd. Това е най-обикновен текстов файл, чийто собственик е суперпотребителя. Само той може да редактира съдържанието му, а останалите потребители имат права само за четене. Редовете в този файл имат строго определен формат:

username:password:userID:groupID:comment:home_directory:login_comm


Нека разгледаме един примерен файл:


root:x:0:0::/root:/bin/bash

bin:x:1:1:bin:/bin:

daemon:x:2:2:daemon:/sbin:

adm:x:3:4:adm:/var/log:

lp:x:4:7:lp:/var/spool/lpd:

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/:

news:x:9:13:news:/usr/lib/news:

uucp:x:10:14:uucp:/var/spool/uucppublic:

operator:x:11:0:operator:/root:/bin/bash

games:x:12:100:games:/usr/games:

ftp:x:14:50::/home/ftp:

smmsp:x:25:25:smmsp:/var/spool/clientmqueue:

mysql:x:27:27:MySQL:/var/lib/mysql:/bin/bash

rpc:x:32:32:RPC portmap user:/:/bin/false

gdm:x:42:42:GDM:/var/state/gdm:/bin/bash

pop:x:90:90:POP:/:

nobody:x:99:99:nobody:/:

sshd:x:33:33:sshd:/:

dino:x:1000:100:Dinko,,,:/home/dino:/bin/bash

www:x:1001:102:,,,:/home/www:/bin/bash

ffsearch:x:1002:103::/home/ffsearch:

stinger:x:1003:100:,,,:/home/stinger:/bin/rzsh

postfix:x:1004:100::/home/postfix:


Всеки ред от този файл е съставен от седем полета, разделени с двоеточия. Ако нищо не се въведе между две двоеточия полето остава празно, но двоеточията задължително трябва да съществуват. Ето и обяснение на седемте полета:


Трябва да се отбележи, че тази структура на файла е еднаква не само за Линукс, но и UNIX базираните операционни системи.

Както бе казано по-горе, операционната система записва паролата във второто поле. Повечето съвременни версии, не използват този подход поради проблеми със сигурността. Те пазят паролите в друг файла, наричан shadow password fail, който се намира в /etc/shadow. Когато паролите са записани в този файл, полето за парола съдържа x. Ето как изглежда един shadow файл:

root:$1$EnI1gPEs$LwH91OIgMRGwPcdqlleU21:12209:0:::::

bin:*:9797:0:::::

daemon:*:9797:0:::::

adm:*:9797:0:::::

lp:*:9797:0:::::

sync:*:9797:0:::::

shutdown:*:9797:0:::::

halt:*:9797:0:::::

mail:*:9797:0:::::

news:*:9797:0:::::

uucp:*:9797:0:::::

operator:*:9797:0:::::

games:*:9797:0:::::

ftp:*:9797:0:::::

smmsp:*:9797:0:::::

mysql:*:9797:0:::::

rpc:*:9797:0:::::

gdm:*:9797:0:::::

pop:*:9797:0:::::

nobody:*:9797:0:::::

sshd:*:9797:0:::::

dino:$1$Vd11bYBs$3NV2tT0FK48OR/CYGM/rD0:12209:0:99999:7:::

www:$1$m4as.9uy$sOJvGN/fJKeSItUDNxl3e0:12215:0:99999:7:::

ffsearch:!:12313:0:99999:7:::

stinger:$1$u8M/xs7r$YgtlAmXbGsppdUNk6/onw/:12400:0:99999:7:::

postfix:!:12411:0:99999:7:::


Когато потребителя въведе паролата си, програмата login прави проста проверка и сравнява двете пароли. Ако те съвпаднат потребителя се допуска до системата, в противен случай достъпа му се отказва.

Въпреки, че преобразуването на паролата до нейния кодиран вариант е кратковременна операция, то обратната операция отнема много време. Полето за парола може да се използва и за ограничаване на достъпа. Това става, като се въведе * на мястото на кодираната парола. Това се използва за потребителски имена като nobody или lp. Обратно, ако това поле се остави празно, то дадения потребител ще може да се включва в системата без парола.

Всеки потребител има асоцииран уникален номер (UID), като чрез него операционната система идентификацира потребителя. Повечето UNIX™ системи използват идентификаторите от 0 до 99 за специални UID, а числата от 100 нагоре за потребителите. Slackware използва различна схема, а именно – от числата от 1000 нагоре се използват за потребителите.

И в двата примерни файла има около дузина потребителски имена създадени автоматично от операционната система. Предназначението на по-важните от тях е:


Повечето от тях имат звездичка в полето за парола, което забранява използването им при логин.

Всички потребители са организирани в групи. Всяка група подобно на потребителските имена притежава уникален идентификационен номер (GID). Тя представлява обединение на няколко потребителя по някакви причини. Например в една група могат да бъдат хората от един отдел, а от друга – вашите приятели или клиенти. Така е по-лесно организирането на правата върху определени файлове или други устройства. Всеки потребител може да принадлежи на няколко групи, но в определен момент той е член само на една от тях. Това е свързано с правата на достъп, тъй като Линукс може да присъедини на потребителя само един идентификатор на група.

Информацията за групите се съдържа във файла /etc/group, който има следния вид:

root::0:root

bin::1:root,bin,daemon

daemon::2:root,bin,daemon

sys::3:root,bin,adm

adm::4:root,adm,daemon

tty::5:

disk::6:root,adm

lp::7:lp

mem::8:

kmem::9:

wheel::10:root

floppy::11:root

mail::12:mail

news::13:news

uucp::14:uucp

man::15:

games::20:

slocate:x:21:

smmsp::25:smmsp

mysql::27:

rpc:x:32:

gdm::42:

ftp::50:

pop::90:pop

nobody::98:nobody

nogroup::99:

users::100:nobody

console:x:101:

sshd::33:sshd

www:x:102:dino,www

ffsearch:x:103:www

utmp::22:

shadow::43:

postdrop:x:104:


Формата на файла е следния:


име_на_групата:парола:GID:списък_с_потребители



Всяка Линукс система има няколко системни групи – такива са bin, mail, uucp, sys и др. Присвояването на потребители към тези групи е лоша идея, тъй като това ще предизвика даването на прекалено големи права на тези потребители.

Всяка Линукс дистрибуция притежава вградени програми за добавяне, премахване и промяна на потребителите. Най-простия начин е ръчното редактиране на passwd файла. Това обаче може да предизвика непредвидими ситуации, ако се допусне грешка. В този случай полето за парола се оставя винаги празно, а паролата се добавя след това. При ръчна промяна на passwd и group може да се използват съответно командите vipw и vigr. Те извикват специална версия на редактора vi, която следи промените във файловете да бъдат направени така, че да не се достига до повреда на файловете. Освен това може да се използват командите adduser или useradd (за добавяне на потребители), userdel (за премахване на потребители) и usermod (за промяна на детайлите на потребителя).

Повечето дистрибуции притежават и програми за манипулация с групи. Това са groupadd, groupdel и groupmod. Командата groups показва към кои групи принадлежи дадения потребител.

В една добре конфигурирана Линукс система не би трябвало да се работи с root потребителя. В някои случаи обаче се налага от неговото използване. Логичния начин е потребителя да се излезе от системата и след това да влезе като root (ако притежава неговата парола, разбира се). Този подход не е много удобен и затова има алтернатива на него. Това е използването на командата su. При извикването й без допълнителни параметри, то тя се опитва да превключи към root потребителя (разбира се ще се наложи да въведете неговата парола). Освен този неявен начин на употреба, командата позволява превключването към който и да е съществуващ потребител:

#su dino

$


От този момент нататък суперпотребителя работи с привилегиите на потребителя dino. В този случай парола не се изисква, но когато обикновен потребител иска да превключи да друг, система винаги изисква парола. Излизането от този режим става чрез натискането на Ctrl+D или чрез командата exit.

2