“Chmod -R 777 / usr / bin” den sonra sudo nasıl düzeltilir?


15

Girdiğim chmod -R 777 /usr/binve şimdi sudo çalışmıyor.

Diyor sudo must be setuid root.

Bazı tavsiyeler çevrimiçi çalıştırmak söyledi chown root:root /usr/bin/sudo chmod 4755 /usr/bin/sudo.

Girerken chown root:root /usr/bin/sudobir gösterir opened in readonly modehata.


1
Bu komutları çalıştırmak için root olmalısınız

Manoj Kumar: Did cevabım yöntemi (siz kabul olarak işaretlediğiniz) sizin için bu sorunu çözmek? Damien Roche ve Oli'nun yorumladığı gibi, bir komut başarıyla tamamlandıktan sonra bu yöntemin gerçekten çalışmadığına ikna oldum . Gibi , çalışmak için kök setuid olmalıdır. (Neden polkit hizmetini kullandığından emin değilim , ama işe yarıyor .) Ancak, sanırım diğer insanlar bunun onlar için işe yaradığını söylediğini duydum, ki bu meraklı! Chmod komutu bitmeden Ctrl + C tuşlarına basmış mıydınız? pkexecsudo chmod -R 777 /usr/binsudopkexec777
Eliah Kagan

Merhaba. Bu yöntem, yanlışlıkla başarıyla çalıştırıldıktan sudo chmod -R 777 /usr/binsonra, ancak yalnızca roothesaba giriş yaptıktan sonra benim için çalıştı .
Mart'ta iHowell

Yanıtlar:


10

Kabul edilen statü, buna rağmen, şimdi bu cevabın yanlış olduğuna ikna oldum . (Yakında OP ile kabul hakkında görüştükten sonra iyileştirmeyi umuyorum.) Sanırım başkalarının bunun işe yaradığını söylediklerini hatırlıyorum, ama sorunlarının en azından biraz farklı olduğuna inanıyorum. Burada açıklanan yöntem + chmod -R 777 /usr/binile kesintiye uğrayan veya başka şekilde tamamlanmayan bazı durumlar için değerli kalır . Ama bir kez, ayarlanamaz ve Damien Roche ve Oli'nin haklı olarak yorumladığı gibi, bundan daha iyi çalışmaz .CtrlCpkexecsudo

Bir Ubuntu masaüstü sisteminde, PolicyKit yüklü olduğundan, pkexecbozuk bir sudoyürütülebilir dosyayı veya sudoersdosyayı onarmak için kullanılabilir . Kurtarma moduna önyükleme yapmanız gerekmez ve canlı bir CD'den önyükleme yapmanız gerekmez. Yeniden başlatmanıza bile gerek yok.

Bu durumda, aşağıdaki komutları çalıştırın:

pkexec chown root:root /usr/bin/sudo
pkexec chmod 4755 /usr/bin/sudo

Daha fazla bilgi için bu soruya bakın .


9
pkexec must be setuid root! Ne kabustu ama!
Damien Roche

1
Damien'ın belirttiği gibi, bu yaklaşımla ilgili sorun pkexectam olarak aynı önermedir sudo. Normalde setuid ve yaşıyor /usr/bin. Test ettim ve bu daha sonra işe yaramıyor chmod -R 777 /usr/bin.
Oli

@DamienRoche, Oli: Bu yolu daha çabuk düzeltmediğim için üzgünüm ! İkiniz de haklısınız. Neden pkexecçalışmak için setuid root olması gerektiğinden emin değilim (diğer setuid olmayan süreçler gibi polkit daemon ile çalışmıyor mu?), Ama buna ihtiyacı var. OP'yi (bunu kabul eden) bu cevap hakkında doğru ya da yararlı olan şeylere ışık tutabileceğini görmek için soruyu yorumladım. Ve bu yazının üstüne geçici bir banner ekledim, böylece daha fazla yanıltmam. Eğer bu cevap var olmaya devam, geliştirilmiş şekli muhtemelen bu afiş şu anda bazı bilgiler içerecektir.
Eliah Kagan

Sadece su/ bin altında bulunan kullanabilirsiniz
FliiFe

@FliiFe Dosyaların izinlerini (veya sahipliğini) düzeltmek /usr/binkök ayrıcalıkları gerektirir, ancak sukök girişleri varsayılan olarak devre dışı bırakıldığı için çoğu Ubuntu sisteminde kök oluşturamazsınız. Aksine sudove pkexeckullandığınızda, subir kök kabuğu almak veya kök olarak bir komutu çalıştırmak için, dizin şifresine, kendinize ait olmayan sağlamak zorunda. Ama kök (root için parola tabanlı kimlik doğrulama hep başarısız olur yani Ubuntu varsayılan olarak parolası olmayan değil boş bir şifre girerek çalışacağına söz). Ayrıntılar için RootSudo sayfasına bakın.
Eliah Kagan

4

Canlı CD / Pendrive'dan çalışırken bile chmodkomutunuza ön ek eklemeniz gerekir sudo. Yani adımlarınız aşağıdaki gibi olacaktır:

  1. canlı bir CD / Pendrive'dan önyükleme
  2. diskinizin önceden otomatik olarak ayarlanıp ayarlanmadığını (ve nereye) kontrol edin. Değilse, monte edin (aşağıya bakın)
  3. sudo chmod 0755 <path>izinleri ayarlamak için kullan

Diskinizin nereye takıldığını bulma: bir terminal penceresinden mount(bağımsız değişkenler olmadan) çalıştırın . Bu, takılı tüm aygıtları listeler. typeListelenenleri kontrol edin - "gerçek dosya sistemi" kullanmayan her şeyi atlayabilirsiniz (diskinizde muhtemelen ext3 veya ext4 kullanılır - kesin olarak proc, sysfs ve benzeri gibi şeyleri atlayabilirsiniz). Bir şey umut verici geliyorsa (benziyorsa /dev/sda1 on /media/sda1 type ext3), içeriğini kontrol edin ls /media/sda1.

Takılı durumda ise, birlikte kontrol edebilirsiniz /dev(kullanarak diski olabilir girdileri ls /dev/ |grep '/dev/sd; Disk gibi görünmelidir mevcut cihazları kontrol etmek /dev/sdaX, /dev/sdbXya da benzeri - X bir sayıdır anlamına gelir). Bunu, takılı cihazların listesiyle karşılaştırın. Orada değilse, monte etmeye ve içeriğini kontrol etmeye çalışın (yukarıda gösterildiği gibi). Takmak için önce bir bağlama noktası oluşturun, örneğin sudo mkdir /mnt/mydiskcihazı kullanarak monte etmeye çalışın mount /dev/sda1 /mnt/mydiskve içeriğini kullanarak kontrol edin ls /mnt/mydisk.

Orada sağ diski aldığınızda, izinlerin usr dir üzerinde geri değiştirmek gidebilir: sudo chmod 0755 /mnt/mydisk/usr.

Parametreyi chmodkullanarak komutu başlangıçta tekrarlı olarak çalıştırırsanız, yine de sorun yaşayabilirsiniz -R. Bu durumda, her girişi manuel olarak düzeltmeyi deneyebilirsiniz - ya da yeni bir kurulum için doğrudan devam edebilirsiniz ...


Ben bağlama noktası oluşturmak için çalıştı, ama okuduğum bir hata var / mydisk olmadığı demektir- noktası mnt bazı şeyle ve sadece yazdığım kayıt için değiştirilecek mydisk olduğu mount /dev/sda /mnt/mydiskgelenroot@Ubuntu:/dev#
vin

Sen a) tarif edildiği şekilde (mount komutu vermeden önce noktasını (dizin) monte yarattı) ve b) için hallettim lider yanı çizgiyle? Deneyin mkdir -p /mnt/mydisk && mount /dev/sda1 /mnt/mydisk(üzerinde bölümünüz olduğunu düşünmüyorum /dev/sda, bu yüzden bölüm numarasını da kaçırmış olmalısınız. Doğru cihazı belirttiğinizden emin olun (veya montaj başarısız olacaktır)
Izzy

1

Ben Mat doğru olduğunu düşünüyorum, / usr / bin için biraz eklemek için kök olmalı, ama tabii ki sudo kırık. Bir root parolanız varsa, bunu root olarak oturum açmak ve ardından yukarıdaki komutla izinleri düzeltmek için kullanabilirsiniz. Ancak, yapmazsanız (ve ben de yapmazsanız) muhtemelen en iyisi:

  • Linux canlı CD'sinden önyükleme
  • orada kökleşmek
  • bölümü yukarıdaki sisteme monte edin
  • daha sonra bir terminal kullanarak bu dosya sistemindeki izinleri düzeltin.

Kök her zaman kullanıcı numarası 0'dır, bu nedenle herhangi bir sistemdeki kök diğer dosya sistemlerinde köklenmeye izin verebilir.


1

Fazla bilgim yok. Ancak bu adımlar makinemi yeniden başlatmadan bile sorunumu çözdü. Bu adımları takip et:

su root
<enter root password>
cd /usr
chmod -R 755 *

1
En azından bir "cd" komutu eksik. Eğer bunu böyle yaparsanız, kök için ev dizinde "chmod" yapıyorsunuz. Bu işleri daha da kötüleştirecek.
Rinzwind

thaks ... cevabımı düzenledi ... / usr klasöründeydim
Manu Mohan Thekkedath

2
Bu yalnızca root, Ubuntu'nun varsayılan yapılandırması olmayan bir parola ayarlanmışsa çalışır .
David Foerster

1

Yerel komut dosyalarım için izinler ayarlama girişiminde, yanlışlıkla sudo iznini kırdım ve sahipliğini değiştirdim. Aşağıdakileri yaparak sudo'nun kökünü yeniden kökten değiştirebildim:

Adım 1: Ubuntu kurtarma moduna geçin . Sürecin farkında değilseniz, buradan bir cevaba başvurabilirsiniz: /ubuntu//a/172346/223901

Adım 2: Kurtarma modundayken root - Kök kabuk istemine bırak seçeneğini belirleyin

Adım 3: Aşağıdaki komutları yapın

mount -o remount,rw /
chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo
reboot

Sisteminizin normal şekilde önyükleme yapmasını bekleyin ve sudo'nun sahipliğini tekrar root'a göreceksiniz.

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.