Prijeđite na sadržaj

Postavke kolačića

Za svaku vrstu odaberite koje kolačiće dopuštate. Svoj odabir uvijek možete promijeniti putem poveznice Postavke kolačića na dnu svake stranice. Izjava o privatnosti

Nužni

Uvijek uključeni

Potrebni za prijavu, čuvanje košarice i pamćenje Vaših odabira. Uvijek su uključeni.

Koji kolačići?
  • weboke_sessie, weboke_klant, weboke_remember: Vaša sesija i to da ostanete prijavljeni
  • weboke_basket: Vaša košarica
  • wkBtwIncl: prikaz cijena s PDV-om ili bez njega
  • wok_cookies: Vaš odabir kolačića, 12 mjeseci

Mjeri koji oglas dovodi do posjeta ili narudžbe, kako ne bismo plaćali oglase koji ništa ne donose.

Koji kolačići?
  • Google Ads putem Google Tag Managera (_gcl_au, _gcl_aw), do 90 dana
  • OpenAI Ads, oglasi u ChatGPT-u
  • wok_aff: preko kojeg ste partnera došli k nama (partnerski program), 60 dana

4,6

Država i jezik

Svaka država ima vlastitu stranicu, s cijenama i PDV-om te države.

Pogledajte

Korisnici, grupe i prava pristupa datotekama

Modul 3: Korisnici, prava i sudo · Vrijeme čitanja: 12 minuta

Cilj učenja: Nakon ove lekcije moći ćete stvarati i pregledavati korisnike i grupe, čitati prava pristupa datoteke ili mape u ls -l te ih ispravno postaviti s chmod i chown, a da pritom ne otvorite sve svima.

Ključni pojmovi: root (UID 0), obični korisnik, sistemski korisnik, /etc/passwd, /etc/shadow, grupa, adduser, id, rwx, vlasnik, grupa, ostali, oktalni zapis (644, 755, 600), chmod, chown, umask, setuid, 777

Svatko je broj

Linux je od samog početka izgrađen za više korisnika na jednom računalu. Svaki proces koji se izvodi radi u ime nekog korisnika, a svaka datoteka ima vlasnika. Za sustav je korisnik prije svega broj, UID:

  • root ima UID 0. Root smije sve: čitati i mijenjati svaku datoteku, zaustaviti svaku uslugu, stvoriti svakog korisnika. Nema pitanja "jeste li sigurni".
  • Obični korisnici, poput anna, na Debianu i Ubuntuu dobivaju UID od 1000 naviše. Smiju pisati u vlastitu kućnu mapu i malo što drugo.
  • Sistemski korisnici imaju nizak broj i obično nemaju lozinku ni ljusku (shell). Usluge rade pod takvim korisnikom: nginx pod www-data, PostgreSQL pod postgres. Ako netko provali u takvu uslugu, napadač ima samo prava tog korisnika, a ne prava korisnika root.

Tko ste, vidite naredbom id:

anna@web1:~$ id
uid=1000(anna) gid=1000(anna) groups=1000(anna),27(sudo),100(users)

Anna ima UID 1000, vlastitu grupu anna i nalazi se i u grupama sudo i users.

Gdje se nalaze korisnici

Popis korisnika nalazi se u /etc/passwd, jedan redak po korisniku:

anna@web1:~$ grep -E '^(root|www-data|anna):' /etc/passwd
root:x:0:0:root:/root:/bin/bash
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
anna:x:1000:1000:Anna,,,:/home/anna:/bin/bash

Polja, odvojena dvotočkama: ime, x (lozinka je spremljena drugdje), UID, glavna grupa, opis, kućna mapa, ljuska. Kod www-data kao ljuska stoji /usr/sbin/nologin: prijava nije moguća.

Same lozinke spremljene su, šifrirane (hashirane), u /etc/shadow. Tu datoteku može čitati samo root. Znak ! ili * na početku polja lozinke znači: prijava lozinkom nije moguća. Tako je root na Ubuntuu prema zadanim postavkama zaključan, a na Debianu ako pri instalaciji niste unijeli lozinku za root.

Stvaranje korisnika i grupa

Na Debianu i Ubuntuu koristite prijateljski alat adduser:

root@web1:~# adduser anna
info: Adding user `anna' ...
info: Adding new group `anna' (1000) ...
info: Adding new user `anna' (1000) with group `anna (1000)' ...
info: Creating home directory `/home/anna' ...
info: Copying files from `/etc/skel' ...
New password:
Retype new password:
...

adduser stvara korisnika, vlastitu grupu istog imena i kućnu mapu te traži lozinku. Postoji i alat niže razine useradd (na AlmaLinuxu i Rocky Linuxu to je uobičajena naredba), ali bez opcija čini manje: ne postavlja lozinku, a na nekim sustavima ne stvara ni kućnu mapu.

Grupa je način da prava dodijelite većem broju korisnika odjednom. Dodavanje korisnika u grupu:

root@web1:~# adduser anna www-data
root@web1:~# usermod -aG www-data anna     # isto, radi svugdje

Obratite pozornost na -a uz usermod: bez -a sve dodatne grupe korisnika zamjenjujete samo ovom jednom. Nova grupa vrijedi tek nakon ponovne prijave.

Zatvaranje računa bez brisanja (na primjer računa bivšeg kolege):

root@web1:~# usermod -L -e 1 ivan

-L zaključava lozinku, -e 1 postavlja istek računa. Pazite: zaključana lozinka ne zaustavlja uvijek SSH ključ. Zato uklonite i ključeve u /home/ivan/.ssh/authorized_keys (lekcija 2.3); račun kojemu je istekla valjanost (-e 1) sshd ipak odbija.

Čitanje prava pristupa

anna@web1:~$ ls -l /var/www/example.com
total 12
-rw-r--r-- 1 anna     www-data  1520 Nov  9 10:12 index.html
-rw-r----- 1 anna     www-data   412 Nov  9 10:14 config.php
drwxr-xr-x 2 anna     www-data  4096 Nov  9 10:15 images
drwxrwxr-x 2 www-data www-data  4096 Nov  9 10:20 uploads

Prvi blok od deset znakova ključ je svega:

  • Znak 1: vrsta. - je obična datoteka, d mapa (direktorij), l prečac (simbolička poveznica, symlink).
  • Znakovi 2 do 4: što smije vlasnik.
  • Znakovi 5 do 7: što smije grupa.
  • Znakovi 8 do 10: što smiju ostali (svi drugi).

Zatim slijede broj poveznica, vlasnik, grupa, veličina i datum.

Kod datoteke slova znače:

SlovoZnačenje kod datoteke
rčitanje
wmijenjanje
xpokretanje kao programa ili skripte

A kod mape nešto drugačije:

SlovoZnačenje kod mape
rdohvaćanje imena datoteka u mapi
wstvaranje, preimenovanje i brisanje datoteka u mapi
xulazak u mapu i otvaranje datoteka u njoj

Ovo posljednje iznenadi mnoge. Bez x na mapi ne možete doći do datoteka u njoj, čak i ako su same datoteke čitljive. A tko ima w na mapi, može u njoj brisati datoteke, čak i ako pripadaju nekom drugom.

U primjeru: index.html smiju čitati svi; config.php (s lozinkom baze podataka) Anna smije čitati i mijenjati, grupa www-data (dakle web-poslužitelj) samo čitati, a ostali ništa. U uploads web-poslužitelj smije pisati jer se ondje spremaju datoteke koje posjetitelji učitavaju.

Prava kao broj

Prava se često zapisuju kao tri znamenke, oktalni broj. Svako slovo ima vrijednost: r = 4, w = 2, x = 1. Zbrojite ih za svaku skupinu:

PravaBrojUpotreba
rw-r--r--644obična datoteka koju svi smiju čitati
rw-r-----640datoteka za vlasnika i grupu, poput konfiguracije s lozinkom
rw-------600tajna datoteka, poput authorized_keys ili privatnog ključa
rwxr-xr-x755mapa ili program koji svi smiju koristiti
rwx------700privatna mapa, poput ~/.ssh

Mijenjanje prava: chmod i chown

anna@web1:~$ chmod 640 /var/www/example.com/config.php
anna@web1:~$ chmod g+w /var/www/example.com/uploads
root@web1:~# chown anna:www-data /var/www/example.com/config.php

chmod mijenja prava, brojem ili slovima (u, g, o za vlasnika, grupu i ostale; + ili - i slovo). chown eigenaar:groep mijenja vlasnika i grupu; to smije samo root. S -R obje naredbe djeluju na cijelu mapu i tu često nastaju problemi: chmod -R 644 na mapi čini sve podmape neupotrebljivima jer mape trebaju x. Za cijelo stablo radije koristite find:

root@web1:~# find /var/www/example.com -type d -exec chmod 755 {} +
root@web1:~# find /var/www/example.com -type f -exec chmod 644 {} +

Nikada 777

"Ne radi, pa sam stavio 777." 777 znači: svatko na poslužitelju smije ovo čitati, mijenjati i pokretati. Ako ikada samo jedna usluga ili jedna web-stranica na Vašem poslužitelju bude kompromitirana, napadač može pisati svugdje gdje je postavljeno 777, uključujući Vaše PHP datoteke. Pravi je problem gotovo uvijek vlasnik ili grupa: preko grupe dodijelite web-poslužitelju točno ono pravo koje mu treba, i to samo na mapi na kojoj mu treba.

Zadana prava i posebni bitovi

Nove datoteke dobivaju prava preko umask. S uobičajenom vrijednošću umask 022 nove datoteke dobivaju 644, a nove mape 755. Svoj umask vidite naredbom umask.

Ponekad umjesto x vidite s, kao kod /usr/bin/passwd (-rwsr-xr-x). To je bit setuid: program se izvodi s pravima vlasnika (root), čak i kada ga pokrene obični korisnik. To je potrebno za nekoliko sistemskih programa, ali ga nikada sami ne postavljajte na skriptu. Neočekivana setuid datoteka poznat je znak provale; s find / -perm -4000 -type f 2>/dev/null vidite sve takve datoteke.

Na AlmaLinuxu i Rocky Linuxu

adduser je ondje drugo ime za useradd; koristite useradd -m anna i zatim passwd anna. Grupe dodajete s usermod -aG. SELinux dodaje još jedan sloj uz prava iz ove lekcije: datoteka s ispravnim pravima ipak može biti odbijena ako na njoj stoji pogrešna SELinux oznaka (ls -Z je prikazuje).

Sažetak

  • Svaki korisnik ima UID; root (0) smije sve, a usluge rade pod vlastitim sistemskim korisnicima bez ljuske.
  • Korisnici su zapisani u /etc/passwd, a hashevi lozinki u /etc/shadow. Korisnike stvarate s adduser, a grupe dodajete s usermod -aG.
  • ls -l prikazuje vrstu, prava vlasnika, grupe i ostalih, a zatim vlasnika i grupu. Kod mape x znači ulazak, a w stvaranje i brisanje datoteka.
  • Uobičajeni brojevi: 644 i 755 za javno, 640 za konfiguraciju s tajnama, 600 i 700 za privatno. Nikada 777.
  • Za postavljanje prava na cijelo stablo koristite find; pazite na setuid datoteke.

Kviz

1. Što znači -rw-r----- kod datoteke s vlasnikom anna i grupom www-data?



2. Što se događa ako mapa ima prava drw-r--r-- (dakle nigdje nema x)?



3. Izvršite usermod -G www-data anna (bez -a). Koja je posljedica?



4. Dodatak (plugin) ne može pisati u /var/www/example.com/uploads. Koje je najbolje rješenje?



5. Zašto nginx radi pod korisnikom www-data, a ne pod korisnikom root?



Zadatak

Zadatak Z3.1: Čitanje prava pristupa. Otvorite primjer datoteke rechten-1.txt: ispis naredbe id za tri korisnika i naredbe ls -l u web-mapi. Za svako pitanje odgovorite tko što smije (na primjer: "može li web-poslužitelj mijenjati config.php?", "koja datoteka ima preširoka prava?", "koji broj odgovara .env?"). Program uspoređuje Vaše odgovore s fiksnim ključem i za svako pitanje objašnjava zašto.

Zadatak Z3.1: Čitanje prava pristupa

Datoteka uz ovaj zadatak: rechten-1.txt










Ono što unesete i što pronađemo ne spremamo. Vaš preglednik pamti Vaše odgovore i je li zadatak položen. Ako ste prijavljeni, u Moji tečajevi čuvamo samo podatak da ste zadatak (gotovo) uspješno riješili; ondje to možete i izbrisati.

Dodatno štivo

Koraci u ovim člancima vrijede za pakete web-hostinga i VPS-ove tvrtke WebOké; kod drugih pružatelja usluga postupak je sličan.

Trenutak…

Postavite svoje domene

Za svaku domenu odredite nameservere, povezivanje s hostingom i tko postaje vlasnik.

Učitavanje Vaših domena…