“Chmod -R 777 /” neden yıkıcı?


255

Bu, Dosya İzni ve Neden 777'nin “yıkıcı” olduğuna dair Kanonik bir Soru .

Zaten Sunucu Hatası üzerinde bir referanslar olduğundan, bu sorunu nasıl çözeceğimi sormuyorum (işletim sistemini yeniden yükleyin). Neden yıkıcı bir şey yapıyor?

Bu komutu hiç çalıştırdıysanız, işletim sisteminizi hemen yok edersiniz. Kısıtlamaları kaldırmanın neden mevcut işlemler üzerinde herhangi bir etkisi olduğu net değilim. Örneğin, eğer bir şeye okuma erişimim yoksa ve terminaldeki ani bir yanlış yazımdan sonra aniden erişebiliyorum, bu neden Linux'un kırılmasına neden oluyor?


2
Bu soruyu gördüğümde nefesimi tutuyorum.
Alireza Savand

Yanıtlar:


344

Bütün küçük terminoloji nitpick Öncelikle: chmodgelmez kaldırmak izinleri. O DEĞİŞİKLİKLER onları.


Şimdi konunun etleri - Bu mod 777"Herkes bu dosyayı okuyabilir, yazabilir veya çalıştırabilir" anlamına gelir - İstediğiniz hallerde herhangi bir kimsenin (etkili) yapmasına izin verdiniz .

Şimdi, bu neden kötü?

  1. Herkesin sisteminizdeki her dosyayı okumasına / değiştirmesine izin verdiniz.
    • Şifre güvenliği elveda öpücüğü (herkes gölge dosyasını okuyabilir ve şifrelerinizi kırabilir, ancak neden rahatsız ediyor? Sadece şifreyi DEĞİŞTİR! Çok daha kolay!).
    • İkili dosyalarınız için güvenliği öpün (birisi loginher zaman onlara izin veren yeni bir program yazabilir ).
    • Dosyalarınızı elveda öpücüğü: Bir kullanıcı yanlış yönlendirir rm -r /ve hepsi biter. İşletim sistemine istediklerini yapmalarına izin verildi!
  2. Başlamadan önce dosyalardaki izinleri kontrol eden her programı kızdırdınız.
    sudo, sendmailve başkalarının ana bilgisayarı artık başlamaz. Anahtar dosya izinlerini inceleyecekler, olması gerektiği gibi olmadıklarını görecekler ve bir hata mesajını geri alacaklardır.
    Benzer şekilde sshkorkunç kırılacak (anahtar dosyaların belirli izinleri olması gerekir, aksi takdirde "güvensiz" olurlar ve varsayılan olarak SSH bunları kullanmayı reddeder.)
  3. Setuid / setgid bitlerini, kendilerine ait olan programlarda sildiniz.
    Bu mod 777aslında . Bu basamaktaki şeyler arasında ve bitleri bulunur. Setuid / setgid programlarının çoğu, belirli ayrıcalıklarla çalışması gerektiğinden, bu bit setine sahiptir. Şimdi kırıldılar.0777setuidsetgid
  4. Sen kırdım /tmpve/var/tmp zero'd aldık lider sekizlik rakam diğer şeydir sticky bit- dosyaları koruyan Yani /tmp(ve /var/tmponlara sahip olmayan kişiler tarafından silinmesini).
    (Maalesef) bir sürü kötü davranış sergileyen senaryo var, bir "yaparak" temizler " rm -r /tmp/*ve üzerine yapışmış yapışkan bir bit olmadan /tmp o dizindeki bütün dosyaları öpebilirsin.
    Kazıma dosyalarının silinmesi kötü yazılmış bazı programları gerçekten üzebilir ...
  5. Bu /dev /procve benzeri dosya sistemlerinde hasara neden oldunuz.
    Bu, /devgerçek bir dosya sistemi olan eski Unix sistemlerinde daha fazla sorun teşkil ediyor ve içerdiği öğeler mknod, izinler değişikliği yeniden başlatmalar arasında korunacağından, ancak herhangi bir sistemde oluşturulmuş özel dosyalardır. Cihazınızın izinlerinin değişmesi, bariz güvenlik risklerinden (herkes her TTY'yi okuyabilir) bir çekirdek panikinin daha az belirgin potansiyel nedenlerine kadar önemli sorunlara neden olabilir.
    Credit to @Tonny for pointing out this possibility
  6. Prizler ve Borular kırılabilir veya başka sorunlar yaşayabilir Prizler ve borular tamamen kırılabilir veya dünyaca yazılabilir hale gelmesi sonucu kötü amaçlı enjeksiyonlara maruz kalabilir.
    Credit to @Tonny for pointing out this possibility
  7. Sisteminizde her dosya çalıştırılabilir yaptık
    insanların sahip bir sürü .kendi içinde PATHortam değişkeni (yapmamalısın!) - Bu şimdi hoş olmayan bir sürpriz neden olabilecek kimse elverişli bir komuta gibi adında bir dosya açılır (diyelim edebilir makeya lsve Kötü niyetli kodlarını çalıştırman için sana bir şans ver.
    Credit to @RichHomolka for pointing out this possibility
  8. Bazı sistemlerde chmodErişim Kontrol Listelerini (ACL'ler) sıfırlar.
    Bu, her yerde izinleri sabitlemenin yanı sıra tüm ACL'lerinizi yeniden oluşturmak zorunda kalacağınız anlamına da gelir (ve yıkıcı komutun gerçek bir örneğidir).
    Credit to @JamesYoungman for pointing out this possibility

Sistemin çalışmakta olan parçaları çalışmaya devam edecek mi? Muhtemelen, en azından bir süre için.
Ancak bir dahaki sefere bir program başlatmanız, bir servisi yeniden başlatmanız veya cenneti yasaklamanız gerektiğinde, yukarıdaki # 2 ve # 3 çirkin kafalarını etkileyeceği için bir zarar dünyası için bulunduğunuz kutuyu yeniden başlatmayı yasaklayın.


1
En azından bazı sistemlerde /tmpbir yeniden başlatmadan sonra sabit olacaktır. Yine de her şey çok şey kırılmış gibi görünüyor. En azından VM'de henüz test ettim, yeniden başlatma işlemi /tmpizinleri sabitledi . Başlangıç ​​betiğinde bir yerde bir şeyler olmalı.
Zoredache,

@Zoredache tmpfsGenellikle kendi kendilerini düzelten sistemler , diskte / tmp bulunanlar (başlangıç ​​komut dosyalarına bağlı olarak değişebilir )
voretaq7

45
Setuid ve setgid öğelerinin ortadan kaldırılacağına işaret etmek için +1. Bu çok yıkıcı bir özellik. Deneyin çalışan find / -perms -4000 -type fve find / -perms -2000 -type fbu bayrakların itimat çeşitli ikilileri görmek için.
Kyle Smith

2
"Less foo.txt" gibi bir şey yazmak, yürütülebilir bitin ne olduğuna bakmaksızın less.txt adlı bir dosyayı çalıştırmaz. Dizininizde less.txt dizininizin olması ve "less.txt foo.txt" yazmanız gerekir - orada gerçekten kazara olan bir şey değil. Kabuk tamamlamayı kullanıyor olsanız bile daha az durur ve yine de .txt eklemeniz gerekir. Yürütülebilir bit kümesiyle rastgele bir metin dosyasını çağırmak için ./nameoffile.txt dosyasına ihtiyacınız olacaktır.
Gerçek Bill,

3
@Deji everyone(: tam anlamıyla üç sekizlik izin basamak bu kriterlerden birini yerine getirmeyen dosyanın sahibi gruptaki kullanıcılar ve kullanıcılar, dosyanın sahibi kullanıcı dahil setin birlik olarak tanımlanmaktadır User, Groupve Other). Başka bir deyişle , sisteme erişimi olan herhangi bir kullanıcı . (Bu bağlamda "Erişim", normalde nasıl hitap edeceğimi gösteren bir kabuk hesabı olabilir, ancak diske veri yazan bir web formu / CGI aracılığıyla da erişimi içerir: wwwKullanıcı, sistemdeki herhangi bir dosyaya yazabilir. , bu da rastgele ziyaretçilerin de yapabileceği anlamına geliyor.)
voretaq7

102

Önemli bir şey, anahtar yapılandırma dosyaları için dosya sistemi izinlerini kontrol eden ssh / sudo gibi birçok araç bulunmasıdır. Eğer izinler yanlışsa, bu araçlar ciddi bir güvenlik problemini göstereceğinden başarısız olacak şekilde tasarlanmıştır. Debian test sistemimde ve belki de başkalarında, giriş yapabilme özelliği başarısız oluyor, çünkü muhtemelen giriş ikili dosyası veya PAM'deki bir şey izin kontrollerine sahip.

Bu nedenle sistemin gerçekten tahrip olması pek mümkün değil - birçok araç izinler yanlış olduğunda derhal başarısız olacak şekilde tasarlandı.

Bunu yaptıktan sonra bir sistemi yeniden başlatırsanız chmod 777 -R /, önyükleme yapılır ve açık izin kontrolleri olmayan işlemleri başlatabilirsiniz. Yani sistem gerçekten ölü değil, sadece biraz kullanılamaz şekilde yan yana tasarım .

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.