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
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
Podaj komendę nadającą plikowi fxyz prawa dostępu “r-Sr-Sr- -“.
Podaj komendę nadającą katalogowi dxyz prawa dostępu “rwxrwxrwxt”.
Podaj komendę nadającą plikowi fxyz prawa dostępu “r-s- -x- -x”.
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
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?
Zastosuj maskę 022, utwórz plik f022 oraz katalog d022 i sprawdź ich prawa dostępu.
Zastosuj maskę 021, utwórz plik f021 oraz katalog d021 i sprawdź ich prawa dostępu.
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.
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).
Sprawdź wynik działania komend:
# touch xyz
# chattr +i xyz
# lsattr xyz
# cat /etc/hosts >> xyz
# rm -f xyz
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ąć?
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.
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
Zmodyfikuj analogicznie prawa dostępu dla grupy labulrw i labulro.
Usuń uprawnienia ACL dla grupowego użytkownika labulro do pliku /tmp/hosts.
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).