Giriş yaparken aşağıdakileri yapabilirim:
mkdir foo
touch foo/bar
chmod 400 foo/bar
chmod 500 foo
Sonra vim'i açabilirim (değil root
), düzenlerim bar
, yazmaya zorlarım w!
ve dosya değiştirilir.
İşletim sisteminin herhangi bir dosya değişikliğini reddetmesini nasıl sağlayabilirim?
GÜNCELLEME Mar 02 2017
chmod 500 foo
kırmızı bir ringa balığıdır: bir dizindeki yazma izninin bir dosyanın içeriğini değiştirme yeteneği ile ilgisi yoktur - yalnızca dosya oluşturma ve silme yeteneği.chmod 400 foo/bar
Aslında dosyanın içeriğinin değişmesini engeller. Ama , bu yok değil bir dosyanın sahibi her zaman (hepsi atası dizinlerde çalıştırma izni yani dosyaya erişebilir varsayarak) onun dosyanın izinleri değiştirebilir - değiştirip bir dosyanın izinlerini engeller. Aslında, strace (1) vim'in (7.4.576 Debian Jessie) yaptığı şeyin bu olduğunu gösteriyor - vim, dosyanın sahibinin yazma iznini geçici olarak eklemek için chmod'u (2) çağırıyor, ardından dosyayı değiştiriyor ve ardından chmod'u çağırıyor ( 2) tekrar yazma iznini kaldırmak için. Bu yüzdenchattr +i
eserleri kullanmak - sadece root çağırabilirchattr -i
. Teorik olarak, vim (veya herhangi bir program), root olarak çalıştırıldığında değişmez bir dosya üzerinde chmod ile yaptığı gibi chattr ile aynı şeyi yapabilir.
root
?
vim
, aslında izinleri değiştirip geri koyulduğuna inanıyorum .