Atrybuty Plików w Linuxie

W systemie linux istnieje rozbudowany system praw oraz atrybutów plików. Ten tekst ma na celu przybliżenie sposobu manipulowania uprawnieniami i atrybutami plików przy użyciu podstawowych narzędzi udostępnianych przez linuxa. Użytkownik może zmieniać uprawnienia tylko dla tych plików których jest właścicielem. Jedynie administrator systemu “root” ma prawo swobodnego manipulowania plikami.

Komenda ls -l wyświetla liste plików oraz uprawnienia które do nich przysługują.

Prawa do plików obowiązują dla:

    'u' – właściciela pliku
    'g' – grupy do której należy właściciel
    'o' – pozostałych użytkowników

Do zmiany praw słuzy systemowa komenda chmod (przydatna jest opcja chmod -R, która zmienia uprawnienia rekursywnie. Polecenia chmod mozna uzywac na kilka sposobow np.:

chmod kto operacje uprawnienia [,kto operacje uprawnienia] plik kto:

    'u' – wlasciciel pliku
    'g' – grupa
    'o' – inni
    'a' – wszystcy

operacje:

    '+' – dodaje uprawnienia
    '-' – usuwa uprawnienia
    '=' – ustawia uprawnienia (rownoczesnie może zdjąc jedne i dodać inne)

uprawnienia:

    'r' – odczyt
    's' – UID oraz GID (zależy na którym polu jest ustawiony)
    't' – „sticky bit”
    'w' – zapis
    'x' – uruchamianie/przeszukiwanie

Krótkie objaśnienie terminu “sticky bit”:

Dla katalogu oznacza to, że pliki w nim utworzone może kasować tylko root lub wlaściciel i to niezależnie od praw zapisu do katalogu.

Dla pliku już się nie stosuje tego atrybutu, był on wykorzystywany w starszych systemach do przechowywania plików wykonywalnych na partycji wymiany.

Można rownież inaczej np.:

    chmod [xnnn] plik 

(wartość może być ustawiona na kazdym polu “n”)

“wartość” – “uprawnienia”

    '0' – '—'
    '1' – '–x'
    '4' – 'r–'
    '5' – 'r-x'
    '6' – 'rw-'
    '7' – 'rwx'

(wartość może być ustawiona na każdym polu “x”)

“wartość” – “uprawnienia”

    '0' – 'none'
    '1' – 'sticky bit'
    '2' – 'GID'
    '4' – 'UID'

Przyklady:

    chmod ug+x file (dodaje uprawnienia wykonywania dla właściciela i grupy)
    chmod 770 file (dodaje pełne uprawnienia dla właściciela i grupy)
    chmod 4777 file (ustawia SUID-a oraz pełne uprawnienia dla właściciela, grupy i reszty)
    chmod u=rwx,go=rx file (dodaje pełne uprawnienia dla właściciela oraz odczyt i wykonywanie dla reszty)
    chmod u+s file (ustawia UID "SUID")
    chmod g+s file (ustawia GID)

Oprócz praw do plików możemy zmieniać także atrybuty. Polecenie służące do wyświetlania atrybutów to lsattr. W celu zmiany atrybutów pliku uzywamy polecenia chattr (dostępna jest również opcja chattr -R)

Polecenia chattr można używać w następujący sposób:

    chattr [opcja] [atrybuty] [plik] 

Najważniejsze atrybuty zaimplementowane na dzień dzisiejszy to:

    'a' – do pliku można tylko dopisywać (append)
    'c' – taki plik jest automatycznie kompresowany podczas zapisu i dekompresowany podczas odzczytu
    'd' – taki atrybut oznacza, że plik nie jest uwzględniany jako plik do backupu przez program dump
    'i' – pliku z tym atrybutem nie można modyfikowac ani zmieniac jego nazwy lub tworzyc do niego linka, tylko root moze ustawiać ten atrybut
    's' – atrybut pozwala na kasowanie pliku bez jakielkolwiek możliwości jego odzysku
    'S' – pliki z tym atrybutem są zapisywane na dysk natychmiastowo (synchronicznie) po dokonaniu zmian
    'u' – atrybut pozwala na odzyskanie pliku w przypadku skasowania

Przykład:

    chattr c file (ustawia atrybut kompresji dla pliku)

Chcesz więcej? Zobacz na strony podręcznika systemowego man chmod oraz man chattr.