Soru Kök olmadan, kök dizinine sahip bir dosyayı root olmadan silmek neden mümkün oldu?


Bu yüzden, daha önce sunucumda bir miktar bakım yapıyordum ve ev dizinimde root'a ait bir dosyayı sildiğimi fark ettim.

Bir örnek ürettim:

[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x.  2 cbennett cbennett 4096 Oct  5 20:59 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct  5 20:58 ..
-rw-rw-r--.  1 cbennett cbennett    0 Oct  5 20:58 my-own-file
[cbennett@nova ~/temp]$ sudo touch file-owned-by-root
[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x.  2 cbennett cbennett 4096 Oct  5 21:00 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct  5 20:58 ..
-rw-r--r--.  1 root     root        0 Oct  5 21:00 file-owned-by-root
-rw-rw-r--.  1 cbennett cbennett    0 Oct  5 20:58 my-own-file
[cbennett@nova ~/temp]$ rm file-owned-by-root
rm: remove write-protected regular empty file ‘file-owned-by-root’? y
[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x.  2 cbennett cbennett 4096 Oct  5 21:00 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct  5 20:58 ..
-rw-rw-r--.  1 cbennett cbennett    0 Oct  5 20:58 my-own-file
[cbennett@nova ~/temp]$

Sorum şu: root tarafından sahip olunan ve izinlere sahip olan bir dosyayı nasıl silebilirdim? -rw-r--r--ben root olmasa da?


38
2017-10-05 21:07


Menşei


Yapabilirsin dosyayı işaret eden dizindeki girişi kaldırın. çünkü dizine yazma erişiminiz var. Dosyayı mutlaka silemezsiniz; Dosya başka bir yerde başka bir sabit bağlantı olabilir. - immibis
Komik eklenti: ayrıca dosyayı yeniden adlandırabilir ya da sabit bağlantıları yapabilirsiniz. - peterh
Lütfen kabul edilen cevap için seçiminizi tekrar gözden geçirin, çünkü mevcut olanı yanıltıcıdır: değil izinli Yönetmenin izinlerine göre içeriğin içine herhangi bir şey yapmak. - Cthulhu
@ Cthulhu Bitti! Bu soru ve cevapların tüm yorumları için herkese teşekkürler, kesinlikle burada çok yararlı bilgiler! - Carl Bennett


Cevaplar:


İzinler, içerik ve tüm özellikler inode'un bir parçasıdır. İsim dizin girişinde. İzinler, yinelemeli olarak devralınmaz.

Bir dosyayı sildiğinizde, dahili olarak sadece sabit bağlantıyı dizin girişinden inode'a çıkarırsınız. Tüm sabit bağlantılar kaldırıldığında ve inode kullanılmadığında, dosya sistemi alanı yeniden kazanacaktır. Dosyada hangi izinler ayarlanırsa yapılsın (yalnızca değişmez ek izin hariç) sadece klasörde yazma iznine ihtiyacınız var. Boş bir klasör için aynı.

Boş olmayan bir klasörü sildiğinizde, sildiğiniz klasörde ve ebeveyninde yazma iznine ihtiyacınız vardır.


32
2017-10-05 22:30



Bu nedenle izinler inode'da veya izinler bağlantıda inode'a ve ben sadece bu linki kaldıracağım (ve böylece tek link kaldırılır, böylece inode ortadan kalkar). - Carl Bennett
İzinler inode'da. Bu, bir dosyaya sabit bir bağlantı oluşturarak, buradaki izinleri değiştirerek ve sonra da orijinaldeki izinleri denetleyerek kolayca doğrulanır. - Wouter Verhelst
fakat diyelim ki, hem root'a ait bir dizin hem de bir dosya var, dizinin kullanıcı tarafından sahip olunan bir dizinde var. Onları kaldıramazsın, değil mi? - njzk2
Ext2, ext3 ve ext4'e özgü bir özelliktir. Örnek: sudo touch test_file;sudo chattr +i test_file;rm -f test_file Görmek: man chattr - Mircea Vutcovici
Ölümsüz öznitelik, kökten bile olsa değişiklik için bir dosyayı korur. - Mircea Vutcovici


Dizinin sahibi olduğunuzda, ona ve onun içindeki içeriğe yönetmenin izinlerine bağlı olarak herhangi bir şey yapmanıza izin verilir. Bu nedenle, dosyanın sahibi olmamasına rağmen, dosyanın bulunduğu dizine okuma / yazma izni aldığınız için onu silebildiniz.


19
2017-10-05 21:10



Tam olarak değil. Örneğin, OP bu root'a ait dosyayı değiştiremez. Sorun şu ki, bir dosyayı silmek değil dosyada bir işlem olarak değil, dizinde (bir dosyaya işaretçiyi kaldırılıyor) düşünüldü ve bu nedenle dizindeki izinler önemliydi. - Cthulhu
@Cthulhu bir kök dosya silebilir ve sonra aynı adı ile yeni bir değiştirilmiş birini oluşturabilirsiniz? - KDEx
@Morgoroth evet yapabilirdiniz, ancak bu artık aynı dosya olmaz. Başka bir (belki daha açık olan) bir örnek için, kök dizinine aitse ve yalnızca sahibinin okuyabileceği bir dosyayı dizinde okuyamazsınız. - Cthulhu
@inetknght Bu açıklığa kavuşturulmalıdır. Dosyaları kendileri gibi manipüle etmeye çalıştığınızı anlıyorum, ama bu net değil. Örneğin, içeriğini değiştiremezsiniz. Ve dizin izinlerini kolayabilecek niteliklerden bahsetmiyorsunuz. - Mike S
@captcha Çünkü vi dosyayı önce geçici kopyaya kaydeder, daha sonra orijinal dosyayı siler ve kopyayı orijinaline (veya benzeri bir şeye) yeniden adlandırır. - Cthulhu