This shows you the differences between two versions of the page.
|
so:cursuri:curs-13 [2014/05/12 22:55] traian.popeea [Demo-uri] |
so:cursuri:curs-13 [2017/02/23 16:34] (current) razvan.deaconescu |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Curs 13 - Securitatea sistemului ====== | ====== Curs 13 - Securitatea sistemului ====== | ||
| + | |||
| + | * [[http://elf.cs.pub.ro/so/res/cursuri/SO_Curs-13.pdf|Curs 13 - Securitatea sistemului (PDF)]] | ||
| + | * Suport curs | ||
| + | * Operating System Concepts Essentials | ||
| + | * Capitolul 13 -- Protection | ||
| + | * Capitolul 14 -- Security | ||
| + | * Secțiunile 14.1, 14.2, 14.5 | ||
| + | * Modern Operating Systems, 3rd Edition | ||
| + | * Capitolul 9 -- Security | ||
| + | * Mai puțin secțiunea 9.6: Exploiting Code Bugs | ||
| <html> | <html> | ||
| - | <iframe src="http://docs.google.com/viewer?url=http://elf.cs.pub.ro/so/res/cursuri/SO_Curs-13.pdf&embedded=true" width="600" height="480" style="border: none;"> | + | <center> |
| + | <iframe src="https://docs.google.com/viewer?url=http://elf.cs.pub.ro/so/res/cursuri/SO_Curs-13.pdf&embedded=true" width="600" height="480" style="border: none;"> | ||
| </iframe> | </iframe> | ||
| + | </center> | ||
| </html> | </html> | ||
| - | |||
| - | * [[http://elf.cs.pub.ro/so/res/cursuri/SO_Curs-13.pdf | Curs 13 - Securitatea sistemului (PDF)]] | ||
| - | |||
| - | * Suport curs | ||
| - | * Operating System Concepts | ||
| - | * Capitolul 14 -- Protection | ||
| - | * Capitolul 15 -- Security | ||
| - | * Secțiunile 15.1, 15.2, 15.5 | ||
| - | * Modern Operating Systems | ||
| - | * Capitolul 9 -- Security | ||
| - | * Secțiunile 9.4, 9.6 | ||
| ===== Demo-uri ===== | ===== Demo-uri ===== | ||
| Line 21: | Line 22: | ||
| Pentru parcurgerea demo-urilor, folosiți [[http://elf.cs.pub.ro/so/res/cursuri/curs-13-demo.zip|arhiva aferentă]]. | Pentru parcurgerea demo-urilor, folosiți [[http://elf.cs.pub.ro/so/res/cursuri/curs-13-demo.zip|arhiva aferentă]]. | ||
| - | <hidden> | ||
| - Bitul de set-user-ID-on-execution | - Bitul de set-user-ID-on-execution | ||
| * Consultați fișierul ''test.c''. | * Consultați fișierul ''test.c''. | ||
| + | * Scopul acestui program este de a genera un fișier de log care să conțină timestamp-uri aferente fiecărei rulări a sa, de forma ''user: time''. | ||
| + | * Numai owner-ul fișierului are drept de scriere asupra fișierului. | ||
| * Folosiți fișierul ''prep_users.sh'' pentru a genera cei doi utilizatori de test. | * Folosiți fișierul ''prep_users.sh'' pentru a genera cei doi utilizatori de test. | ||
| * Trebuie să aveți drept de sudo pentru a reuși întreg procesul. | * Trebuie să aveți drept de sudo pentru a reuși întreg procesul. | ||
| - | * Ca utilizatorul ''master'' (su - master) compilați fișierul folosind comanda ''make''. | + | * Ca utilizatorul ''master'' (''su - master'') compilați fișierul folosind comanda ''make''. |
| * Folosiți ''ls -l'' pentru a obține informații complete despre executabilul ''test''. | * Folosiți ''ls -l'' pentru a obține informații complete despre executabilul ''test''. | ||
| - | * Observați că executabiul este deținut de ''master'' și că are bitul de set-user-ID activat. | + | * Observați că executabiul este deținut de ''master'' și că are bitul de set-user-ID activat.<code bash> |
| - | * Ca utilizatorul ''worker'' rulați executabilul:<code bash> | + | -rwsr-xr-x 1 master master 12315 2014-05-12 22:33 test |
| + | </code> | ||
| + | * Ca utilizatorul ''worker'' (''su - worker'') rulați executabilul:<code bash> | ||
| ./test | ./test | ||
| </code> | </code> | ||
| - | * Observați cele două tipuri de identificatori de utilizatori: //user id//, //effective user ID//. | + | * Observați cele două tipuri de identificatori de utilizatori: //user id//, //effective user ID//.<code> |
| + | worker@erathia:~$ ~master/test | ||
| + | |||
| + | Process started | ||
| + | |||
| + | Setuid on | ||
| + | Effective user name: master; UID: 1002 | ||
| + | Real user name: worker; UID: 1003 | ||
| + | |||
| + | |||
| + | Giving up setuid until opening the file | ||
| + | |||
| + | Setuid off | ||
| + | Effective user name: worker; UID: 1003 | ||
| + | Real user name: worker; UID: 1003 | ||
| + | |||
| + | |||
| + | Wanting to open the file | ||
| + | |||
| + | Setuid on | ||
| + | Effective user name: master; UID: 1002 | ||
| + | Real user name: worker; UID: 1003 | ||
| + | |||
| + | |||
| + | File opened, giving up setuid | ||
| + | |||
| + | Setuid off | ||
| + | Effective user name: worker; UID: 1003 | ||
| + | Real user name: worker; UID: 1003 | ||
| + | |||
| + | |||
| + | File closed, process done | ||
| + | </code> | ||
| * Detalii în [[http://man7.org/linux/man-pages/man7/credentials.7.html|pagina de manual credentials]]. | * Detalii în [[http://man7.org/linux/man-pages/man7/credentials.7.html|pagina de manual credentials]]. | ||
| + | * Conform principiului least privilege, doar în momentul deschiderii fișierului pentru scriere sunt folosite drepturile utilizatorului owner. | ||
| * Observați că se poate reveni la utilizatorul owner al fișierului (//temporary privilege drop//). | * Observați că se poate reveni la utilizatorul owner al fișierului (//temporary privilege drop//). | ||
| - | </hidden> | ||