Herkes için tam izinlere sahip ancak silinmesi imkansız bir dosya yapmak mümkün müdür?


Yanıtlar:


3

Deneyin:

chattr +i filename

Ancak bunu yapmak, dosyayı rootkullanıcı tarafından bile silinemez hale getirir - dikkatli kullanın.


5
bunu yaparken 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 .
Rinzwind

23

Hayır, bu mümkün değil. Normal kullanıcıların bir dosyayı silmesi imkansız: tabii.

  1. sudoKullanıcıların dosyaları silmesini önlemeniz gerekir . Yöneticiniz her zaman bir dosyayı silebilir.

  2. 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.


8

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.


Bu OP'nin istediği gibi görünüyor. ( Neden isteseler de, emin değilim.) Kullanıcılar dosyaları okuyabilir, değiştirebilir ve çalıştırabilir, ancak bunların bağlantısını kaldıramaz (kaldıramaz).
Eliah Kagan

8

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.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.