Soru Neden “chmod -R 777 /” yıkıcıdır?


Bu bir Kanonik Soru Dosya İzin ve hakkında Niye ya 777 "yıkıcıdır".

Bu sorunun nasıl giderileceğini sormuyorum, zira Sunucu Arızası'nda (işletim sistemini yeniden yükleme) zaten bir ton referans var. Neden herşeyi yıkıcı yapar?

Bu komutu çalıştırdıysanız hemen işletim sisteminizi tahrip edersiniz. Kısıtlamaların kaldırılmasının neden varolan süreçler üzerinde herhangi bir etkisi olduğu açık değil. Örneğin, eğer bir şeye okuma izni alamıyorsam ve terminalde hızlı bir yanlış tipten sonra aniden erişimim var ise ... Linux neden kırılabilir?


247
2018-02-28 21:25


Menşei


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


Cevaplar:


Öncelikle küçük bir terminoloji nitpick: chmod değil Kaldır izinleri. O DEĞİŞİKLİKLER onlar.


Şimdi sorunun eti - Mod 777 "Herkes bu dosyayı okuyabilir, yazabilir veya çalıştırabilir" anlamına gelir - Sizin verilen izin Herkes istediği heck ne olursa olsun (etkili) yapmak.

Şimdi, neden bu kötü?

  1. Herkesin sisteminizdeki her dosyayı okumasına / değiştirmesine izin verdiniz.
    • Parola güvenliği güle güle (herkes gölge dosyasını okuyabilir ve şifrelerinizi bozabilir, fakat neden rahatsız olur? Sadece parola değiştir! Çok daha kolay!).
    • İkili vedalarınız için güvenliği öpün (birisi sadece yeni yazabilir) login her zaman onları sağlayan program.
    • Dosyalarını sakla güle güle: Bir kullanıcı yanlış yönlendiriyor rm -r / ve her şey bitti. OS onlara istediklerini yapmalarına izin verildi!
  2. Başlamadan önce dosyalardaki izinleri kontrol eden her programı kızdırdınız.
    sudo, sendmailve diğerlerinin bir başkası artık başlamayacak. Anahtar dosya izinlerini inceleyecekler, görmeleri gereken şey değiller ve bir hata mesajını geri gönderiyorlar.
    benzer şekilde ssh korkunç şekilde kırılacak (anahtar dosyaların belirli izinleri olmalıdır, aksi halde "güvensiz" ve varsayılan olarak SSH bunları kullanmayı reddeder.)
  3. Onları içeren programlarda setuid / setgid bitlerini sildiniz.
    Mod 777 aslında 0777. Bu önde gelen basamaktaki şeyler arasında setuid ve setgid bit.
    Setuid / setgid olan programların çoğu, belirli ayrıcalıklarla çalışacakları için bu bit kümesine sahiptir. Şimdi kırılmışlar.
  4. Sen kırdın /tmp ve /var/tmp Sıfırlanan bu önde gelen sekizlik basamaktaki diğer şey ise sticky bit - Bu dosyaları korur /tmp (ve /var/tmp) sahip olmayan kişiler tarafından siliniyor.
    Orada (ne yazık ki) orada bir sürü yaparak "temiz" bir sürü kötü davranışlı betik var. rm -r /tmp/*ve yapışkan bit olmadan /tmp  Bu dizindeki tüm dosyaları veda edebilirsiniz.
    Kazıma dosyalarının kaybolması, bazı kötü yazılı programları üzüyor olabilir ...
  5. Sen hasara sebep oldun /dev  /proc ve benzer dosya sistemleri
    Bu daha eski Unix sistemlerinde daha fazla sorun /devgerçek bir dosya sistemidir ve içerdiği öğeler özel dosyalardır mknodizin değişiklikleri yeniden başlatmalar arasında korunacağından, ancak cihazınızın izinlerinin değişmesini gerektiren herhangi bir sistemde, bariz güvenlik risklerinden (herkes 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. Soketler ve Borular kırılabilir veya başka problemler olabilir Soketler ve borular tamamen kırılabilir veya dünya tarafından yazılabilir hale gelmesi nedeniyle kötü niyetli enjeksiyona maruz kalabilir.
    Credit to @Tonny for pointing out this possibility
  7. Sisteminizde her dosyayı yürütülebilir durumda yaptınız
    Bir çok insan var . onların içinde PATH ortam değişkeni (yapmamalısınız!) - Bu, hoş olmayan bir şaşkınlığa neden olabilir. make veya lsve onların zararlı kodlarını çalıştırmanızı sağlayan bir şansınız var.
    Credit to @RichHomolka for pointing out this possibility
  8. Bazı sistemlerde chmod Erişim Kontrol Listelerini (ACL) sıfırlar
    Bu, tüm ACL'leri yeniden oluşturmanın yanı sıra, her yerde izinleri düzeltmeye (ve komutun gerçek bir örneğidir) zarar verebileceğiniz anlamına gelir.
    Credit to @JamesYoungman for pointing out this possibility

Çalışmakta olan sistem parçaları çalışmaya devam edecek mi? Muhtemelen, en azından bir süreliğine.
Ama bir dahaki sefere bir programı başlatmanız veya bir servisi yeniden başlatmanız gerekiyorsa veya cenneti koruyunuz. Yolsuzluk dolu bir dünyaya attığınız kutuyu REBOOT, yukarıdaki # 2 ve # 3 gibi çirkin kafalarını geri getirecektir.


335
2018-02-28 21:46



En azından bazı sistemlerde /tmp yeniden başlatıldıktan sonra giderilecek. Her şey çok şey kırılmış gibi görünüyor olsa da. En azından VM'de test ettim, bir yeniden başlatma düzeltildi. /tmp izinleri. Bir yerde başlangıç ​​betiğinde bir şeyler olmalı. - Zoredache
Kullanan @Zoredache Sistemleri tmpfs genellikle kendilerini düzeltin, diskte / tmp olanları Mayıs ayı (başlangıç ​​betiklerine göre değişir) - voretaq7
Bu setuid ve setgid'in ortadan kaldırılacağını belirtmek için +1. Bu oldukça yıkıcı bir özellik. Koşmayı dene find / -perms -4000 -type f ve find / -perms -2000 -type f Bu bayraklara dayanan çeşitli ikili dosyaları görmek için. - Kyle Smith
"Daha az foo.txt" gibi bir şey yazarak, çalıştırılan bitin ne olduğuna bakılmaksızın etrafı daha az yer alan bir dosya çalıştırmayacaktır. Yolunuzda less.txt dizininin olması ve "less.txt foo.txt" yazmanız gerekir - gerçekten de yanlışlıkla bir şey değil. Kabuk tamamlama işlemini kullanmış olsanız bile, daha az durur ve yine de .txt eklemeniz gerekir. Rastgele bir metin dosyasını yürütülebilir bit setiyle çağırmak için ./nameoffile.txt. - The Real Bill
@Deji everyone dosya sahibi olan kullanıcı, dosyanın sahibi olan gruptaki kullanıcılar ve bu ölçütlerden herhangi birini karşılamayan kullanıcılar (tam anlamıyla üç sekizlik izin basamağı) kümesi olarak tanımlanır: User, Group, ve Other). Diğer bir deyişle Sisteme erişen herhangi bir kullanıcı. (“Access”, bu bağlamda bir kabuk hesabı olabilir, normalde bunu nasıl ele alacağım, ama aynı zamanda diske veri yazan bir web formu / CGI aracılığıyla erişimi de içerir: www Kullanıcı artık sistemdeki herhangi bir dosyaya yazabilir, bu da rastgele ziyaretçilerin de yapabileceği anlamına gelir.) - voretaq7


Önemli bir şey, anahtar yapılandırma dosyaları için dosya sistemi izinlerini kontrol eden ssh / sudo gibi birçok araç olmasıdır. İzinler yanlışsa, bu araçlar ciddi bir güvenlik sorununa işaret edeceğinden başarısız olacak şekilde tasarlanmıştır. Debian test sistemimde ve belki de diğerlerinde, oturum açma yeteneği başarısız olabilir, büyük olasılıkla PAM'de oturum açma ikili veya bir şey izin kontrolleri vardır.

Yani, sistemin yok edilmesi gerçekten de değil - bu izinler yanlış olduğunda birçok araç derhal başarısız olacak şekilde tasarlandı.

Bir sistemi yaptıktan sonra sistemi yeniden başlatırsanız chmod 777 -R / önyükleme yapar ve açık izin denetimleri olmayan işlemleri başlatabilirsiniz. Yani sistem gerçekten ölü değil, biraz kullanışsız tasarımdan kaynaklanan.


100
2018-02-28 21:33