Postavljanje SUID bita nad datotekama u Linux-u


Permisije nad datotekama i direktorijumima su jako važan dio posla svakog Linux System administratora jer diktiraju tko može pristupiti datotekama ili direktorijumima vašeg sistema. Stim u vezi Linux ima nešto drugačiji način davanja ovlasti ili pristupa svojim datotekama nego što je to slučaj s Windows operativnim sistemom. Korištenjem komande chmod moguće je diktirati kojim datotekama ili direktorijumima može pristupiti vlasnik (eng: owner), grupa (eng: groups) te ostali (eng: others) ili im jednostavno oduzeti pravo pristupa. U ovom kratkom članku ja ću objasniti primjenu i način postavljanja SUID bita nad datotekama kroz primjere.

Piše: Amar Tufo
11. Februar 2018

Prije nego uopšte postavimo željene permisije nad datotekama trebamo ih znati prikazati kako bismo vidjeli kako izgledaju već postavljenje permisije nad datotekama. To izvodimo sljedećom komandom:


ls -l datoteka.txt

Kada unesete ovu komandu u Terminal, ovo je rezultat koji biste trebali dobiti na izlazu a on izgleda kao na sljedećoj slici.


Slika 1: Izlistivanje default permisija nad datoteka.txt fajlom
Izvor slike: /home/amar/Desktop/slika1


Koristio sam u opisu slike fajl kako ne bi konstantno koristio termin 'datoteka'. No, ova slika govori puno toga stoga nemojte da vas zbune misteriozne riječi koje vidite u opisu ove datoteke a to su '-rw-rw-r--'. Detaljan opis ovih karaktera prilikom izlistavanja permisija nad fajlom datoteka.txt je prikazan na sljedećoj slici.



Slika 2: Objašnjenje default permisija nad datoteka.txt fajlom
Izvor slike: /home/amar/Desktop/slika2


Šta je to SUID bit i kako ga postaviti?

Pošto sam objasnio kako izgledaju default permisije i kako ih izlistati nad datotekama (isto važi i za direktorije) sada ću da vam kažem nešto o SUID bitu i kako se on postavlja nad datotekama. Dakle SUID (Set User ID bit) omogučava drugim korisnicima pokretanje datoteke nad kojom uobičajenu dozvolu ima administrator, odnosno, root korisnik.


Primjera radi, obični korisnik koji nije root može upravo koristeći SUID bit promijeniti svoju lozinku bez obzira što nema admin privilegije nad sistemom. Važno je dodati kako SBIT ima vrijednost 4 te se u kombinaciji sa komandom chmod i njenim brojčanim vrijednostima (750, 550, 650, 777) postavlja nad datotekama. 


Pošto sam ukratko objasnio šta je SUID bit evo kratkog primjera kako ga postaviti nad željenom datotekom. U ovom primjeru SUID bit će biti postavljen nad skriptom po imenu 'user_maker.sh' koja kreira novog korisnika sa njegovom lozinkom. Cijela skripta je prikazana ispod ovog teksta a preuzeta je kao primjer sa Linux sajta www.cybercity.biz. | goo.gl/WGRhN2


#!/bin/bash
# Script to add a user to Linux system
if [ $(id -u) -eq 0 ]; then
 read -p "Enter username : " username
 read -s -p "Enter password : " password
 egrep "^$username" /etc/passwd >/dev/null
 if [ $? -eq 0 ]; then
  echo "$username exists!"
  exit 1
 else
  pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
  useradd -m -p $pass $username
  [ $? -eq 0 ] && echo "User has been added to system!" || echo "Failed to add a user!"
 fi
else
 echo "Only root may add a user to the system"
 exit 2
fi

Na sljedećoj slici su prikazane default permisije (dozvole) nad skriptom user_maker.sh koristeći komandu ls -l.



Slika 3: Izlistavanje default permisija nad skriptom user_maker.sh
Izvor slike: /home/amar/Desktop/slika3


Pošto su nam poznate default permisije, sada je moguće postaviti SUID bit nad ovu skriptu koristeći komandu chmod.

chmod 4750 user_maker.sh

Jedno kratko objašnjenje gornje skripte: Skripta user_maker.sh dodaje novog korisnika unutar sistema s napomenom da samo root korisnik može dodati novog korisnika ali ne i obični korisnik.

Ranije sam u tekstu napomenuo kako SUID bit ima vrijednost 4, sedmica daje korisniku punu permisiju i čitanja i pisanja, petica daje grupi mogučnosti čitanja i izvršavanja ove datoteke dok ostali nemaju dozvole. To bi izgledalo ovako.




Slika 4: Izlistavanje default permisija nad skriptom user_maker.sh nakon postavaljanja SUID bita
Izvor slike: /home/amar/Desktop/slika4


Primijetit ćete na gornjoj slici dvije važne stvari a to je da ispred root korisnika nema x karaktera koji označava pravo izvršavanja datoteke. Umjesto x karaktera sada stoji s što označava SUID bit koji je upravo postavljen nad skriptom user_maker.sh. Obično root korisnik ima pravo čitanja, pisanja i izvršavanja datoteka što je označeno sa tri karaktera (rwx). Sada se u ovom primjeru to drastično razlikuje jer root korisnik nema ta prava. Evo rezultata pokretanja ove skripte u terminalu.




Slika 5: Pokretanje skripte user_maker.sh koristeći Terminal
Izvor slike: /home/amar/Desktop/slika5



Zaključak:

SUID bit jednom postavljen nad datotekom ili direktorijumom (postavljanje SUID bita nad direktorijumima nije opisano u ovom članku) daje pristup nad datotekama običnim korisnicima koji nisu root. SUID bit se prepoznaje sa malim slovom s što označava da je SUID bit postavljen dok veliko S označava da je SUID bit i dalje prisutan nad datotekom. Njegova vrijednost iznosi 4 a postavlja se komandom chmod bilo koristeći njene vrijednosti (777, 750, 650, 550) ili ručno. Permisije ili dozvole nad datotekama nad kojima je SUID bit postavljen se vrše komandom ls -l dok za direktorije je to komanda ls -ld. U narednom serijalu članaka iz Linux System administracije pogledat ćemo kako izgleda SGID bit te Sticky Bit i kako ih postaviti nad datotekama ili direktorijumima. Do narednog čitanja toliko od mene za sada.

Korištene reference:

1) What is SUID and how to set it in Linux?

2) What is SUID, SGID and Sticky bit?
Share:

No comments:

Post a Comment

My Twitter news

Popular Posts

Recent Posts

Unordered List

  • Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
  • Aliquam tincidunt mauris eu risus.
  • Vestibulum auctor dapibus neque.

Pages

Theme Support

Need our help to upload or customize this blogger template? Contact me with details about the theme customization you need.