Sudo kullanmadan, tercihen?
Sudo kullanmadan, tercihen?
Yanıtlar:
Deneyin:
chattr +i filename
Ancak bunu yapmak, dosyayı rootkullanıcı tarafından bile silinemez hale getirir - dikkatli kullanın.
touch test && chattr +i testbir hata atar; chattr: Operation not permitted while setting flags on test. Buna ihtiyacın var sudo. Bunun yanında: hala sudo chattr -i test && rm testçalışır : dosyayı silmek mümkündür .
Hayır, bu mümkün değil. Normal kullanıcıların bir dosyayı silmesi imkansız: tabii.
sudoKullanıcıların dosyaları silmesini önlemeniz gerekir . Yöneticiniz her zaman bir dosyayı silebilir.
sudo chattr +i testsilmeyi önleyebilir ancak gerektirir sudo. Basit bir sudo chattr -i testdosya kaldırmak mümkün kılar. Yönetici dışında hiçbir kullanıcı kullanamaz chattr.
Ve ... sadece yeniden başlatma ve kurtarma moduna geçme, o kişinin bu dosyayı silmesine izin verecektir. Bir dosyayı asla silememek için bir yöntem olsaydı bir güvenlik riski olurdu.
Biraz kaba, ama bu yakın - dizindeki yazma erişimini kaldırırsanız içindeki dosyalar silinemez. Ve sahibi sudoolmanız gerekmiyor :
=^_^= izkata@izein:~$ mkdir test
=^_^= izkata@izein:~$ touch test/delme
=^_^= izkata@izein:~$ chmod a-w test
=^_^= izkata@izein:~$ echo 'Hello' > test/delme
=^_^= izkata@izein:~$ cat test/delme
Hello
=^_^= izkata@izein:~$ rm test/delme
rm: cannot remove `test/delme': Permission denied
Böylece dosyanın kendisinde izinleri istediğiniz gibi ayarlayabilirsiniz.
Ayrıca, @Rinzwind tarafından belirtildiği gibi, çevresinde kesinlikle birçok yol vardır.
Bir dosyayı silmek için, dosyanın bağlı olduğu tüm dizinlere yazma izniniz olmalıdır. Bir dizinden bağlantısını kaldırmak için o dizine yazma izniniz olmalıdır.
Dosyaya yazma izni (veya sahiplik) verdiğiniz, ancak dosyanın bağlı olduğu dizine veya dizinlere vermediğiniz sürece, bu dosya silinemez.
Bunu başarmanın en iyi yolu, bu dosyayı root'a ait olan ve hiç kimse tarafından yazılamayan bir dizine bağlamaktır. Bunun yerine size ait olabilirsiniz, bu da hem sizin hem de kökünüzün silebileceği anlamına gelir.
Bu, yine de diğer kullanıcıların bu dosyayı diğer dizinlere bağlamasına ve daha sonra oradan bağlantısını kaldırmasına izin verir, ancak yine de dosyayı kendi dizininizle olan bağlantısını kaldırabileceklerinden silemezler.
Bunun tam olarak çalışması için her yol bileşeninin dosyaya yazma izninin kontrol edilmesi gerektiğini unutmayın. Örneğin dosya olup olmadığı Çünkü /a/b/the-fileve sahip /a/bherkes tarafından yazılabilir değil ama herkes yazma erişimi vardır /a, o zaman adlandırmak olabilir /a/bbaşka bir şey ve kendi yeniden /a/bve kendi yaratmak /a/b/the-fileorada.