Ubuntu'da sudo nasıl geri alınır?


12

Bunu yaptım:

sudo chown -R myname /usr/

ve şimdi sudobu hata nedeniyle komutu kullanamıyorum :

sudo: setuid root olmalıdır

Ve bu okuduğumda, bu dosyanın sahibinin /usr/bin/sudokök olmadığı anlamına gelir . /usrKlasördeki chown yüzünden artık benim kullanıcım .

Birçok forumda ve blogda insanlar bunu kök olarak yapmayı önerir:

# chown root:root /usr/bin/sudo
# chmod 4111 /usr/bin/sudo

... ama bununla ilgili sorun ben bir kök olarak giriş gerekir, ama yapamam çünkü suterminalde yazarsanız şifre yanlış (aslında benim kullanıcı eklediğim şifreyi kullanın):

$ su
Password:
su: Authentication failure

Yani sudokomutu geri alabilir miyim ?

Düzenleme: Ubuntu'm Mac OS X cihazımda Paralells altında.


"Kullanıcıma eklediğim şifreyi kullanıyorum" ile ne demek istiyorsun? Kullandığınızda su, kullanıcının şifresini değil, root şifresini girmeniz istenir sudo. Bu makinenin kök şifresini biliyor musunuz?
Caleb

Hayır, eklemem veya değiştirmem gerekmedi, bunun için varsayılan var mı?
Adam

Tek kullanıcı modunda yeniden başlatmanız gerekir. Hangi dağıtımı yapıyorsunuz?
Gilles 'SO- kötü olmayı bırak'

1
Sadece merak ettim, ama ne yapmaya karar sudo chmod -R cirk:cirk /usrverdin? Ne yapmaya çalışıyordun?
loosecannon

1
Programın tam yerini bilmediğimden beri / usr / 'da bir yere kurulmuş bir program Tüm usr klasöründe chown kullanmaya karar verdim ve bir noob olduğum için her şeyi tekrar berbat ettim: P
Adam

Yanıtlar:


5

Tüm dosyalar için doğru sahipliğin ne olduğunu görmek için kılavuz olarak kullanabileceğiniz benzer bir sisteminiz varsa, kurtarma moduna önyükleme yapabilir, bir kök kabuğa düşebilir ve doğru sahipliği manuel olarak tümüne geri yükleyebilirsiniz. içindeki dosyalar /usr.

En hızlı yol, işletim sisteminizi yeniden yüklemek veya yedeklemeden geri yüklemek olabilir.

Ubuntu veya benzeri bir sürümde, varsayılan olarak kök parola yoktur (hesap devre dışıdır), bu yüzden yapamazsınız su.


8
Woah orada kolay olsun, bu pencere yeniden yükleme her zaman bir şey yapmak için en kolay veya en hızlı yol değildir ve kesinlikle insanlara sorunları nasıl düzelteceklerini öğretmez. Bu durumda tek yapması gereken, dosya sistemini LiveCD veya önerdiğiniz kurtarma modu (dağıtıma bağlı) gibi başka bir ortama monte ederek kolayca gerçekleştirilebilecek eylemi tersine çevirmektir.
Caleb

@Caleb, dosya sisteminin büyük bir kısmındaki izinleri tamamen çöpe attığınızda. Sadece sudo'yu berbat etmedi, muhtemelen yazısında -R kullandığını belirtmeyi unuttu (aksi takdirde sadece / usr dizininin sahibini değiştirirdi, sudo değil). Ayrıca süreci nasıl tersine çevireceğimizi de anlattım, ama bu çok zaman alıcı ve özenli bir iş.
psusi

1
Bu bir durum chowndeğil chmod. /usrKlasördeki her şey olması gerektiğinden root:root, bu bir chmodclobber'ın anlamına geleceği özenli bir düzeltme değil, kolay bir düzeltme olmalıdır .
Caleb

2
@Caleb / usr içindeki her şey root: root olmamalıdır.
psusi

6
@Caleb chown, setxid bitlerini sıfırlar. /usrKökte olmayan birkaç dosya var ; daha farklı bir grupta (özellikle setgid programları /usr/bin).
Gilles 'SO- kötü olmayı bırak'

11

Kök düzeyinde erişim sağlayan tek şey için izinleri barındırdığınızdan, bu sorunu gidermek için geçerli yazılım ortamının DIŞINDA yardıma ihtiyacınız olacaktır.

En kolay yolun dağıtımınız için bir LiveCD önyükleme yapmak, sürücünüzü monte etmek ve chmodoradan listelenenleri kullanarak dosya izinlerini değiştirmek olduğunu öneririm .

Ayrıca bir kök kabuk almak için tek kullanıcılı modda önyüklemeyi deneyebilirsiniz.

Genellikle /usr/dizindeki her şeyin sahibi rootolması gerektiğini unutmayın, böylece chownkırdığınız her şeyi düzeltmek için yinelemeli bir işlem yapabilirsiniz . ( Düzenleme: Başına @Gilles görünüşte çalışan yorumlar chownBunu, sonları setuid ve setgid bit olacak yeniden sahipliğini düzeltmek kez tüm bu geri manuel varolan sisteme karşılaştırmak gerekir.)

Ancak, çok FEW olmalıdır 4111. Bu ekstra özel bir izintir, ancak kullanıcı olarak çalıştırıldığında bile kök olarak yürütülmesini sağlar! Yalnızca sudove birkaç seçili komutun bu izin biti ayarlanmış olmalıdır. Bir çalıştırmak olmadıysa chmodmuhtemelen hiç bunu düzeltmek gerekmez başlamak , tüm izinler zaten doğru olmalıdır. chmodTüm izinlerin ne olduğunu bilmeden büyük bir işlem yapmayın .


İşletim Sisteminin Sanal Makinede olması mümkün müdür?
Adam

Evet bu hiç fark etmiyor. Çalışma düzeyi 1'i kullanabilirsiniz (önyükleme işleminin başında grub / lilo veya önyükleyiciniz ne olursa olsun yapabileceğiniz bir şey) veya VM'yi önyükleme aygıtı olarak LiveCD'nin ISO görüntüsünü kullanacak şekilde ayarlayabilirsiniz.
Caleb

aham, yeniden yüklemeden önce, tavsiyeni deneyeceğim :)
Adam

tamam Sanırım LiveCD'deyim, şimdi bunu terminalde yazmam gerekiyor mu? sudo chown -R root /usr/?
Adam

Bununla başlıyorsunuz, ancak /usrLivdCD'de değil, bir yere monte etmeniz ve bu yola karşı koşmanız gerekiyor, diyelim /mnt/mydrive/usr. Sonra setuid bitini düzeltmeniz gerekecek /mnt/mydrive/usr/bin/sudo. Sonra Livecd üzerinde / usr bakın ve kök dışında başka sahiplik olup olmadığını görmek. find /usr -not -uid 0ve bunları eşleştirmek için değiştirin. Ardından farklı setuid veya setgid bitleri ayarlanmış olan şeyleri arayın ve bunların da eşleştiğinden emin olun. Bunu karşılaştırmak için gerçek bir Ubunutu sisteminiz varsa en iyisi olurdu.
Caleb

4

Ubuntu kurtarma modunda, aşağıdaki komutları girin .. Bu benim için sorunu düzeltti ..

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

Umarım bu sorununuzu düzeltir. (Ya da başka birinin)

Bunu bu blog yazısında buldum .


2

Bu, diğer cevaplar tarafından önerilenden çok daha kolay. Canlı CD'yi biçimlendirmeye, yeniden başlatmaya veya kullanmaya gerek yok.

su root # then enter your password to switch to root user
chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo
exit # to get back to the original user

Bu sorunu çözmenin en kolay yolu budur. Açıklama, sudo bozuk (bozuk biliyorum yanlış terim, ama çalışmıyor, bu yüzden sudo kullanmaktan kaçınmamız gerekiyor)

  • Komut 1'i (su root) kullanarak sudo kullanmadan kullanıcıyı root olarak değiştiririz.
  • Komut 2'yi (chown root: root / usr / bin / sudo && chmod 4755 / usr / bin / sudo) kullanarak , sudo'nun izinlerini / sahipliğini düzeltiriz.
  • Komut 3'ü (çıkış) kullanarak orijinal kullanıcıya geri döneriz.

Bu yöntemi Linux nane üzerinde test ettim. Hangi ubuntu benzeri bir sistemdir. Bu yöntemin başka bir işletim sisteminde çalışmadığını bana bildirin. Cevabı buna göre güncelleyecektir.

Teşekkürler


anladığım kadarıyla, varsayılan olarak root hesabının şifresi yoktur, bu nedenle ilk adımda şifre sağlamak imkansızdır su rootve sudoçalışmadığı için kök şifre ayarlamak imkansızdır
TitanFighter

1
Teşekkürler bana yardımcı oldu.
Arun

1

Bu insanların yaptığıdan daha basit. Takip etmeyi dene:

  1. Bozuk sukomutu kullanarak root olarak giriş yapmaya çalışmak yerine, mevcut kullanıcınız olarak oturumu kapatın ve normal Display Manager (yani oturum açma ekranı) üzerinden tekrar root olarak giriş yapın.
  2. Terminalde aşağıdakileri yürütün: chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo

Bu sudokomutu düzeltmeli ve hemen çalışmaya başlamalıdır .


0

Su veya sudo olmadan root olarak giriş yapmak için pkexec'i kullanabilirsiniz:

pkexec su

Şimdi dosyaların izinlerini değiştirin:

chmod 440 /etc/sudoers
chmod 775 /etc/sudoers.d
chmod 440 /etc/sudoers.d/README
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.