Ana dizimdeki root'a ait bir dosyayı neden root olmadan silebildim?


40

Bu yüzden bugün erken saatlerde sunucumda bir miktar bakım yapıyordum ve kök dizinine ait bir dosyayı silebildiğimi fark ettim.

Bir örneği çoğaltabildim:

[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 -rw-r--r--olmadığım halde root'a ait ve izinleri olan bir dosyayı nasıl silebilirim ?


6
Sen edebilirsiniz dosyaya noktaları bu dizine girişi kaldırmak Dizinde yazma erişimine sahip çünkü. Dosyayı mutlaka silemezsiniz; dosyanın başka bir yerde başka bir sabit bağlantısı olabilir.
user253751

2
Komik uzantı: Dosyayı yeniden adlandırabilir veya dosyalara bağlantılar oluşturabilirsiniz.
peterh Monica'yı

11
Geçerli bir düpedüz yanıltıcı, çünkü kabul cevap için seçiminizi tekrar gözden edin: edilir değil izin bu dizinin izinlerini temel içindeki içeriğini karınca için her şeyi .
Cthulhu

@Cthulhu Tamamlandı! Bu soru-cevap hakkındaki tüm yorumlarınız için herkese teşekkürler, burada kesinlikle çok faydalı bilgiler!
Carl Bennett,

Yanıtlar:


34

İzinler, içerik ve tüm nitelikler inode'un bir parçasıdır. İsim, dizin girişinde. İzinler yinelemeli olarak miras alınmaz (Posix ACL'lerde varsayılanı kullandığınız durumlar hariç).

Bir dosyayı sildiğinizde, dahili olarak dizin girişinden inode'a bir sabit bağlantı kaldırırsınız. Tüm sabit bağlantılar kaldırıldığında ve inode kullanılmadığında, dosya sistemi alanı geri alacaktır. Dosyada hangi izinlerin verildiğine bakılmaksızın (değişmeyen dahili izin hariç) klasöre yalnızca yazma iznine ihtiyacınız vardır. Boş bir klasör için aynı.

Boş olmayan bir klasörü sildiğinizde, sildiğiniz klasöre ve onun üst kısmına yazma izniniz gerekir.


1
Yani izinler inode üzerinde ya da izinler inode'un bağlantısı üzerinde ve ben sadece bu bağlantıyı kaldırıyorum (ve böylece ona giden tek bağlantı kaldırıldı, yani inode durdu).
Carl Bennett,

3
İzinler inode'da. Bu, bir dosyaya sert bir bağlantı oluşturarak, bunun üzerindeki izinleri değiştirerek ve ardından orijinalin üzerindeki izinleri kontrol ederek kolayca doğrulanabilir.
Wouter Verhelst

ama diyelim ki, her ikisi de köke ait bir dizin ve bir dosya var, bu dizin, kullanıcının sahip olduğu bir dizinde. Onları çıkaramazsın, değil mi?
njzk2

1
Ext2, ext3 ve ext4'e özgü bir özniteliktir. Örnek: sudo touch test_file;sudo chattr +i test_file;rm -f test_fileBkz:man chattr
Mircea Vutcovici 7:15

1
Immutable niteliği, bir dosyayı kökten bile olsa herhangi bir değişiklik için korur.
Mircea Vutcovici

19

Dizinin sahibi olduğunuzda, yönetmen izinlerine dayanarak, içeriğinde ve içeriğinde herhangi bir şey yapmanıza izin verilir. Bu nedenle, dosyaya sahip olmama rağmen, dosyayı barındıran dizine okuma / yazma izniniz olduğundan hala silebildiniz.


46
Tam olarak değil. Örneğin, OP bu köke ait dosyayı değiştiremez. Mesele şu ki, bir dosyayı silmek, dosya üzerinde bir işlem olarak kabul edilmez , bunun yerine dizinde (bir dosyaya göstericiyi kaldırmak) ve bu nedenle dizindeki izinler önemlidir.
Cthulhu

1
@Cthulhu böylece bir kök ait dosyayı silebilir ve daha sonra aynı ada sahip yeni bir değiştirilmiş dosya oluşturabilir misiniz?
KDEx

3
@Morgoroth evet yapabilirsin, ama bu artık aynı dosya olmazdı. Başka bir (belki de daha belirgin) bir örnek için, kökündeyse ve sadece sahibi okuyabilseydi, dizindeki dizini okuyamazdın.
Cthulhu

@ tinknght Bu açıklığa kavuşturulması gerekir. Anladığım kadarıyla, dosyaları varlık olarak manipüle etmeye çalıştığınızı anlıyorsunuz, ama bu kesin değil. Örneğin, içeriğini değiştiremezsiniz. Ve siz dizin izinlerini aşabilecek niteliklerden bahsetmiyorsunuz.
Mike S

1
@captcha Öncelikle vidosyayı geçici kopyaya kaydeder, sonra orijinal dosyayı siler ve kopyayı orijinalin içine (veya benzeri bir şey) yeniden adlandırır.
Cthulhu,
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.