5.3 Lekcija 1
Sertifikat: |
Linux Essentials |
---|---|
Verzija: |
1.6 |
Tema: |
5 Sigurnost i dozvole nad podacima |
Cilj: |
5.3 Upravljanje dozvolama za datoteke i vlasništvom |
Lekcija: |
1 od 1 |
Uvod
Budući da je sistem za više korisnika, Linuxu je potreban neki način da prati ko je vlasnik svake datoteke i da li je korisniku dopušteno da izvršava radnje na toj datoteci. Ovo je da bi se osigurala privatnost korisnika koji bi možda željeli zadržati povjerljivost sadržaja svojih datoteka, kao i da bi se osigurala saradnja tako što će određene datoteke učiniti dostupnima više korisnika.
Ovo se radi kroz sistem dozvola na tri nivoa: svaki fajl na disku je u vlasništvu korisnika i korisničke grupe i ima tri skupa dozvola: jednu za svog vlasnika, jednu za grupu koja je vlasnik datoteke i jednu za sve ostale. U ovoj lekciji ćete naučiti kako tražiti dozvole za datoteku i kako njima manipulirati.
Upit za informacije o datotekama i direktorijima
Komanda ls
se koristi za prikaz sadržaja bilo kojeg direktorija. U ovom osnovnom obliku, sve što dobijete su nazivi datoteka:
$ ls Another_Directory picture.jpg text.txt
Ali postoji mnogo više informacija koje su dostupne za svaku datoteku, uključujući tip, veličinu, vlasništvo i još mnogo toga. Da biste vidjeli ove informacije, morate zatražiti od ls
listing “duže forme”, koristeći parametar -l
:
$ ls -l total 536 drwxrwxr-x 2 carol carol 4096 Dec 10 15:57 Another_Directory -rw------- 1 carol carol 539663 Dec 10 10:43 picture.jpg -rw-rw-r-- 1 carol carol 1881 Dec 10 15:57 text.txt
Svaka kolona gore iznad na izlazu ima značenje:
-
prva kolona na listi prikazuje tip datoteke i dozvole.
Na primjer, na
drwxrwxr-x
:-
Prvi znak,
d
, označava tip datoteke. -
Sljedeća tri znaka,
rwx
, označavaju dozvole za vlasnika datoteke, koji se također naziva user iliu
. -
Sljedeća tri znaka,
rwx
, označavaju dozvole grupe koja posjeduje datoteku, koja se također nazivag
. -
Posljednja tri znaka,
r-x
, označavaju dozvole za bilo koga drugog, također poznate kao others ilio
.
-
-
Druga kolona označava broj tvrdih veza (eng. hard links) koje upućuju na tu datoteku. Za direktorij, ovo znači broj poddirektorija, plus vezu na sebe (
.
) i roditeljski direktorij (..
). -
Treća i četvrta kolona prikazuju informacije o vlasništvu: odnosno korisnika i grupe koji posjeduju datoteku.
-
Peta prikazuje veličinu datoteka u bajtovima.
-
Šesta kolona prikazuje tačan datum i vrijeme, ili timestamp, kada je datoteka posljednji put modificirana.
-
Sedma i posljednja kolona prikazuju naziv datoteke.
Ako želite vidjeti veličine datoteka u “ljudski čitljivom” formatu, dodajte parametar -h
u ls
. Datoteke manje od jednog kilobajta imat će veličinu prikazanu u bajtovima. Datoteke s više od jednog kilobajta i manje od jednog megabajta imat će K
dodano nakon veličine, što ukazuje da je veličina u kilobajtima. Isto slijedi za veličine datoteka u rasponima megabajta (M
) i gigabajta (G
):
$ ls -lh total 1,2G drwxrwxr-x 2 carol carol 4,0K Dec 10 17:59 Another_Directory ----r--r-- 1 carol carol 0 Dec 11 10:55 foo.bar -rw-rw-r-- 1 carol carol 1,2G Dec 20 18:22 HugeFile.zip -rw------- 1 carol carol 528K Dec 10 10:43 picture.jpg ---xr-xr-x 1 carol carol 33 Dec 11 10:36 test.sh -rwxr--r-- 1 carol carol 1,9K Dec 20 18:13 text.txt -rw-rw-r-- 1 carol carol 2,6M Dec 11 22:14 Zipped.zip
Da biste prikazali samo informacije o određenom skupu datoteka, dodajte nazive ovih datoteka ls
:
$ ls -lh HugeFile.zip test.sh total 1,2G -rw-rw-r-- 1 carol carol 1,2G Dec 20 18:22 HugeFile.zip ---xr-xr-x 1 carol carol 33 Dec 11 10:36 test.sh
Šta je sa direktorijima?
Ako pokušate zatražiti informacije o direktoriju koristeći ls -l
, umjesto toga će vam pokazati popis sadržaja direktorija:
$ ls -l Another_Directory/ total 0 -rw-r--r-- 1 carol carol 0 Dec 10 17:59 another_file.txt
Da biste to izbjegli i zatražili informacije o samom direktoriju, dodajte parametar -d
u ls
:
$ ls -l -d Another_Directory/ drwxrwxr-x 2 carol carol 4096 Dec 10 17:59 Another_Directory/
Prikaz skrivenih datoteka
Spisak direktorija koji smo prikazali koristeći ls -l
prije je nepotpun:
$ ls -l total 544 drwxrwxr-x 2 carol carol 4096 Dec 10 17:59 Another_Directory -rw------- 1 carol carol 539663 Dec 10 10:43 picture.jpg -rw-rw-r-- 1 carol carol 1881 Dec 10 15:57 text.txt
U tom direktoriju postoje još tri datoteke, ali su skrivene. Na Linuxu, datoteke čije ime počinje tačkom (.
) su automatski skrivene. Da bismo ih vidjeli, moramo dodati parametar -a
u ls
:
$ ls -l -a total 544 drwxrwxr-x 3 carol carol 4096 Dec 10 16:01 . drwxrwxr-x 4 carol carol 4096 Dec 10 15:56 .. drwxrwxr-x 2 carol carol 4096 Dec 10 17:59 Another_Directory -rw------- 1 carol carol 539663 Dec 10 10:43 picture.jpg -rw-rw-r-- 1 carol carol 1881 Dec 10 15:57 text.txt -rw-r--r-- 1 carol carol 0 Dec 10 16:01 .thisIsHidden
Datoteka .thisIsHidden
je jednostavno skrivena jer njeno ime počinje sa .
.
Međutim, direktoriji .
i ..
su posebni. .
je pokazivač na trenutni direktorij, dok je ..
pokazivač na nadređeni direktorij (direktorij koji sadrži trenutni direktorij). U Linuxu, svaki direktorij sadrži barem ova dva posebna direktorija.
Tip
|
Možete kombinirati više parametara za |
Razumijevanje tipova datoteka
Već smo spomenuli da prvo slovo u svakom izlazu ls -l
opisuje tip datoteke. Tri najčešće vrste datoteka su:
-
(normalna datoteka)-
Datoteka može sadržavati podatke bilo koje vrste. Datoteke (fajlovi) se mogu mijenjati, premještati, kopirati i brisati.
d
(direktorij)-
Direktorij sadrži druge datoteke ili direktorije i pomaže u organizaciji sistema datoteka. Tehnički, direktoriji su posebna vrsta datoteke.
l
(soft link)-
Ovaj “file” je pokazivač na drugu datoteku (fajl) ili direktorij unutar sistema datoteka.
Pored ovih, postoje tri druge vrste datoteka za koje biste barem trebali znati, ali su izvan okvira ove lekcije:
b
(blok uređaj)-
Ova datoteka označava virtuelni ili fizički uređaj, obično diskove ili druge vrste uređaja za pohranu. Na primjer, prvi tvrdi disk u sistemu može biti predstavljen sa
/dev/sda
. c
(znakovni uređaj)-
Ova datoteka označava virtuelni ili fizički uređaj. Terminali (poput glavnog terminala na
/dev/ttyS0
) i serijski portovi su uobičajeni primjeri znakovnih uređaja. s
(soket)-
Soketi služe kao "provodnici" koji prenose informacije između dva programa.
Warning
|
Nemojte mijenjati nijednu dozvolu na blok uređajima, znakovnim uređajima ili soketima, osim ako znate što radite. Ovo može spriječiti vaš sistem u radu! |
Razumijevanje dozvola
U izlazu ls -l
dozvole su prikazane odmah nakon tipa datoteke, kao tri grupe od po tri znaka, redom r
, w
i x
. Evo šta oni znače. Imajte na umu da crtica -
predstavlja nedostatak određene dozvole.
Dozvole nad datotekama
r
-
Označava read i ima oktalnu vrijednost
4
(ne brinite, uskoro ćemo razgovarati o oktalima). To znači dozvolu za otvaranje datoteke i čitanje njenog sadržaja. w
-
Označava write i ima oktalnu vrijednost
2
. To znači dozvolu za uređivanje ili brisanje datoteke. x
-
Označava execute i ima oktalnu vrijednost
1
. To znači da se datoteka može pokrenuti kao izvršna datoteka ili skripta.
Tako se, na primjer, datoteka s dozvolama rw-
može čitati i upisivati, ali se ne može izvršiti.
Dozvole nad direktorijima
r
-
Označava read i ima oktalnu vrijednost
4
. To znači dozvolu za čitanje sadržaja direktorija, kao što su nazivi datoteka. Ali to ne implicira dozvolu za čitanje samih fajlova. w
-
Označava write i ima oktalnu vrijednost
2
. To znači dozvolu za kreiranje ili brisanje datoteka u direktoriju ili promjenu njihovih imena, dozvola i vlasnika. Ako korisnik ima dozvolu za pisanje u direktorij, korisnik može promijeniti dozvole bilo koje datoteke u direktoriju, čak i ako korisnik nema dozvole za datoteku ili ako je datoteka u vlasništvu drugog korisnika. x
-
Označava execute i ima oktalnu vrijednost
1
. To znači dozvolu za ulazak u direktorij, ali ne i za izlistavanje njegovih datoteka (za to je potrebna dozvolar
).
Posljednji dio o direktorijima može zvučati pomalo zbunjujuće. Zamislimo, na primjer, da imate direktorij pod nazivom Another_Directory
, sa sljedećim dozvolama:
$ ls -ld Another_Directory/ d--xr-xr-x 2 carol carol 4,0K Dec 20 18:46 Another_Directory
Također zamislite da unutar ovog direktorija imate šel (eng. shell) skriptu pod nazivom hello.sh
sa sljedećim dozvolama:
-rwxr-xr-x 1 carol carol 33 Dec 20 18:46 hello.sh
Ako ste korisnik carol
i pokušate prikazati sadržaj direktorija Another_Directory
, dobit ćete poruku o grešci, jer vaš korisnik nema dozvolu čitanja za taj direktorij:
$ ls -l Another_Directory/ ls: cannot open directory 'Another_Directory/': Permission denied
Međutim, korisnik carol
ima dozvole za izvršavanje, što znači da može ući u direktorij. Stoga, korisnik carol
može pristupiti datotekama unutar direktorija, sve dok ima ispravne dozvole za dotični fajl. U ovom primjeru, korisnik ima pune dozvole za skriptu hello.sh
, tako da može pokrenuti skriptu, čak i ako ne može pročitati sadržaj direktorija koji ga sadrži. Sve što je potrebno je kompletno ime datoteke.
$ sh Another_Directory/hello.sh Hello LPI World!
Kao što smo ranije rekli, dozvole se određuju u nizu: prvo za vlasnika datoteke, zatim za vlasničke grupe, a zatim za druge korisnike. Kad god neko pokuša izvršiti radnju na datoteci, dozvole se provjeravaju na isti način. Prvo sistem provjerava da li trenutni korisnik posjeduje datoteku, a ako je to tačno, primjenjuje samo prvi set dozvola. U suprotnom, provjerava da li trenutni korisnik pripada grupi koja posjeduje datoteku. U tom slučaju, primjenjuje samo drugi skup dozvola. U svakom drugom slučaju, sistem će primijeniti treći set dozvola. To znači da ako je trenutni korisnik vlasnik datoteke, efikasne su samo vlasničke dozvole, čak i ako su grupne ili druge dozvole dopuštenije od dozvola vlasnika.
Izmjena dozvola nad datotekama
Komanda chmod
se koristi za izmjenu dozvola za datoteku i uzima najmanje dva parametra: prvi opisuje koje dozvole treba promijeniti, a drugi ukazuje na datoteku ili direktorij u kojem će se promjena izvršiti. Međutim, dozvole za promjenu mogu se opisati na dva različita načina, ili “modes”.
Prvi, nazvan symbolic mode nudi finu kontrolu, omogućavajući vam da dodate ili opozovete jednu dozvolu bez modifikacije drugih na setu. Drugi način rada, nazvan numerički način, lakši je za pamćenje i brži za korištenje ako želite postaviti sve vrijednosti dozvola odjednom.
Oba moda će imati jednak rezultat.Tako, na primjer, komande:
$ chmod ug+rw-x,o-rwx text.txt
i
$ chmod 660 text.txt
će proizvesti potpuno isti izlaz, datoteka sa postavljenim dozvolama:
-rw-rw---- 1 carol carol 765 Dec 20 21:25 text.txt
Sada, pogledajmo kako svaki mod radi.
Simbolički način
Kada opisujete koje dozvole promijeniti u simboličkom načinu, prvi znak(ovi) označava(ju) čije ćete dozvole mijenjati: one za korisnika (u
), za grupu (g
), za ostale (o
) i/ili za sva tri zajedno (a
).
Zatim morate reći komandi šta da radi: možete dati dozvolu (+
), opozvati dozvolu (-
) ili je postaviti na određenu vrijednost (=
).
Na kraju, specificirate na koju dozvolu želite utjecati: čitanje (r
), pisanje (w
) ili izvršavanje (x
).
Na primjer, zamislite da imamo datoteku pod nazivom text.txt
sa sljedećim postavljenim dozvolama:
$ ls -l text.txt -rw-r--r-- 1 carol carol 765 Dec 20 21:25 text.txt
Ako želite dodijeliti dozvole za pisanje članovima grupe koji posjeduju datoteku, koristili biste parametar g+w
. Lakše je ako razmislite o tome na ovaj način: “Za grupu (g
), dodijelite (+
) dozvole za pisanje (w
)”. Dakle, komanda bi bila:
$ chmod g+w text.txt
Pogledajmo rezultat sa ls
:
$ ls -l text.txt -rw-rw-r-- 1 carol carol 765 Dec 20 21:25 text.txt
Ako želite ukloniti dozvole za čitanje za vlasnika iste datoteke, razmislite o tome kao: “Za korisnika (u
) opozovi (-
), dozvole za čitanje (r
)”. Dakle, parametar je u-r
, ovako:
$ chmod u-r text.txt $ ls -l text.txt --w-rw-r-- 1 carol carol 765 Dec 20 21:25 text.txt
Šta ako želimo da postavimo dozvole tačno kao rw-
za sve? Zatim razmislite o tome kao: “Za sve (a
), postavite tačno (=
), pročitajte (r
), napišite (w
) i ne izvršite (-
)”. Dakle:
$ chmod a=rw- text.txt $ ls -l text.txt -rw-rw-rw- 1 carol carol 765 Dec 20 21:25 text.txt
Naravno, moguće je modificirati više dozvola u isto vrijeme. U ovom slučaju, odvojite ih zarezom (,
):
$ chmod u+rwx,g-x text.txt $ ls -lh text.txt -rwxrw-rw- 1 carol carol 765 Dec 20 21:25 text.txt
Gornji primjer se može čitati kao: “Za korisnika (u
), dodijelite (+
) dozvole za čitanje, pisanje i izvršavanje (rwx
), za grupu (g
) opozovite (-
), dozvolu izvršavanja (x
)”.
Kada se pokrene u direktoriju, chmod
mijenja samo dozvole direktorija. chmod
ima rekurzivni način rada, koristan kada želite promijeniti dozvole za “sve datoteke unutar direktorija i njegovih poddirektorija”. Da biste ovo koristili, dodajte parametar -R
iza naziva komande i prije dozvole za promjenu, na sljedeći način:
$ chmod -R u+rwx Another_Directory/
Ova komanda se može čitati kao: "`Rekurzivno (-R
), za korisnika (u
), dodijelite (+
) dozvole za čitanje, pisanje i izvršavanje (rwx
)".
Warning
|
Budite oprezni i razmislite dvaput prije korištenja sviča |
Numerički način
U numeričkom načinu, dozvole su specificirane na drugačiji način: kao trocifrena numerička vrijednost na oktalnoj notaciji, numerički sistem sa bazom 8.
Svaka dozvola ima odgovarajuću vrijednost, a one su navedene u sljedećem redoslijedu: prvo dolazi čitanje (r
), što je 4
, zatim pisanje (w
), što je 2
i posljednje se izvršava (` x`), predstavljen sa 1
. Ako nema dozvole, koristite vrijednost nula (0
). Dakle, dozvola za rwx
bi bila 7
(4+2+1
), a r-x
bi 5
(4+0+1
).
Prva od tri znamenke u skupu dozvola predstavlja dozvole za korisnika (u
), druga za grupu (g
), a treća za ostale (o
). Ako želimo da postavimo dozvole za datoteku na rw-rw----
, oktalna vrijednost bi bila 660
:
$ chmod 660 text.txt $ ls -l text.txt -rw-rw---- 1 carol carol 765 Dec 20 21:25 text.txt
Osim toga, sintaksa u numeričkom načinu je ista kao u simboličkom načinu, prvi parametar predstavlja dozvole koje želite da promjenite, a drugi ukazuje na datoteku ili direktorij gde će se promjena izvršiti.
Tip
|
Ako je vrijednost dozvole odd, datoteka je sigurno izvršna! |
Koju sintaksu koristiti? numerički način se preporučuje ako želite promijeniti dozvole na određenu vrijednost, na primjer 640
(rw- r-- ---
).
Simbolički način je korisniji ako želite da okrenete samo određenu vrijednost, bez obzira na trenutne dozvole za datoteku. Na primjer, mogu dodati dozvole za izvršavanje za korisnika koristeći samo chmod u+x script.sh
bez obzira na, ili čak dodirujući, trenutne dozvole za grupu i druge.
Promjena vlasnika datoteka
Komanda chown
se koristi za promjenu vlasništva datoteke ili direktorija. Sintaksa je prilično jednostavna:
chown username:groupname filename
Na primjer, pogledajmo datoteku text.txt
:
$ ls -l text.txt -rw-rw---- 1 carol carol 1881 Dec 10 15:57 text.txt
Korisnik koji posjeduje datoteku je carol
, a grupa je također carol
. Sada, modificirajmo grupu koja posjeduje datoteku u neku drugu grupu, kao što je students
:
$ chown carol:students text.txt $ ls -l text.txt -rw-rw---- 1 carol students 1881 Dec 10 15:57 text.txt
Imajte na umu da korisnik koji posjeduje datoteku ne mora pripadati grupi koja posjeduje datoteku. U gornjem primjeru, korisnik carol
ne mora biti član grupe students
. Međutim, ona mora biti član grupe da bi prenijela grupno vlasništvo nad datotekom na tu grupu.
Korisnik ili grupa se mogu izostaviti ako ih ne želite promijeniti. Dakle, da promijenite samo grupu koja posjeduje datoteku, koristite chown :students text.txt
. Za promjenu samo korisnika, komanda bi bila chown carol text.txt
. Alternativno, možete koristiti komandu chgrp student text.txt
da promijenite samo grupu.
Osim ako niste sistemski administrator (root), ne možete promijeniti vlasništvo nad datotekom u vlasništvu drugog korisnika ili grupe kojoj ne pripadate. Ako pokušate to učiniti, dobit ćete poruku o grešci Operacija nije dozvoljena
.
Upit grupa
Prije promjene vlasništva nad datotekom, moglo bi biti korisno znati koje grupe postoje na sistemu, koji su korisnici članovi grupe i kojim grupama korisnik pripada. Ti zadaci se mogu izvršiti s dvije komande, groups
i groupmems
.
Da vidite koje grupe postoje na vašem sistemu, jednostavno upišite groups
:
$ groups carol students cdrom sudo dip plugdev lpadmin sambashare
A ako želite znati kojoj grupi korisnik pripada, dodajte korisničko ime kao parametar:
$ groups carol carol : carol students cdrom sudo dip plugdev lpadmin sambashare
Da biste učinili obrnuto, prikazujući koji korisnici pripadaju grupi, koristite groupmems
. Parametar -g
specificira grupu, a -l
će navesti sve njene članove:
$ sudo groupmems -g cdrom -l carol
Tip
|
|
Specijalne dozvole
Osim dozvola za čitanje, pisanje i izvršavanje za korisnika, grupu i druge (ostale), svaka datoteka može imati tri druge specijalne dozvole koje mogu promijeniti način na koji direktorij radi ili kako se program izvodi. Mogu se specificirati u simboličkom ili numeričkom načinu, a glase kako slijedi:
Ljepljivi bit
Lepljivi bit (eng. sticky bit), koji se takođe naziva zastavica za ograničeno brisanje, ima oktalnu vrednost 1
i u simboličkom načinu je predstavljen sa t
u okviru dozvole drugog. Ovo se odnosi samo na direktorije, a na Linuxu sprječava korisnike da uklone ili preimenuju datoteku u direktoriju osim ako oni ne posjeduju tu datoteku ili direktorij.
Direktoriji sa postavljenim ljepljivim bitom prikazuju t
koji zamjenjuje x
na dozvolama za ostale na izlazu ls -l
:
$ ls -ld Sample_Directory/ drwxr-xr-t 2 carol carol 4096 Dec 20 18:46 Sample_Directory/
U numeričkom načinu rada, posebne dozvole su specificirane korištenjem “4-cifrene notacije”, pri čemu prva znamenka predstavlja specijalnu dozvolu za djelovanje. Na primjer, da postavite ljepljivi bit (vrijednost 1
) za direktorij ` u numeričkom načinu, s dozvolama 755
, komanda bi bila:
$ chmod 1755 Another_Directory $ ls -ld Another_Directory drwxr-xr-t 2 carol carol 4,0K Dec 20 18:46 Another_Directory
Postavi GID
Postavi GID, također poznat kao SGID ili Set Group ID bit, ima oktalnu vrijednost 2
i u simboličkom načinu je predstavljen s
na dozvolama grupa. Ovo se može primijeniti na izvršne datoteke ili direktorije. Na izvršnim datotekama, dodijelit će procesu koji je rezultat izvršavanja datoteke pristup privilegijama grupe koja posjeduje datoteku. Kada se primjeni na direktorije, učiniće da svaka datoteka ili direktorij kreiran pod njim naslijedi grupu iz roditeljskog direktorija.
Datoteke i direktoriji sa SGID bitom pokazuju s
koji zamjenjuje x
na dozvolama za grupe na izlazu ls -l
:
$ ls -l test.sh -rwxr-sr-x 1 carol carol 33 Dec 11 10:36 test.sh
Da biste dodali SGID dozvole datoteci u simboličkom načinu rada, komanda bi bila:
$ chmod g+s test.sh $ ls -l test.sh -rwxr-sr-x 1 carol root 33 Dec 11 10:36 test.sh
Sljedeći primjer će vam pomoći da bolje razumijete efekte SGID-a na direktorij. Pretpostavimo da imamo direktorij pod nazivom Sample_Directory
, u vlasništvu korisnika carol
i grupe users
, sa sljedećom strukturom dozvola:
$ ls -ldh Sample_Directory/ drwxr-xr-x 2 carol users 4,0K Jan 18 17:06 Sample_Directory/
Sada se prebacimo u ovaj direktorij i, koristeći komandu touch
, kreiramo praznu datoteku unutar njega. Rezultat bi bio:
$ cd Sample_Directory/ $ touch newfile $ ls -lh newfile -rw-r--r-- 1 carol carol 0 Jan 18 17:11 newfile
Kao što vidimo, fajl je u vlasništvu korisnika carol
i grupe carol
. Ali, ako bi direktorij imao postavljenu SGID dozvolu, rezultat bi bio drugačiji. Prvo, dodajmo SGID bit u Sample_Directory
i provjerimo rezultate:
$ sudo chmod g+s Sample_Directory/ $ ls -ldh Sample_Directory/ drwxr-sr-x 2 carol users 4,0K Jan 18 17:17 Sample_Directory/
s
na grupnim dozvolama označava da je SGID bit postavljen. Sada se prebacimo na ovaj direktorij i opet kreirajmo praznu datoteku komandom touch
:
$ cd Sample_Directory/ $ touch emptyfile $ ls -lh emptyfile -rw-r--r-- 1 carol users 0 Jan 18 17:20 emptyfile
Kao što vidimo, grupa koja posjeduje datoteku je users
. To je zato što je SGID bit učinio da datoteka naslijedi vlasnika grupe svog roditeljskog direktorija, a to je users
.
Postavi UID
SUID, također poznat kao Set User ID, ima oktalnu vrijednost 4
i predstavljen je s
na user dozvolama u simboličkom načinu. Primjenjuje se samo na datoteke i njegovo ponašanje je slično SGID bitu, ali proces će se pokrenuti s privilegijama user koji posjeduje datoteku. Datoteke sa SUID bitom prikazuju s
koji zamjenjuje x
na dozvolama za korisnika na izlazu ls -l
:
$ ls -ld test.sh -rwsr-xr-x 1 carol carol 33 Dec 11 10:36 test.sh
Možete kombinirati više posebnih dozvola u jednom parametru tako što ćete ih dodati zajedno. Dakle, da postavite SGID (vrijednost 2
) i SUID (vrijednost 4
) u numeričkom načinu za skriptu test.sh
sa dozvolama 755
, ukucali biste:
$ chmod 6755 test.sh
Rezultat je sljedeći:
$ ls -lh test.sh -rwsr-sr-x 1 carol carol 66 Jan 18 17:29 test.sh
Tip
|
Ako vaš terminal podržava boju, a ovih dana većina njih podržava, možete brzo vidjeti da li su ove posebne dozvole postavljene tako što ćete pogledati izlaz |
Vođene vježbe
-
Kreirajte direktorij pod nazivom
emptydir
koristeći komandumkdir emptydir
. Sada, koristećils
, navedite dozvole za direktorijemptydir
. -
Kreirajte praznu datoteku pod nazivom
emptyfile
sa komandomtouch emptyfile
. Sada, koristećichmod
sa simboličkom notacijom, dodajte dozvole za izvršavanje za vlasnika datotekeemptyfile
i uklonite dozvole za pisanje i izvršavanje za sve ostale. Uradite ovo koristeći samo jednu komanduchmod
.
-
Koje će biti dozvole za datoteku pod nazivom
text.txt
nakon što koristite komanduchmod 754 text.txt
? -
Pretpostavimo da je datoteka pod nazivom
test.sh
shell skripta sa sljedećim dozvolama i vlasništvom:-rwxr-sr-x 1 carol root 33 Dec 11 10:36 test.sh
-
Koje su dozvole za vlasnika datoeke?
*Ako korisnik
john
pokrene ovu skriptu, pod kojim će se privilegijama korisnika ona pokrenuti? -
Koristeći numeričku notaciju, koja bi trebala biti sintaksa chmod za “poništavanje” posebne dozvole dodijeljene ovoj datoteci?
-
-
Razmotrite sljedeću datoteku:
$ ls -l /dev/sdb1 brw-rw---- 1 root disk 8, 17 Dec 21 18:51 /dev/sdb1
Koje vrste je datoteka
sdb1
? I ko može pisati u nju? -
Razmotrite sljedeće 4 datoteke:
drwxr-xr-t 2 carol carol 4,0K Dec 20 18:46 Another_Directory ----r--r-- 1 carol carol 0 Dec 11 10:55 foo.bar -rw-rw-r-- 1 carol carol 1,2G Dec 20 18:22 HugeFile.zip drwxr-sr-x 2 carol users 4,0K Jan 18 17:26 Sample_Directory
Zapišite odgovarajuće dozvole za svaku datoteku i direktorij koristeći numeričku 4-cifrenu notaciju.
Another_Directory
-
foo.bar
-
HugeFile.zip
-
Sample_Directory
-
Istraživačke vježbe
-
Pokušajte ovo na terminalu: kreirajte praznu datoteku pod nazivom
emptyfile
sa komandomtouch emptyfile
. Sada “zero out” dozvole za datoteku sachmod 000 emptyfile
. Šta će se dogoditi ako promijenite dozvole zaemptyfile
tako što ćete proslijediti samo one vrijednost zachmod
u numeričkom načinu, kao što jechmod 4 emptyfile
? Šta ako koristimo dva, kao što jechmod 44 emptyfile
? Šta možemo naučiti o načinu na kojichmod
čita numeričku vrijednost? -
Možete li izvršiti datoteku za koju imate dopuštenje za izvršavanje, ali ne i za čitanje (
--x
)? Zašto ili zašto ne? -
Razmotrite dozvole za privremeni direktorij na Linux sistemu,
/tmp
:$ ls -l /tmp drwxrwxrwt 19 root root 16K Dec 21 18:58 tmp
Korisnik, grupa i ostali imaju pune dozvole. Ali može li običan korisnik izbrisati bilo koje datoteke unutar ovog direktorija? Zašto je ovo?
-
Datoteka pod nazivom
test.sh
ima sljedeće dozvole:-rwsr-xr-x
, što znači da je SUID bit postavljen. Sada pokrenite sljedeće komande:$ chmod u-x test.sh $ ls -l test.sh -rwSr-xr-x 1 carol carol 33 Dec 11 10:36 test.sh
Šta smo uradili? Šta znači veliko slovo
S
? -
Kako biste kreirali direktorij pod nazivom
Box
gdje su sve datoteke automatski u vlasništvu grupeusers
, a može ih izbrisati samo korisnik koji ih je kreirao?
Sažetak
Kao sistem za više korisnika, Linuxu je potreban način da prati ko je vlasnik i ko može pristupiti svakoj datoteci. Ovo se radi kroz sistem dozvola na tri nivoa, a u ovoj lekciji smo naučili sve o tome kako ovaj sistem funkcioniše.
U ovoj lekciji naučili ste kako koristiti ls
za dobivanje informacija o dozvolama za datoteke, kako kontrolirati ili promijeniti ko može kreirati, brisati ili modificirati datoteku pomoću chmod
, i u numeričkom i simboličkom zapisu i kako promijeniti vlasništvo nad datotekama sa chown
i chgrp
.
Sljedeće komande su raspravljane u ovoj lekciji:
ls
-
Prikaži datoteke, opciono uključujući detalje kao što su dozvole.
chmod
-
Promijeni dozvole nad podacima ili direktorijima.
chown
-
Promijeni korisnika ili grupu datoteke ili direktorija.
chgrp
-
Promijeni vlasničku grupu datoteke ili direktorija.
Odgovori na vođene vježbbe
-
Kreirajte direktorij pod nazivom
emptydir
koristeći komandumkdir emptydir
. Sada, koristećils
, navedite dozvole za direktorijemptydir
.Dodajte parametar
-d
uls
da vidite atribute datoteke direktorija, umjesto da navodite njegov sadržaj. Stoga je odgovor:ls -l -d emptydir
Bonus bodovi ako ste spojili dva parametra u jedan, kao u
ls -ld emptydir
. -
Kreirajte praznu datoteku pod nazivom
emptyfile
sa komandomtouch emptyfile
. Sada, koristećichmod
sa simboličkom notacijom, dodajte dozvole za izvršavanje za vlasnika datotekeemptyfile
i uklonite dozvole za pisanje i izvršavanje za sve ostale. Uradite ovo koristeći samo jednu komanduchmod
.Razmislite o ovome na sljedeći način:
*“Za korisnika koji posjeduje fajl (
u
) dodajte (+
) izvršni (x
) dozvole”, pau+x
. * “Za grupu (g
) i druge korisnike (o
), uklonite (-
), upišite (w
) i izvršite (x
) dozvole”, pago-wx
.+ Da bismo kombinovali ova dva skupa dozvola, između njih dodajemo zarez. Dakle, konačni rezultat je:
+
chmod u+x,go-wx emptyfile
-
Koje će biti dozvole za datoteku pod nazivom
text.txt
nakon što koristite komanduchmod 754 text.txt
?Zapamtite da u numeričkom zapisu svaka cifra predstavlja skup od tri dozvole, od kojih svaka ima odgovarajuću vrijednost: read je
4
, write je2
, execute je1
i nijedna dozvola je0
. Dobijamo vrijednost za cifru dodavanjem odgovarajućih vrijednosti za svaku dozvolu.7
je4+2+1
, ilirwx
,5
je4+0+1
, tako da ser-x
i4
samo čitaju, ilir--
. Dozvole zatext.txt
bi bilerwxr-xr--
-
Pretpostavimo da je datoteka pod nazivom
test.sh
shell skripta sa sljedećim dozvolama i vlasništvom:-rwxr-sr-x 1 carol root 33 Dec 11 10:36 test.sh
-
Koje su dozvole za vlasnika datoeke?
Dozvole za vlasnika (od 2. do 4. karaktera u izlazu
ls -l
) surwx
, tako da je odgovor: “da čita, piše i izvršava datoteku”. -
Ako korisnik
john
pokrene ovu skriptu, pod kojim će se privilegijama korisnika ona pokrenuti?Obratite pažnju na dozvole za grupu. Oni su
r-s
, što znači da je SGID bit postavljen. Grupa koja posjeduje ovu datoteku jeroot
, tako da će skripta, čak i kada je pokrenuta od strane običnog korisnika, biti pokrenuta s root privilegijama. -
Koristeći numeričku notaciju, koja bi trebala biti sintaksa chmod za “poništavanje” posebne dozvole dodijeljene ovoj datoteci?
Možemo "poništiti" specijalne dozvole tako što ćemo
chmod
proslijediti četvrtu znamenku,0
. Trenutne dozvole su755
, tako da bi komanda trebala bitichmod 0755
.
-
-
Razmotrite sljedeću datoteku:
$ ls -l /dev/sdb1 brw-rw---- 1 root disk 8, 17 Dec 21 18:51 /dev/sdb1
Koje vrste je datoteka
sdb1
? I ko može pisati u nju?Prvi znak izlaza iz
ls -l
pokazuje vrstu datoteke.b
je blok uređaj, obično disk (interni ili eksterni), povezan sa mašinom. Vlasnik (root
) i svi korisnici grupedisk
mogu pisati na njega. -
Razmotrite sljedeće 4 datoteke:
drwxr-xr-t 2 carol carol 4,0K Dec 20 18:46 Another_Directory ----r--r-- 1 carol carol 0 Dec 11 10:55 foo.bar -rw-rw-r-- 1 carol carol 1,2G Dec 20 18:22 HugeFile.zip drwxr-sr-x 2 carol users 4,0K Jan 18 17:26 Sample_Directory
Zapišite odgovarajuće dozvole za svaku datoteku i direktorij koristeći numeričku 4-cifrenu notaciju.
Odgovarajuće dozvole, u numeričkom zapisu, su sljedeće:
Another_Directory
-
Odgovor:
1755
1
za ljepljivi bit,755
za redovne dozvole (rwx
za korisnika,r-x
za grupu i ostale). foo.bar
-
Odgovor:
0044
Nema posebnih dozvola (tako da je prva cifra
0
), nema dozvola za korisnika (---
) i samo čitanje (r—r--
) za grupu i druge. HugeFile.zip
-
Odgovor:
0664
Nema posebnih dozvola, tako da je prva cifra
0
.6
(rw-
) za korisnika i grupu,4
(r--
) za ostale. Sample_Directory
-
Odgovor:
2755
2
for the SGID bit,7
(rwx
) za korisnika,5
(r-x
) za grupu i ostale.
Odgovori na istraživačke vježbe
-
Pokušajte ovo na terminalu: kreirajte praznu datoteku pod nazivom
emptyfile
sa komandomtouch emptyfile
. Sada “zero out” dozvole za datoteku sachmod 000 emptyfile
. Šta će se dogoditi ako promijenite dozvole zaemptyfile
tako što ćete proslijediti samo one vrijednost zachmod
u numeričkom načinu, kao što jechmod 4 emptyfile
? Šta ako koristimo dva, kao što jechmod 44 emptyfile
? Šta možemo naučiti o načinu na kojichmod
čita numeričku vrijednost?Remember that we “zeroed out” the permissions for
emptyfile
. So, its initial state would be:---------- 1 carol carol 0 Dec 11 10:55 emptyfile
Now, let’s try the first command,
chmod 4 emptyfile
:$ chmod 4 emptyfile $ ls -l emptyfile -------r-- 1 carol carol 0 Dec 11 10:55 emptyfile
The permissions for others were changed. And what if we try two digits, such as
chmod 44 emptyfile
?$ chmod 44 emptyfile $ ls -l emptyfile ----r--r-- 1 carol carol 0 Dec 11 10:55 emptyfile
Now, the permissions for group and others were affected. From this, we can conclude that in numeric notation
chmod
reads the value “backwards”, from the least significant digit (others) to the most significant one (user). If you pass one digit, you modify the permissions for others. With two digits you modify group and others, and with three you modify user, group and others and with four digits you modify user, group, others and the special permissions. -
Can you execute a file for which you have execute, but not read permissions (
--x
)? Why or why not?At first, the answer seems obvious: If you have execute permission, the file should run. This applies to programs in binary format that are executed directly by the kernel. However, there are programs (e.g. shell scripts) that must first be read and interpreted, so in these cases the read permission (
r
) must also be set. -
Consider the permissions for the temporary directory on a Linux system,
/tmp
:$ ls -l /tmp drwxrwxrwt 19 root root 16K Dec 21 18:58 tmp
User, group and others have full permissions. But can a regular user delete any files inside this directory? Why is this?
/tmp
is what we call a world writeable directory, meaning that any user can write to it. But we don’t want one user modifying files created by others, so the sticky bit_ is set (as indicated by thet
on the permissions for others). This means that a user can delete files in/tmp
, but only if they created that file. -
Datoteka pod nazivom
test.sh
ima sljedeće dozvole:-rwsr-xr-x
, što znači da je SUID bit postavljen. Sada pokrenite sljedeće komande:$ chmod u-x test.sh $ ls -l test.sh -rwSr-xr-x 1 carol carol 33 Dec 11 10:36 test.sh
Šta smo uradili? Šta znači veliko slovo
S
?Uklonili smo dozvole za izvršavanje za korisnika koji posjeduje datoteku.
s
(ilit
) zauzima mjestox
na izlazuls -l
, tako da je sistemu potreban način da pokaže da li korisnik ima dozvole za izvršavanje ili ne. To radi promjenom velikih i malih slova posebnog znaka.Malo slovo
s
na prvoj grupi dozvola znači da korisnik koji posjeduje datoteku ima dozvole za izvršavanje i da je postavljen SUID bit. Veliko slovoS
znači da korisnik koji posjeduje datoteku nema (-
) dozvole za izvršavanje i da je SUID bit postavljen.Isto se može reći i za SGID. Malo slovo
s
na drugoj grupi dozvola znači da grupa koja posjeduje datoteku ima dozvole za izvršavanje i da je SGID bit postavljen. Veliko slovoS
znači da grupa koja posjeduje datoteku nema (-
) dozvole za izvršavanje i da je SGID bit postavljen.Ovo važi i za lepljivi bit, predstavljen sa
t
u trećoj grupi dozvola. Malo slovot
znači da je ljepljivi bit postavljen i da drugi imaju dozvole za izvršavanje. Veliko slovoT
znači da je ljepljivi bit postavljen i da drugi nemaju dozvole za izvršavanje. -
Kako biste kreirali direktorij pod nazivom
Box
gdje su sve datoteke automatski u vlasništvu grupeusers
, a može ih izbrisati samo korisnik koji ih je kreirao?Ovo je proces u više koraka. Prvi korak je kreiranje direktorija:
$ mkdir Box
Želimo da svaki fajl kreiran unutar ovog direktorijuma bude automatski dodijeljen grupi
korisnici
. To možemo učiniti postavljanjem ove grupe kao vlasnika direktorija, a zatim postavljanjem bita SGID na njoj. Također moramo osigurati da bilo koji član grupe može pisati u taj direktorij.Budući da nas ne zanima koje su druge dozvole, i želimo da “prevrnemo” samo posebne bitove, ima smisla koristiti simbolički način:
$ chown :users Box/ $ chmod g+wxs Box/
Imajte na umu da ako vaš trenutni korisnik ne pripada grupi
users
, morat ćete koristiti komandusudo
prije gornjih komandi da izvršite promjenu kao root.Sada za posljednji dio, uvjerite se da je samo korisniku koji je kreirao fajl dozvoljeno da ga izbriše. Ovo se radi postavljanjem ljepljivog bita (predstavljenog
t
) na direktorij. Zapamtite da je postavljeno na dozvole za druge (o
).$ chmod o+t Box/
Dozvole za direktorij
Box
bi se trebale pojaviti na sljedeći način:drwxrwsr-t 2 carol users 4,0K Jan 18 19:09 Box
Naravno, možete specificirati SGID i sticky bit koristeći samo jednu
chmod
komandu:$ chmod g+wxs,o+t Box/
Bonus bodovi ako ste pomislili na to.