Pliki: prawa dostępu i ich zmiana (chmod)

  1. Utwórz plik abc (touch abc) i przeanalizuj skutki wykonania następujących komend:

    # chmod u=,g=,o= abc
    # chmod g+xr abc
    # chmod g+x+r abc
    # chmod g+x,+r abc
    # chmod g+x,-r abc
    # chmod u+rw,g+r,o+r abc
    # chmod 644 abc
    # chmod 611 abc
    # chmod ugo=rx abc
    
  2. Przeanalizuj symboliczne i ósemkowe określanie podstawowych oraz rozszerzonych praw dostępu:

     700 = rwx------ = u+rwx
     711 = rwx--x--x = u+rwx,go+x
     755 = rwxr-xr-x = u=rwx,go=rx
    1755 = rwxr-xr-t = u=rwx,go=rx,+t
    2511 = r-x--s--x = u=rx,g=xs,o=x
    4511 = r-s--x--x = u=rxs,go=x
    
  3. Podaj komendę nadającą plikowi fxyz prawa dostępu “r-Sr-Sr- -“.

  4. Podaj komendę nadającą katalogowi dxyz prawa dostępu “rwxrwxrwxt”.

  5. Podaj komendę nadającą plikowi fxyz prawa dostępu “r-s- -x- -x”.

  6. Przeanalizuj działanie następujących komend:

    # mkdir -p dir/d1 dir/d2;      ls -la dir
    # cp /etc/hosts dir/d1;        ls -la dir/d1
    # chmod -R 700 dir/d1 dir/d2;  ls -la dir; ls -la dir/d1
    # chmod -R 600 dir/d1 dir/d2;  ls -la dir; ls -la dir/d1
    # chmod -R u+x dir;            ls -la dir; ls -la dir/d1
    # chmod -R 600 dir/d1 dir/d2;  ls -la dir; ls -la dir/d1
    # chmod -R u+X dir;            ls -la dir; ls -la dir/d1
    
  7. Utwórz jako użytkownik root i labul plik abc i sprawdź jego prawa dostępu. Do czego służy komenda umask? Zob. man bash. Gdzie jest ustawiana wartość umask dla superużytkownika i pozostałych użytkowników systemu?

  8. Zastosuj maskę 022, utwórz plik f022 oraz katalog d022 i sprawdź ich prawa dostępu.

  9. Zastosuj maskę 021, utwórz plik f021 oraz katalog d021 i sprawdź ich prawa dostępu.

  10. Wykonaj poniższe komendy:

    # umask 666; touch f666; mkdir d666
    # umask 777; touch f777; mkdir d777
    

    a następnie porównaj prawa dostępu do utworzonych plików i katalogów.

EXT 2/3/4: dodatkowe atrybuty

man chattr

The letters `acdeijstuADST' select the new attributes for the files: append only (a),
compressed (c), no dump (d), extent format (e), immutable (i), data journalling (j),
secure deletion (s), no tail-merging (t), undeletable (u), no atime updates (A),
synchronous directory updates (D), synchronous updates (S), and top of directory
hierarchy (T).
  1. Sprawdź wynik działania komend:

    # touch xyz
    # chattr +i xyz
    # lsattr xyz
    # cat /etc/hosts >> xyz
    # rm -f xyz
    
  2. Sprawdź wynik działania komend:

    # cat /etc/hosts > xyz
    # chattr +a xyz;  lsattr xyz
    # cat /etc/hosts >> xyz
    # cp /dev/null xyz
    

    Czy przy pomocy edytora można usunąć kilka ostatnich wierszy pliku? Czy ten plik można usunąć?

POSIX ACL

Linux daje możliwość kontroli dostępu do plików i katalogów poprzez tzw. listy kontroli dostępu zdefiniowane przez *POSIX Access Control Lists (ACL). Każdy plik oprócz praw dostępu dla właściciela, grupy i innych może posiadać prawa dostępu dla wskazanego użytkownika/grupy (man acl).

Komendy getfacl i setfacl służą, odpowiednio, do pobierania i ustawiania listy kontroli dostępu.

  1. Jako użytkownik root utwórz plik /tmp/hosts i nadaj mu prawa czytania i modyfikowania (600). Utwórz dwóch dodatkowych użytkowników labulrw, labulro; pierwszemu nadaj prawa czytania i modyfikowania pliku, drugiemu tylko czytania.

    # setfacl -m u[ser]:labulrw:rw /tmp/hosts
    # setfacl -m u:labulro:r /tmp/hosts
    # ls -l /tmp/hosts
    # setacl -b /tmp/hosts
    # ls -l /tmp/hosts
    
  2. Zmodyfikuj analogicznie prawa dostępu dla grupy labulrw i labulro.

  3. Usuń uprawnienia ACL dla grupowego użytkownika labulro do pliku /tmp/hosts.

Rozszerzone prawa dostępu

Kropka następująca po prawach dostępu oznacza, że plik/katalog ma ustawione uprawnienia kontrolowane przez SELinuksa (te informacje związane z bezpieczeństwem określa się mianem kontekstu SELinuksa). Można je sprawdzić przy pomocy komendy ls [-d] -Z (zob. A Beginner’s Guide to SELinux on CentOS).