Durante l'accesso, posso fare quanto segue:
mkdir foo
touch foo/bar
chmod 400 foo/bar
chmod 500 foo
Quindi posso aprire vim (non come root
), modificare bar
, forzare una scrittura w!
e il file viene modificato.
Come posso fare in modo che il sistema operativo non accetti modifiche ai file?
AGGIORNAMENTO 02 Mar 2017
chmod 500 foo
è un'aringa rossa: l'autorizzazione di scrittura su una directory non ha nulla a che fare con la possibilità di modificare il contenuto di un file - solo la possibilità di creare ed eliminare file.chmod 400 foo/bar
impedisce infatti di modificare il contenuto del file. Tuttavia , ciò non impedisce la modifica delle autorizzazioni di un file: il proprietario di un file può sempre modificare le autorizzazioni del suo file (supponendo che possano accedere al file, ovvero eseguire le autorizzazioni su tutte le directory degli antenati). In effetti, strace (1) rivela che questo è ciò che sta facendo vim (7.4.576 Debian Jessie) - vim chiama chmod (2) per aggiungere temporaneamente il permesso di scrittura per il proprietario del file, modifica il file e quindi chiama chmod ( 2) di nuovo per rimuovere il permesso di scrittura. Questo è il motivo per cui usandochattr +i
works - solo root può chiamarechattr -i
. Teoricamente, vim (o qualsiasi altro programma) potrebbe fare la stessa cosa con chattr come fa con chmod su un file immutabile se eseguito come root.
root
?
vim
realtà stia cambiando le autorizzazioni e poi rimettendolo.