Difference between revisions of "Setuid / Setgid"

From ICO wiki
(Näited)
 
(18 intermediate revisions by the same user not shown)
Line 4: Line 4:
 
== Sissejuhatus ==
 
== Sissejuhatus ==
  
Setuid / SUID (set user id) on kasutajapõhine õiguste bit. Setuid-ga antakse kasutajale õigus käivitada programm / fail omanikuõigustega. Setgid / SGID (set group id) on grupipõhine õiguste bit. Setgid-ga antakse gruppi kuuluvale kasutajale õigused käivitada programm / fail omanikugrupi õigustega.
+
Setuid / SUID (set user id) on kasutajapõhine eriõiguste bit. Setuid-ga antakse kasutajale õigus käivitada programm / fail omanikuõigustega. Setgid / SGID (set group id) on grupipõhine eriõiguste bit. Setgid-ga antakse kasutajale õigused käivitada programm / fail omanikugrupi õigustega.
  
 
== Setuid ja Setgid lisamine ==
 
== Setuid ja Setgid lisamine ==
  
 
Setuid ja Setgid õiguseid jagatakse '''chmod''' käsuga.
 
Setuid ja Setgid õiguseid jagatakse '''chmod''' käsuga.
Setuid ja Setgid saab määratleda nii loabittide (numbrite kujul). Loetavas formaadis ('''r''' - read, '''w''' - write, '''x''' - execute), kus: '''u''' - user(omanik); '''g''' - group(grupp); '''o''' - other(teised kasutajad); '''a''' - all(kõik: omanik, grupp kui ka teised kasutajad.) Setuid-i saab määrata ainult omanikuõigustele ('''u'''.) Setgid-i saab määrata ainult grupiõigustele ('''g'''.)
+
Setuid ja Setgid saab määratleda nii loabittide (numbrite kujul). Loetavas formaadis ('''r''' - read, '''w''' - write, '''x''' - execute), kus: '''u''' - user(omanik); '''g''' - group(grupp); '''o''' - other(teised kasutajad); '''a''' - all(kõik: omanik, grupp kui ka teised kasutajad.) Setuid-i saab määrata ainult omanikuõigustele ('''u'''). Setgid-i saab määrata ainult grupiõigustele ('''g'''). Enne Setgid või Setuid eriõiguste rakendamist peab teadma täpselt kaustade ja failide sisu, vältimaks õiguste tagamist kõrvalistele kasutajatele.
  
== Näited: ==
+
== Näited ==
  
 
'''Loetavas formaadis:'''
 
'''Loetavas formaadis:'''
  
 
* Setuid lisamine:
 
* Setuid lisamine:
 
 
 
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
 
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
 
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | chmod u+s /usr/bin/passwd  
 
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | chmod u+s /usr/bin/passwd  
 
|}
 
|}
  
Antud käsuga anti igale kasutajale õigus muuta enda parooli. Parooli muutes käivitakase passwd faili juurkasutaja (root) õigustega.
+
Antud käsuga anti igale kasutajale õigus muuta enda parooli. Parooli muutes käivitatakse passwd fail juurkasutaja (root) õigustega.
  
 
Tulemus:  
 
Tulemus:  
Line 30: Line 28:
 
|}
 
|}
  
Vaatamaks kas failil on Setuid määratletud, kasutatakse käsku '''ls -l'''. „'''s'''“ bit näitab kasutaja õigustes Setuid määratletust.
+
Vaatamaks kas failil on Setuid määratletud, kasutatakse käsku '''ls -l'''. „'''s'''“ bit näitab kasutajaõigustes Setuid määratletust.
  
 
* Setuid eemaldamine:  
 
* Setuid eemaldamine:  
Line 45: Line 43:
 
Antud käsuga eemaldati kasutajatelt õigus muuta enda parooli. Ainult juurkasutaja (root) saab parooli muuta, sest tal on ainsana kirjutamis (write) õigus. „'''x'''“ bit näitab käivitamis (execute) õigust.
 
Antud käsuga eemaldati kasutajatelt õigus muuta enda parooli. Ainult juurkasutaja (root) saab parooli muuta, sest tal on ainsana kirjutamis (write) õigus. „'''x'''“ bit näitab käivitamis (execute) õigust.
  
* Setgid lisamine:
+
* Setgid lisamine (failid):
 
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
 
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | chmod g+s kaust/failinimi
+
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | chmod g+s sbin/netreport
 +
|}
 +
 
 +
Tulemus:
 +
{|style="background:lightyellow;width:1000px;margin:3px;border:1px solid lightgrey"
 +
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | ls -l /sbin/netreport
 +
-rwxr-'''s'''r-x 1 root root 0 2016-11-28 02:46 /sbin/netreport
 +
|}
 +
 
 +
„'''s'''“ bit näitab grupiõigustes Setgid määratletust. Kõik kasutajad käivitavad netreport faili juurgrupi (root) õigustega.
 +
 
 +
 
 +
 
 +
* Setgid lisamine (kaustad):
 +
On kaust mille omanik on root ja kaust kuulub grupile Projekt. On kaks kasutajat Mati (kodugrupp Arendaja) ja Kati (kodugrupp Rakadmin). Nii Mati kui ka Kati kuuluvad gruppi Projekt.
 +
{|style="background:lightyellow;width:1000px;margin:3px;border:1px solid lightgrey"
 +
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | ls -l /projekt
 +
'''d'''rwxrw'''x'''r-x 1 root Projekt 0 2016-11-28 02:46 /projekt
 +
|}
 +
„'''d'''“ näitab, et tegemist on kaustaga (directory).
 +
 
 +
Kui hetkel Mati looks faili Dokumentatsioon.txt, siis Dokumentatsioon.txt fail kuuluks grupile Arendaja:
 +
{|style="background:lightyellow;width:1000px;margin:3px;border:1px solid lightgrey"
 +
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | touch Dokumentatsioon.txt
 +
ls -l
 +
-rwxrwxr-x 1 root Arendaja 0 2016-11-28 02:46 Dokumentatsioon.txt
 
|}
 
|}
 +
 +
 +
Selleks, et Kati (Rakadmin) saaks teha dokumentatsioonifailis muudatusi, tuleb kõigepealt määrata kaustale projekt Setgid:
 +
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
 +
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | chmod g+s /projekt
 +
|}
 +
 +
Tulemus:
 +
{|style="background:lightyellow;width:1000px;margin:3px;border:1px solid lightgrey"
 +
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | ls -l /projekt
 +
drwxrw'''s'''r-x 1 root projekt 0 2016-11-28 02:46 /projekt
 +
|}
 +
 +
„'''s'''“ bit näitab grupiõigustes Setgid määratletust.
 +
 +
Nüüd kui Mati (Arendaja) looks uuesti faili Dokumentatsioon.txt, tekiks fail, mis kuuluks grupile Projekt. See tagab kirjutamisõiguse ka Katile(Rakadmin):
 +
{|style="background:lightyellow;width:1000px;margin:3px;border:1px solid lightgrey"
 +
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | touch Dokumentatsioon.txt
 +
ls -l
 +
-rwxrwxr-x 1 root Projekt 0 2016-11-28 02:46 Dokumentatsioon.txt
 +
|}
 +
 +
 
* Setgid eemaldamine:
 
* Setgid eemaldamine:
 
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
 
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | chmod g-s kaust/failinimi
+
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | chmod g-s sbin/netreport
 
|}
 
|}
 +
 +
Tulemus:
 +
{|style="background:lightyellow;width:1000px;margin:3px;border:1px solid lightgrey"
 +
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | ls -l /sbin/netreport
 +
-rwxr-'''x'''r-x 1 root root 0 2016-11-28 02:46 /sbin/netreport
 +
|}
 +
 +
Kõik kasutajad käivitavad netreport faili vastavalt enda õigustele või gruppi kuuluvusele.
  
 
'''Loabittide formaadis (numbrite kujul):'''
 
'''Loabittide formaadis (numbrite kujul):'''
  
Setuid määramiseks tuleb loabittide ette kirjutada 4 ja õigusbitid järgi.
+
Setuid määramiseks tuleb loabittide ette kirjutada 4 ja õigusbitid(775) järgi. Kus ('''7'''75) on faili omanikul r,w,x õigused; (7'''7'''5) grupil r,w,x õigused ja (77'''5''')teistel kasutajatel r,x õigused.
 +
Read - 4; Write - 2; Execute 1 => rwx=4+2+1=7 ja rx=4+1=5
 +
 
 
Näiteks soovime anda failile Setuid:
 
Näiteks soovime anda failile Setuid:
 
 
* lisamiseks:  
 
* lisamiseks:  
 
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
 
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
 
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | chmod 4775 kaust/failinimi  
 
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | chmod 4775 kaust/failinimi  
 +
|}
 +
 +
Tulemus:
 +
{|style="background:lightyellow;width:1000px;margin:3px;border:1px solid lightgrey"
 +
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | ls -l /kaust/failinimi/
 +
-rw'''s'''rwxr-x 1 root root 0 2016-11-28 02:46 /kaust/failinimi/
 
|}
 
|}
  
Line 67: Line 128:
 
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
 
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
 
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | chmod 0775 kaust/failinimi  
 
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | chmod 0775 kaust/failinimi  
 +
|}
 +
 +
Tulemus:
 +
{|style="background:lightyellow;width:1000px;margin:3px;border:1px solid lightgrey"
 +
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | ls -l /kaust/failinimi/
 +
-rw'''x'''rwxr-x 1 root root 0 2016-11-28 02:46 /kaust/failinimi/
 
|}
 
|}
  
 
Setgid määramiseks tuleb loabittide ette kirjutada 2, sama põhimõte nagu ka Setuid-lgi.
 
Setgid määramiseks tuleb loabittide ette kirjutada 2, sama põhimõte nagu ka Setuid-lgi.
 
 
* lisamiseks:  
 
* lisamiseks:  
 
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
 
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
 
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | chmod 2775 kaust/failinimi  
 
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | chmod 2775 kaust/failinimi  
 
|}
 
|}
 +
 +
Tulemus:
 +
{|style="background:lightyellow;width:1000px;margin:3px;border:1px solid lightgrey"
 +
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | ls -l /kaust/failinimi/
 +
-rwxrw'''s'''r-x 1 root root 0 2016-11-28 02:46 /kaust/failinimi/
 +
|}
 +
 
* eemaldamiseks:  
 
* eemaldamiseks:  
 
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
 
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
Line 80: Line 153:
 
|}
 
|}
  
 +
Tulemus:
 +
{|style="background:lightyellow;width:1000px;margin:3px;border:1px solid lightgrey"
 +
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | ls -l /kaust/failinimi/
 +
-rwxrw'''x'''r-x 1 root root 0 2016-11-28 02:46 /kaust/failinimi/
 +
|}
  
  
Line 87: Line 165:
 
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | chmod 6775 kaust/failinimi
 
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | chmod 6775 kaust/failinimi
 
  |}
 
  |}
 +
 +
Tulemus:
 +
{|style="background:lightyellow;width:1000px;margin:3px;border:1px solid lightgrey"
 +
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | ls -l /kaust/failinimi/
 +
-rw'''s'''rw'''s'''r-x 1 root root 0 2016-11-28 02:46 /kaust/failinimi/
 +
|}
 +
 
* eemaldamiseks:  
 
* eemaldamiseks:  
 
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
 
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
Line 92: Line 177:
 
  |}
 
  |}
  
 +
Tulemus:
 +
{|style="background:lightyellow;width:1000px;margin:3px;border:1px solid lightgrey"
 +
| style="padding:0px 0px 0px 80px;font-family:courier;font-size:8pt;" | ls -l /kaust/failinimi/
 +
-rw'''x'''rw'''x'''r-x 1 root root 0 2016-11-28 02:46 /kaust/failinimi/
 +
|}
  
== Failide leidmine millele on määratletud Setuid või Setgid: ==
+
== Failide leidmine millele on määratletud Setuid või Setgid ==
  
 
*Setuid:  
 
*Setuid:  
Line 112: Line 202:
 
== Kokkuvõte ==
 
== Kokkuvõte ==
  
Setuid on kasulik õiguste jagamise viis konkreetsetele failidele. Tavakasutajale ei pea andma näiteks juurkasutaja õiguseid, et kindlates failides teha muudatusi. Setuid võimaldab jagada kasutajaõiguseid paindlikumalt ilma turvariski tõstmata.
+
Setuid on kasulik õiguste jagamise viis konkreetsetele failidele. Tavakasutajale ei pea andma näiteks juurkasutaja õiguseid, et kindlates failides teha muudatusi. Setgid on kasulik grupi õiguste jagamise viis konkreetsele failile ja kaustale ilma omanikugruppi muutmata. Eelnevalt omades ülevaadet kaustast ja kaustas olevatest failidest on Setgid ja Setuid turvaline viis õiguste jagamiseks.
Setgid on kasulik grupi õiguste jagamise viis konkreetsele failile ilma faili omanikugruppi muutmata. Võimaldab jagada grupile õiguseid paindlikumalt ilma turvariski tõstmata.
 
  
== Kasutatud kirjandus: ==
+
== Kasutatud kirjandus ==
 
#http://linuxg.net/how-to-set-the-Setuid-and-Setgid-bit-for-files-in-linux-and-unix/
 
#http://linuxg.net/how-to-set-the-Setuid-and-Setgid-bit-for-files-in-linux-and-unix/
 
#https://docs.oracle.com/cd/E19683-01/816-4883/secfile-69/index.html
 
#https://docs.oracle.com/cd/E19683-01/816-4883/secfile-69/index.html

Latest revision as of 05:42, 7 December 2016

Autor

Martin Abel A41

Sissejuhatus

Setuid / SUID (set user id) on kasutajapõhine eriõiguste bit. Setuid-ga antakse kasutajale õigus käivitada programm / fail omanikuõigustega. Setgid / SGID (set group id) on grupipõhine eriõiguste bit. Setgid-ga antakse kasutajale õigused käivitada programm / fail omanikugrupi õigustega.

Setuid ja Setgid lisamine

Setuid ja Setgid õiguseid jagatakse chmod käsuga. Setuid ja Setgid saab määratleda nii loabittide (numbrite kujul). Loetavas formaadis (r - read, w - write, x - execute), kus: u - user(omanik); g - group(grupp); o - other(teised kasutajad); a - all(kõik: omanik, grupp kui ka teised kasutajad.) Setuid-i saab määrata ainult omanikuõigustele (u). Setgid-i saab määrata ainult grupiõigustele (g). Enne Setgid või Setuid eriõiguste rakendamist peab teadma täpselt kaustade ja failide sisu, vältimaks õiguste tagamist kõrvalistele kasutajatele.

Näited

Loetavas formaadis:

  • Setuid lisamine:
chmod u+s /usr/bin/passwd

Antud käsuga anti igale kasutajale õigus muuta enda parooli. Parooli muutes käivitatakse passwd fail juurkasutaja (root) õigustega.

Tulemus:

ls -l /usr/bin/passwd

-rwsr-xr-x 1 root root 0 2016-11-28 02:46 /usr/bin/passwd

Vaatamaks kas failil on Setuid määratletud, kasutatakse käsku ls -l. „s“ bit näitab kasutajaõigustes Setuid määratletust.

  • Setuid eemaldamine:
chmod u-s /usr/bin/passwd


Tulemus:

ls -l /usr/bin/passwd

-rwxr-xr-x 1 root root 0 2016-11-28 02:46 /usr/bin/passwd

Antud käsuga eemaldati kasutajatelt õigus muuta enda parooli. Ainult juurkasutaja (root) saab parooli muuta, sest tal on ainsana kirjutamis (write) õigus. „x“ bit näitab käivitamis (execute) õigust.

  • Setgid lisamine (failid):
chmod g+s sbin/netreport

Tulemus:

ls -l /sbin/netreport

-rwxr-sr-x 1 root root 0 2016-11-28 02:46 /sbin/netreport

s“ bit näitab grupiõigustes Setgid määratletust. Kõik kasutajad käivitavad netreport faili juurgrupi (root) õigustega.


  • Setgid lisamine (kaustad):

On kaust mille omanik on root ja kaust kuulub grupile Projekt. On kaks kasutajat Mati (kodugrupp Arendaja) ja Kati (kodugrupp Rakadmin). Nii Mati kui ka Kati kuuluvad gruppi Projekt.

ls -l /projekt

drwxrwxr-x 1 root Projekt 0 2016-11-28 02:46 /projekt

d“ näitab, et tegemist on kaustaga (directory).

Kui hetkel Mati looks faili Dokumentatsioon.txt, siis Dokumentatsioon.txt fail kuuluks grupile Arendaja:

touch Dokumentatsioon.txt

ls -l -rwxrwxr-x 1 root Arendaja 0 2016-11-28 02:46 Dokumentatsioon.txt


Selleks, et Kati (Rakadmin) saaks teha dokumentatsioonifailis muudatusi, tuleb kõigepealt määrata kaustale projekt Setgid:

chmod g+s /projekt

Tulemus:

ls -l /projekt

drwxrwsr-x 1 root projekt 0 2016-11-28 02:46 /projekt

s“ bit näitab grupiõigustes Setgid määratletust.

Nüüd kui Mati (Arendaja) looks uuesti faili Dokumentatsioon.txt, tekiks fail, mis kuuluks grupile Projekt. See tagab kirjutamisõiguse ka Katile(Rakadmin):

touch Dokumentatsioon.txt

ls -l -rwxrwxr-x 1 root Projekt 0 2016-11-28 02:46 Dokumentatsioon.txt


  • Setgid eemaldamine:
chmod g-s sbin/netreport

Tulemus:

ls -l /sbin/netreport

-rwxr-xr-x 1 root root 0 2016-11-28 02:46 /sbin/netreport

Kõik kasutajad käivitavad netreport faili vastavalt enda õigustele või gruppi kuuluvusele.

Loabittide formaadis (numbrite kujul):

Setuid määramiseks tuleb loabittide ette kirjutada 4 ja õigusbitid(775) järgi. Kus (775) on faili omanikul r,w,x õigused; (775) grupil r,w,x õigused ja (775)teistel kasutajatel r,x õigused. Read - 4; Write - 2; Execute 1 => rwx=4+2+1=7 ja rx=4+1=5

Näiteks soovime anda failile Setuid:

  • lisamiseks:
chmod 4775 kaust/failinimi

Tulemus:

ls -l /kaust/failinimi/

-rwsrwxr-x 1 root root 0 2016-11-28 02:46 /kaust/failinimi/

  • eemaldamiseks:
chmod 0775 kaust/failinimi

Tulemus:

ls -l /kaust/failinimi/

-rwxrwxr-x 1 root root 0 2016-11-28 02:46 /kaust/failinimi/

Setgid määramiseks tuleb loabittide ette kirjutada 2, sama põhimõte nagu ka Setuid-lgi.

  • lisamiseks:
chmod 2775 kaust/failinimi

Tulemus:

ls -l /kaust/failinimi/

-rwxrwsr-x 1 root root 0 2016-11-28 02:46 /kaust/failinimi/

  • eemaldamiseks:
chmod 0775 kaust/failinimi

Tulemus:

ls -l /kaust/failinimi/

-rwxrwxr-x 1 root root 0 2016-11-28 02:46 /kaust/failinimi/


Setuid ja Setgid määramiseks tuleb kasutada loabitti 6.

  • lisamiseks:
chmod 6775 kaust/failinimi

Tulemus:

ls -l /kaust/failinimi/

-rwsrwsr-x 1 root root 0 2016-11-28 02:46 /kaust/failinimi/

  • eemaldamiseks:
chmod 0775 kaust/failinimi

Tulemus:

ls -l /kaust/failinimi/

-rwxrwxr-x 1 root root 0 2016-11-28 02:46 /kaust/failinimi/

Failide leidmine millele on määratletud Setuid või Setgid

  • Setuid:
find / -type f -perm /4000
  • Setgid:
find / -type f -perm /2000
  • Setgid + Setuid:
find / -type f -perm /6000

Kokkuvõte

Setuid on kasulik õiguste jagamise viis konkreetsetele failidele. Tavakasutajale ei pea andma näiteks juurkasutaja õiguseid, et kindlates failides teha muudatusi. Setgid on kasulik grupi õiguste jagamise viis konkreetsele failile ja kaustale ilma omanikugruppi muutmata. Eelnevalt omades ülevaadet kaustast ja kaustas olevatest failidest on Setgid ja Setuid turvaline viis õiguste jagamiseks.

Kasutatud kirjandus

  1. http://linuxg.net/how-to-set-the-Setuid-and-Setgid-bit-for-files-in-linux-and-unix/
  2. https://docs.oracle.com/cd/E19683-01/816-4883/secfile-69/index.html
  3. http://thegeekdiary.com/what-is-suid-sgid-and-sticky-bit/
  4. http://www.codecoffee.com/tipsforlinux/articles/028.html
  5. http://kuutorvaja.eenet.ee/kasutamine/os/failioigused.html
  6. http://linoxide.com/how-tos/stickbit-suid-guid/