[http://vvv.cs.ut.ee/%7Emroos/turve/praks/unix_perm_en.html In English]

=== Unixi failiõiguste praktikum ===

  ,----------- faili omaniku õigused 
| ,------- grupiõigused
| | ,--- õigused kogu ülejäänud maailmale
rwx|rwx|rwx
..s ..s ..t
| | `-- sticky bit
| `------ setgid bit
`---------- setuid bit
  1. Tehke sellele veebilehele Reload!
  2. Tekitage kasutajad esimene, teine, kolmas (vajab roodu õigusi)
    adduser viies
  3. Tekitage grupp yhine, kuhu kuuluvad kõik 3 kasutajat (vt. järgmist punkti).
  4. Tekitage grupp salajane - kasutajad: esimene ja teine
    addgroup grupp1
    addgroup grupp2
    usermod -G grupp1,grupp2 kasutajanimi
    ...
    Pange tähele, et usermod -G annab ette täieliku gruppide nimekirja, eemaldades kasutaja kõigist muudest gruppidest!
  5. Logige süsteemi erinevate kasutajatena - tehke selleks eraldi terminaliaknad ja
    ssh user@127.0.0.1
  6. Uurige identiteeti - mis grupid on kasutajatel?
    id kasutaja
    id
    Parandage, kuni id näitab sisseloginud kasutajale, et tema grupid on õiged.
  7. Looge uusi faile (touch) ja katalooge (mkdir) - mis on nende grupp? õigused? omanik?
    ls -l
  8. newgrp yhine (või salajane) - kontrollige id väljundit, tekitage uusi faile.
    newgrp grupp
    Korrake, kuni õnnestub tekitada faile teise grupiga kui algul.
  9. umask - tekita uusi faile (mida tähendavad umask väärtused: 022, 077, 027, 007, 002 ?)
    umask vaartus
  10. Tekitage (root kasutajana) kataloog /home/yhine ning tehke selle omanikuks kasutaja "esimene" (vt. järgmist punkti)
  11. Tekitage kataloog /home/yhine/tmp ja lubage kõigile kasutajatele sinna kataloogi kirjutamine (loabitid 777)
    mkdir kataloog
    chown omanik kataloog
    chmod mode kataloog
  12. Kas saab võõrast faili kustutada? Kes saab? Kas see sõltub kustutatava faili õigustest? Kas faili õiguste määramisega saab kustutamist keelata? Vastus kirjutage kuhugi faili üles, seda läheb vaja arvestuse saamisel.
  13. Sticky bit: chmod 1777 /home/yhine/tmp või chmod o+t /home/yhine/tmp Mis muutus? vt. eelmine punkt.
  14. Mida teeb setgid kataloogil:
    mkdir /home/yhine/salajane
    chgrp salajane /home/yhine/salajane
    chmod 2770 /home/yhine/salajane
    ja proovige erinevate kasutajatena sinna faile tekitada. Mis tuleb grupiks?
  15. Kombineerige sticky + setgid, nii et ei oleks võimalik kogemata võõrast faili kustutada, testige.
  16. Andke kasutajale kolmas õigus siseneda (ja kirjutada) kataloogi salajane (lugege enne hoiatust ülevaltpoolt usermod kohta!) - milline on tema loodud failide grupikuuluvus?
  17. Kopeerida fail id ning anda sellele vastavad õigused:
    cp /usr/bin/id /home/yhine
    chown esimene /home/yhine/id
    chmod 4755 /home/yhine/id
    Nii tekib setuid programm - käivitage erinevate kasutajate (teine,kolmas) alt ning uurige väljundit (euid!)
  18. Fail test.c - kompileerida gcc test.c -o test
    #include <unistd.h>
    main() {
    setuid(geteuid());
    execl("/bin/bash", "/bin/bash", NULL);
    }
  19. chown root test; chmod 4755 test - Käivitage (./test ) erinevate tavakasutajate (mitte root) õigustes - kontrollige identiteeti (id) ning parandage, kuni saate tavakasutaja root-uks.
  20. chown esimene test; chmod 4755 test - proovige uuesti, miks uid ei muutu?
  21. Koduseks harjutamiseks? Arvutiklassis pole eraldi /home:
    Monteerige failisüsteem /home nosuid parameetriga (kaotab käivitatavate programmide setuid biti efekti).
    mount -o remount,nosuid /home
    Kontrollige eelmisi punkte (./id ja ./test töötamist).
    Monteerige failisüsteem /home noexec parameetriga.
    mount -o remount,noexec /home
    Enam ei saa programme käivitada (proovige!). Failisüsteemi noexec omadusest oli varemalt võimalik linkeri abil mööda minna, tänapäeval enam mitte:
    /lib/ld-linux.so.2 ./test
    NB! Monteerides juurfailisüsteemi (/) noexec-ina, ei ole ka /lib kataloogis asuv programmide laadimisega tegelev dünaamiline linker enam käivitatav ning süsteem muutub kasutuskõlbmatuks.
  22. Otsige süsteemist "setuid" ja "setgid" programme:
    find / -perm +4000 -or -perm +2000 -ls
    Mis otstarve neil süsteemis on?
  23. ACL (access control list); järgmiste punktide täitmiseks monteerige kõigepealt failisüsteem ümber, lubades ACL toe:
    mount -o remount,acl /
  24. Andke õigusi konkreetsele kasutajale:
    setfacl -m u:teine:rwx fail
    ja proovige, kas see toimib.
  25. ls -l näitab nüüd '+' märki - kontrollige!
    getfacl fail
  26. Praktikumi arvestuse saamiseks saatke viimase getfacl väljund ja varem kirja pandud õiguste küsimuste vastused e-mailiga oma praktikumijuhendaja aadressil.
  27. Eemaldage ACL:
    setfacl -x u:teine fail
  28. Tekitage kataloog ja määrake sellele "default" ACL -
    setfacl -d -m user:kolmas:rx
    Veenduge, et see ACL päritakse edasi kõigile failidele ja alamkataloogidele, mida te loote selle alla.
  29. acl mask - võimaldab tühistada mingit õigust kõigilt kasutajatelt/gruppidelt, kes on listis:
    setfacl -m m::-
    (mida teeb? katsetage!)
  30. fail - kõik ACL-id maha.
    setfacl -b
  31. Töö lõpp: eemaldage süsteemist praktikumi käigus loodud kasutajad ja grupid (rooduna!).
    userdel -r esimene; userdel -r teine; userdel -r kolmas
    groupdel grupp1; jne...
    rm -rf /home/yhine

Viiteid:
[http://www.csl.sri.com/users/ddean/papers/usenix02.pdf]
[http://www.csl.sri.com/users/ddean/papers/usenix02.pdf]

Sidebar
Page edit