Etc dizinindeki bir chmod'u nasıl geri alabilirim?


9

Yanlışlıkla etc dizininde aşağıdaki komutu yürüttüm:

sudo chmod -R 700 /etc

Çok yanlış bir şey yaptığımı biliyorum. Terminalim şimdi yazdırıyor:

I have no name!@ubuntu: /$

Etc dizinimi önceki durumuna nasıl geri döndürebilirim?

İzinleri değiştirmeyi denedim ama şimdi başarısız oluyor. Ayrıca, birisinin bu komutu çalıştırdığımda aslında neyin yanlış gittiğini açıklayabilirse çok yararlı olacaktır. O zaman neden tüm sistem tamamen patlamış görünüyor? Neden şu anda hiçbir giriş şifresi çalışmıyor? Ben vb dizininde kullanıcılar ile ilgili bir dosya olduğunu biliyorum. Ancak değişen izinler her şeyi nasıl tehlikeye attı? Bununla ilgili bazı teknik detaylar çok yardımcı olacaktır.


3
ls -laRBaşka bir çalışan sistemden bir dizin listelemesine ( ) ihtiyacınız var . Hangi versiyonun senin? Dizinleri 755 ve ve dosyaları 644 olarak değiştirebilirsiniz, ancak bazılarının farklı modları olmalıdır (/ etc / shadow gibi).
ott--

4
Yazdığınızda sudo, kafamda "Güvenlik ağı olmadan sistemime üstün bir güç veriyorum, ne yaptığımı biliyor muyum? Demek istediğimi yazdığımdan emin miyim?" dönüş düğmesine basmadan önce.
msw

1
Bir çalışma sistemi ile kullanabileceğiniz find /etc -type d ! -perm 755 -exec ls -ld {} \;ve find etc -type f ! -perm -644 -exec ls -l {} \;standart dışı modlarıyla dizinleri ve dosyaları bulmak için. Debian'da sadece 2 dizin ve 39 dosya
ott--

"Ancak izinleri değiştirmek her şeyi nasıl tehlikeye attı?" - bu dosyaları okumak için gereken bazı şeylerin artık bu dosyaları okuma izni yok.
user253751

Yanıtlar:


15

Bir şey ters gitti: sudobu komutla kullanımı. -RAnahtar söyler chmodbu başıma kez (ne yaptığını bilmiyorsanız ben: yinelemeli her durumda olduğunu dizinde, olmayan bir tavsiye eylem (sapkınlık diyoruz olmalı) izinleri ayarlamak için komutu vermedi, ancak hatalı bir GUI yaptı ve sistemim kablolamaya gitti).

Yalnızca dosya izinleriydi. O zaman neden tüm sistem tamamen patlamış görünüyor?

GNU / Linux, kararlılık ve güvenlik göz önünde bulundurularak oluşturulduğu için dosya izinlerine çok duyarlıdır . Aynı durum GNU / Linux'ta çalışan çoğu program için de geçerlidir (yani apache2kök ayrıcalıklarını ve kullanımlarını www-dataveya benzer bir kullanıcıyı bırakır ve 700izniniz kendi dosyalarını okumasına / yazmasına izin vermez).

Neden şu anda hiçbir giriş şifresi çalışmıyor?

Daha önce de belirttiğiniz gibi, giriş şifreleri bir dosyada saklanır /etc/passwdve sadece kök (bunu değiştirmediniz varsayıyorum) okuyabilir, ancak giriş istemi (veya GUI girişi) bir ayrıcalık olmayan hesap kullanır, bu nedenle okuyamaz dosya.

Ancak değişen izinler her şeyi nasıl tehlikeye attı?

Yukarıda söylendiği gibi, Linux dosya izinlerine çok duyarlıdır. Bazı programlar, yapılandırma dosyalarının izinlerini bile kontrol eder ve beklenmediklerinde hiç çalışmazlar.

Etc dizinimi önceki durumuna nasıl geri döndürebilirim?

RPM tabanlı bir dağıtım kullanıyorsanız, bu rpm --setpermskomut kullanılarak yapılabilir , Debian benzeri sistemde apt-get --reinstall installarkadaşlarınız tek tek paketleri acıyla geri döndürür . Başka çözümler de bulunabilir, ancak bunun için bir çalışma sistemine ihtiyaç duyabilir.


5

Bakalım, yaptığınız şey tüm / etc dizinindeki izinleri okuma / yazma / yürütme olarak yalnızca dosyanın / dizinin sahibi için izin verildi, diğer herkes için reddedildi. Dosya izinleri konusunda kafanız karıştıysa, Wikipedia: Geleneksel UNIX izinleri hakkında daha fazla bilgi edinebilirsiniz .

Sisteminizi havaya uçurmanızın nedeni, birçok işlemin artık ayarlarını okuyamaması, / etc'ye erişememesidir. Tüm / etc dizinini önceki durumuna getirmek kolay olmayacaktır. Bunu nasıl yapacağınız dağıtımınıza bağlı olacaktır, ancak temelde / etc içindeki herhangi bir dosyayı içeren her paketi yeniden yüklemek anlamına gelir.

Sistemi kullanabilmeniz için hızlı bir bant yardımı olarak, düzgün bir şekilde düzeltmek için (yukarıda belirtilen / etc içindeki içeriklere sahip tüm paketleri yeniden yüklemek için) şunları yapabilirsiniz:

    # sudo find /etc -type d -exec chmod 775 '{}' \;
    # sudo find /etc -type f -exec chmod 664 '{}' \;

Bu iki satırla, sahip / grup için okuma / yazma izni ve diğer herkes için okuma izni ile tüm / etc dizininde liberal izinler ayarlayacaksınız. İki chmodun nedeni, yürütme bitini sadece dirs üzerine ayarlamaktır. Bazı işlemler / etc içindeki yürütülebilir dosyalar da dahil olmak üzere şikayetçi olur veya başarısız olur, ancak yukarıda özetlediğim yeniden yüklemeyi yapabilmeniz gerekir.

Lütfen sisteminizin en azından güvensiz bir durumda olacağı orijinal izinleri geri alana kadar dikkat edin.


2
Ayrıca, bazı programlar çalışmaz; Örneğin SSH, belirli dosyalarda kısıtlayıcı izinler gerektirir. /etc/sudoersbaşka.
Mel Boyce

1
Ancak bazı dosyalar /etcdünya çapında okunabilir hale getirilmemelidir! Yedeklerden geri yükleyin, bu yüzden onlara sahipsiniz (veya bu yüzden insanlar sizi yedeklemeye çağırıyor).
tripleee

0

700, gruplar ve dünya kullanıcıları için birçok dosyaya erişimi kaldırmıştır (örneğin, dosyaların artık rwx------izinleri vardır). Örneğin, tüm kullanıcıların okuyabilmesi gerekir /etc/passwd. Kurulumunuzla artık yalnızca kök okuyabilir /etc/passwd. Dosyalardaki izinleri /etc/öngörülemeyen yollarla kırırsanız birçok şey bozulur.

Çalışan bir sunucuya dayalı olarak izinleri (yine de root'a geçebileceğinizi varsayarak) yeniden oluşturmayı deneyebilirsiniz, ancak bu hataya yatkındır.

/etc/Varsa yedeklemeden geri yüklemenizi öneririm (geri yüklemenin izinleri geri aldığından emin olun veya yedekleme çözümünüz destekliyorsa, yalnızca izinleri geri yükleyin).

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.