Како додати, изменити и уклонити корисника у Линуку?

Upravljanje korisničkim nalozima predstavlja jedan od ključnih zadataka svakog administratora sistema, bez obzira na operativni sistem.

Kada je reč o sistemima baziranim na Linuxu, ovaj proces tipično obuhvata kreiranje novih korisničkih naloga, izmenu postojećih (poput promene matičnog direktorijuma ili podrazumevane ljuske), zaključavanje i otključavanje naloga, kao i njihovo uklanjanje.

Pre nego što detaljnije istražimo komande i procese za obavljanje ovih zadataka, osvrnućemo se na klasifikaciju korisničkih naloga u Linuxu. Važno je napomenuti da će navedene komande, osim ako nije drugačije naznačeno, raditi na većini standardnih Linux distribucija.

Vrste korisnika

Root korisnik

Root korisnik je administrator operativnog sistema sa potpunim ovlašćenjima za izvođenje svih operacija. Uobičajeno je da samo root korisnik ima mogućnost instaliranja, deinstaliranja ili ažuriranja ključnih sistemskih programa i biblioteka. On je jedini korisnički nalog sa sistemskim privilegijama.

Dakle, root korisnik je najmoćniji korisnik sistema.

Specijalni korisnici

Ovo su korisnici koji nemaju direktan pristup sistemu putem prijave. Oni ne poseduju sve privilegije root korisnika i, zavisno od naloga, preuzimaju različite specijalizovane funkcije.

Specijalni korisnici se automatski kreiraju prilikom instalacije različitih aplikacija. Neki od primera su bin, sync, lp, mail, operator i squid.

Obični korisnici

Obični korisnici imaju potpun pristup i ovlašćenja samo unutar svog radnog, najčešće matičnog direktorijuma. Oni nemaju prava upravljanja sistemom niti instaliranja softvera. Za obavljanje takvih zadataka potrebne su im posebne privilegije, koje se dobijaju korišćenjem sudo komande.

Dodavanje korisnika

Debian/Ubuntu

U sistemima zasnovanim na Debianu ili Ubuntuu, postoji nekoliko načina za dodavanje korisnika putem komandne linije. Prva komanda je `adduser`, koja predstavlja Perl skriptu i u pozadini koristi `useradd` komandu, koju ćemo kasnije razmotriti.

S obzirom na to da je dodavanje korisnika privilegovana radnja, potrebno je koristiti `sudo` kao prefiks, a korisničko ime kao argument. Ostali detalji se mogu uneti na zahtev. Osim korisničkog imena i lozinke, ostali detalji su opcioni. Uspešno kreiranje korisnika može se proveriti pomoću `id` komande.

$ 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 (uključujući Debian/Ubuntu)

Komanda `useradd` radi na RHEL distribucijama operativnog sistema, kao i na Ubuntu/Debian sistemima. Osnovna sintaksa (bez dodatnih opcija) za kreiranje novog korisnika je:

$ sudo useradd <korisničko_ime>

Na primer:

$ sudo useradd janedoe

Komanda `useradd` podržava različite opcije koje se mogu navesti prilikom kreiranja korisnika, a najčešće su korisnički ID (UID), grupni ID (GID), podrazumevana ljuska i matični direktorijum. Primer sa nekim od tih opcija je dat u nastavku:

$ sudo useradd -s /bin/sh -d /data/newhome -c "Jane Doe" -u 1005 janedoe

Verifikacija novokreiranog korisnika se može izvršiti pomoću `id` komande:

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$

Izmena korisnika

Često je potrebno modifikovati pojedine karakteristike postojećih korisničkih naloga, bilo zbog organizacionih zahteva, korisničkih potreba ili sistemskih migracija. Većina ovih svojstava se lako može izmeniti, ali je važno voditi računa o uticaju tih promena na korisničko okruženje i pristup datotekama u njihovom vlasništvu ili onima kojima pristupaju.

Podrazumevana ljuska

Podrazumevana ljuska je CLI ljuska koja se pokreće kada korisnik otvori novu CLI sesiju, bilo lokalno ili putem SSH-a. Većina savremenih sistema podrazumevano koristi Bash ljusku, ali se to može razlikovati u zavisnosti od Linux distribucije ili korisničkog okruženja. Za izmenu podrazumevane ljuske korisnika, koristite:

$ sudo usermod -s <ljuska> <korisničko_ime>

Primer:

$ 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
$

Kao što se može videti u gornjem izlazu, ljuska za korisnika janedoe je promenjena sa `/bin/sh` na `/bin/bash`.

Matični direktorijum

Slično kao i podrazumevana ljuska, i matični direktorijum korisnika se može promeniti na drugu lokaciju koristeći:

$ sudo usermod -d <nova_putanja_direktorijuma> <korisničko_ime>

U primeru ispod, matični direktorijum korisnika janedoe je promenjen na `/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
$

Pre izvršavanja ove promene, potrebno je osigurati da novi direktorijum ima odgovarajuća prava vlasništva i dozvole. U suprotnom, korisnik može imati problema prilikom prijave ili rada u novom matičnom direktorijumu.

Korisnički ID

Korisnički ID postojećeg korisnika se može promeniti koristeći:

$ sudo usermod -u <novi_uid> <korisničko_ime>

Primer:

$ 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
$

I ovde je važno napomenuti da promena UID-a utiče na način na koji Linux sistem mapira vlasništvo i dozvole za datoteke i direktorijume. Potrebno je osigurati da matični direktorijum korisnika, njegov sadržaj i sve druge datoteke u sistemu koje su bile u vlasništvu korisnika (sa starim UID-om), budu ažurirane na novi UID. U suprotnom, korisnik može imati problema u CLI sesiji i sa pristupom datotekama.

Podrazumevana grupa

Podrazumevana grupa je obično ID grupe korisnika, koja se kreira prilikom formiranja korisničkog naloga, ukoliko nije drugačije navedeno. Linux takođe omogućava izmenu podrazumevane grupe korisnika pomoću komande `usermod`. Sintaksa za ovu komandu je:

$ sudo usermod -g <novi_gid_ili_ime_grupe> <korisničko_ime>

Primer:

$ 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
$

I ovde je potrebno osigurati da novi grupni ID bude postavljen na matični direktorijum korisnika, njegov sadržaj i sve druge datoteke ili direktorijume, kako bi se omogućila ispravna migracija njihovih prava vlasništva i dozvola.

Dodavanje i uklanjanje grupa

Pored podrazumevane grupe, korisnik u Linuxu može biti član i sekundarnih grupa. Moguće je dodavati ili uklanjati korisnike iz sekundarnih grupa pomoću komande `usermod`.

$ sudo usermod -a -G <id_grupe_ili_ime_grupe> <korisničko_ime>

Primer:

$ 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)
$

Slično tome, za uklanjanje korisnika iz sekundarne grupe, koristi se `gpasswd` komanda:

$ sudo gpasswd -d <korisničko_ime> <ime_grupe>

Primer:

$ 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 komentar

GECOS polje u `/etc/passwd` fajlu sadrži informacije o korisniku ili komentar. Te informacije se mogu izmeniti:

$ sudo usermod -c <komentar> <korisničko_ime>

Primer:

$ 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
$

Ako komentar ili podaci o korisniku sadrže razmake, potrebno je staviti ih pod navodnike.

Korisničko ime

Korisničko ime za prijavu se takođe može promeniti pomoću komande `usermod` i `-l` zastavice:

$ sudo usermod -l <novo_korisničko_ime> <staro_korisničko_ime>

Primer:

$ 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)
$

Ne zaboravite da ažurirate korisničke podatke u svim relevantnim aplikacijama i konfiguracijama. Čak i u komandama kao što je `id`, potrebno je navesti novo korisničko ime.

Uklanjanje korisnika

Korisnik se može ukloniti iz Linux sistema pomoću komande `userdel`.

$ sudo userdel <korisničko_ime>

Primer:

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$ sudo userdel janedoe
$ id janedoe
id: ‘janedoe’: no such user
$

Da biste uklonili korisnika zajedno sa njegovim matičnim direktorijumom i poštom, dodajte i `-r` zastavicu.

$ sudo userdel -r <korisničko_ime>

U sistemima zasnovanim na Ubuntuu, takođe se može koristiti `deluser` komanda:

$ sudo deluser <korisničko_ime>

Za uklanjanje matičnog direktorijuma i poštanskog sandučića, koristi se:

$ sudo deluser --remove-home <korisničko_ime>

Za detaljnije informacije i ostale opcije, pogledajte priručnike za različite komande koristeći:

$ man adduser
$ man useradd
$ man usermod
$ man deluser
$ man userdel

Zaključak

U ovom tekstu su prikazani različiti aspekti upravljanja korisnicima u Linux sistemu, uključujući objašnjenje različitih kategorija korisnika i načina njihovog dodavanja i uklanjanja. Objašnjene su i opcije za modifikovanje parametara postojećih korisnika. Iako nisu pokrivene sve mogućnosti, naglasak je na najčešćim administrativnim zadacima sa kojima se sistemski administratori susreću u svakodnevnom radu.

Možda će vas zanimati i: Kako ukloniti datoteke i direktorijume u Linuxu?