Po zalogowaniu mogę wykonać następujące czynności:
mkdir foo
touch foo/bar
chmod 400 foo/bar
chmod 500 foo
Następnie mogę otworzyć vima (nie jako root), edytować bar, wymusić zapis za pomocą w!, a plik zostanie zmodyfikowany.
Jak mogę sprawić, aby system operacyjny nie zezwolił na jakąkolwiek modyfikację pliku?
AKTUALIZACJA 02 marca 2017 r
chmod 500 footo czerwony śledź: uprawnienie do zapisu w katalogu nie ma nic wspólnego z możliwością modyfikowania zawartości pliku - tylko z możliwością tworzenia i usuwania plików.chmod 400 foo/barw rzeczywistości zapobiega zmianie zawartości pliku. Ale , to jednak nie zapobiega uprawnienia pliku jest przed zmianą - właściciel pliku może zawsze zmienić uprawnienia jego akt jest (zakładając, że mogą one uzyskać dostępu do pliku czyli zezwolenie na wykonywanie wszystkich katalogów przodków). W rzeczywistości strace (1) ujawnia, że właśnie to robi vim (7.4.576 Debian Jessie) - vim wywołuje chmod (2), aby tymczasowo dodać uprawnienia do zapisu dla właściciela pliku, modyfikuje plik, a następnie wywołuje chmod ( 2) ponownie, aby usunąć uprawnienie do zapisu. Dlatego przy użyciuchattr +idziała - tylko root może wywoływaćchattr -i. Teoretycznie vim (lub jakikolwiek program) mógłby zrobić to samo z chattr jak z chmodem na niezmiennym pliku, jeśli działa jako root.
root?
vimfaktycznie zmienia uprawnienia, a następnie odkłada je z powrotem.