sudo hatası, mod 0777, 0440 olmalı


26

Ben sudo hataları alıyorum, bu hatayı nasıl düzeltirim?

sudo: /etc/sudoers is mode 0777, should be 0440
sudo: no valid sudoers sources found, quitting 

Kullanıcıların daha önce belirttiği gibi, sudoers.d / README dosyası yanlış chmod içerdiğinde "chmod 0440 / etc / sudoers" kullanarak.
kentfx

Sorun izinler açıkken /etc/sudoers.d/README, hatanın hala söyleyebileceğini sudo: /etc/sudoers is mode 0777, should be 0440mi söylüyorsunuz ?
Eliah Kagan

Yanıtlar:


26

İlk seçenek

Aşağıdaki Bu yayını :

  1. Bilgisayarı yeniden başlat
  2. GRUB açılış seçim ekranı göründüğünde, Kurtarma Modu'nu seçin. (Görünmüyorsa Shift, GRUB yükleyiciyi altta gördüğünüzde tuşuna basın ).
  3. Siyah bir terminal açılmalıdır, bu noktada bu komutu çalıştırabilirsiniz (root haklarına sahip olmalısınız):

    chmod 0440 /etc/sudoers
    

alternatif olarak

Ubuntu'yu bir LiveCD'ye yerleştirmeniz, LiveCD'ye önyüklemeniz, Ubuntu Bölümünüzü Sabit Sürücüye takmanız gerekir (Nautilus gibi bir dosya tarayıcısı açın ve Ubuntu Bölümünüzü tıklayın; veya Yerler -> "xxGB Bölümü / Ubuntu Bölümünüzü tıklayın; ").

Ardından, LiveCD oturumu içinde bir terminal açın ve şu iki komutu yazın:

cd /media/<name of permanent ubuntu partition>/etc
sudo chmod 0440 sudoers

Ekstra Sorunlar

Herhangi bir hata varsa (aşağıda belirtildiği gibi), hata istemini izleyin ve her dosyayı yukarıdaki iki adımdan birini kullanarak uygun şekilde ayarlayın:

sudo apt-get update sudo: /etc/sudoers.d/README, 0777 kipindedir, 0440 sudo olmalıdır: / var / lib / sudo sahibi olmayan (040777) tarafından yazılabilir, kip 0700 [sudo] şifresi için

İle takip ederek düzeltmek:

chmod 0440 /etc/sudoers.d/README
chmod 0700 /var/lib/sudo

Bu komutların her ikisi de yukarıda belirtilen adımlarla uygun şekilde kullanılmalıdır. Bu dosyayla ilişkili dosya izinlerini değiştirecekler. 0440 sahibine (root) ve grubun okuma izinlerini verirken, 0700 sahibine (root) izin verir, okur, yazar ve yürütür.


Sudo komutunu kullanabilirim ama sınırlı. sudo apt-get update sudo: /etc/sudoers.d/README is mode 0777, should be 0440 sudo: /var/lib/sudo writable by non-owner (040777), should be mode 0700 [sudo] password for
user20698

@Alex: ESC GRUB mirası için mi? GRUB2 için vardiyaya basılmalıdır.
Lekensteyn

@ user20698: birinciye ihtiyacınız yok sudo, ikincisi bir Live CD'den yapılmalı.
Lekensteyn

Eğer sudoers 0777 ise, sudolar chmod 0440 /etc/sudoersherkes tarafından yazılabilir olduğu için kullanıcı sudo olmadan çalışamaz mı?
Seppo Erviälä

2
@Seppo: hayır, sadece bir dosyanın sahibi dosya izinlerini değiştirebilir.
Lekensteyn

16

sudobu durumda bozulur, ancak pkexec( PolicyKit komut satırı ) yine de çalışır, böylece tek bir komutla düzeltebilirsiniz. Yeniden başlatma gerekmez.

pkexec chmod 0440 /etc/sudoers

Bu, PolicyKit'in kurulu olduğunu varsayar. Bu bir masaüstü sistemi ise (GUI'siz bir sunucu yerine).


4

Kurtarma moduna önyükleme yapın, kök kabuğunu seçin ve:

chmod 0440 /etc/sudoers

Veya yeniden başlatmak istemiyorsanız bu alternatifi kullanabilirsiniz:

pkexec chmod 0440 /etc/sudoers
pkexec chmod 0440 /etc/sudoers.d/README

izni değiştirecek. İşe yarayacak.


1
Neden chmodbazı dosyaları 440başkalarına veriyorsunuz 0440? 0440Düzgün kullanmamalısın ? Ve neden /etc/sudoers.d/READMEbu pkexecyolu kullandığınızda izinleri değiştiriyorsunuz ama başka türlü değil? Peki ya diğer olası dosyalar /etc/sudoers.d?
Eliah Kagan

1

Bu hataları almak için ne yaptınız?

  • Yaptıysanız: sudo chmod -R 777 /etcBunu onarmak için bir Live CD'ye ihtiyacınız var.

    1. Canlı CD'ye önyükleme yapın ve "Deneyin" i seçin
    2. Ubuntu bölümünüzü (veya ayrı bir bölüm /etceklerseniz içeren /etcbölümü) bağlayın. Bu, Nautilus veya Yerler menüsü gibi bir dosya tarayıcısı kullanılarak yapılabilir.
    3. Uygulamalar => Aksesuarlar => Terminal'e giderek bir Terminal açın
    4. Ubuntu bölümünüzün klasörünü belirlediğinizde, monte edilmiş bölümlerin içeriğini kullanarak listeleyebilirsiniz ls -l /media. Muhtemelen ubuntuya da adlandırılmış disk. Bir sonraki adımda farz edeceğim ubuntu.
    5. Terminal'de, varsayılan olarak kısıtlayıcı izinleri ayarlayın:

      sudo find /media/ubuntu/etc -type f -exec chmod g-wx,o-rwx {} \;
      sudo find /media/ubuntu/etc -type d -exec chmod g-w,o-rwx {} \;
      
    6. Sonra, dosya izinlerini geri yüklemek için Live CD'yi referans noktası olarak kullanın. Aşağıdaki komut , Live CD'deki klasörü referans noktası olarak /etc/media/ubuntukullanmak için dosya izinlerini değiştirecektir /etc. Yalnızca aynı dosya sistemindeki ( ) dosyalardaki ( -type f) ve dizinlerdeki ( -type d) izinleri değiştirir -xdev. ~/errors.log"Dosya bulunamadı" gibi hatalara yazılan hatalar, sistemdeki bir dosyanın yüklü olduğunu ancak Canlı CD'de bulunmadığını gösterir. 5. adımdaki komut bunun için doğru izinleri belirlemelidir, ancak en iyi sonucu elde etmek için paketleri yeniden yüklemelisiniz.

      cd /media/ubuntu && sudo find etc -xdev \( -type f -o -type d \) -f -exec chmod --reference=/{} {} \; 2>~/errors.log
      
    7. Artık güvenli bir ~/errors.logyerde ( http://paste.ubuntu.com/ gibi ), bu nedenle uygulamalarla ilgili herhangi bir sorun yaşarsanız bu cevaba yorum olarak ekleyebilirsiniz.

1

Ubuntu'da önce terminali açan Ctrl+ Alt+ tuşlarına basabilirsiniz T. Bundan sonra aşağıdaki komutu Ctrl+ Cile kopyalayıp yapıştırabilir ve Ctrl+ Shift+ ile uçbirime yapıştırabilirsiniz V.

pkexec chmod 0440 /etc/sudoers

0

Benim için bir adım daha eklemek zorunda pkexecöneri, başına bu , ben aptal bir hata yapınca 2 SSH oturumları gidiş var oldu ki şanslıydım:

  1. 2 terminal açın
  2. Terminal 2'de echo $$PID almak için çalıştırın
  3. pkttyagent --process PID_FROM_STEP2Terminal 2'de çalıştır
  4. Terminal 1'de, çalıştır pkexec chmod 0440 /etc/sudoers
  5. Benim durumumda da koşmam gerekiyordu pkexec chown root:root /etc/sudoers
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.