Bagaimana cara mendapatkan kembali sudo di Ubuntu?

12

Saya telah melakukan ini:

sudo chown -R myname /usr/

dan sekarang saya tidak bisa menggunakan sudoperintah karena kesalahan ini:

sudo: harus setuid root

Dan ketika saya membaca ini berarti bahwa pemilik file /usr/bin/sudoini bukan root. Ini pengguna saya sekarang karena chown di /usrfolder.

Di banyak forum dan blog orang menyarankan untuk melakukan ini sebagai root:

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

... tetapi masalah dengan ini adalah bahwa saya harus masuk sebagai root, tetapi saya tidak bisa karena Jika saya menulis sudi terminal kata sandi salah (sebenarnya saya menggunakan kata sandi apa yang saya tambahkan ke pengguna saya):

$ su
Password:
su: Authentication failure

Jadi bisakah saya mendapatkan kembali sudoperintahnya?

Sunting: Ubuntu saya berada di bawah Paralells di Mac OS X.

Adam
sumber
Apa yang Anda maksud dengan "Saya menggunakan kata sandi apa yang saya tambahkan ke pengguna saya"? Saat Anda menggunakan su, Anda akan diminta kata sandi root , bukan kata sandi pengguna Anda seperti dengan sudo. Apakah Anda tahu kata sandi root untuk mesin ini?
Caleb
Tidak, saya tidak perlu menambahkan atau memodifikasinya, apakah ada standar untuk itu?
Adam
Anda harus reboot dalam mode pengguna tunggal. Distribusi apa yang Anda jalankan?
Gilles 'SANGAT berhenti menjadi jahat'
1
Hanya ingin tahu, tetapi apa yang membuat Anda memutuskan untuk menjalankan sudo chmod -R cirk:cirk /usrapa yang ingin Anda capai?
loosecannon
1
Program apa yang diinstal di suatu tempat di / usr / karena saya tidak tahu lokasi pasti dari program saya memutuskan untuk menggunakan chown pada seluruh folder usr, dan karena saya seorang noob saya mengacaukan semuanya lagi: P
Adam

Jawaban:

5

Jika Anda memiliki sistem serupa yang dapat Anda gunakan sebagai panduan untuk melihat apa kepemilikan yang benar untuk semua file, maka Anda dapat boot ke mode penyelamatan, turun ke shell root, dan secara manual mengembalikan kepemilikan yang benar ke semua file dalam /usr.

Cara tercepat adalah menginstal ulang OS Anda atau memulihkan dari cadangan.

Di Ubuntu atau yang serupa, maka tidak ada kata sandi root secara default (akun dinonaktifkan), itulah sebabnya Anda tidak bisa su.

psusi
sumber
8
Woah tenang di sana, ini bukan menginstal ulang windows tidak selalu cara termudah atau tercepat untuk melakukan apa pun dan tentu saja tidak mengajarkan orang bagaimana memperbaiki masalah. Dalam hal ini yang perlu dia lakukan adalah membalikkan tindakan yang diambilnya yang dapat dengan mudah dilakukan dengan memasang sistem file di lingkungan lain seperti LiveCD atau mode penyelamatan yang Anda sarankan (tergantung distro).
Caleb
@ Caleb ketika Anda benar-benar membuang izin pada sebagian besar filesystem itu. Dia tidak hanya mengacaukan sudo, mungkin dia lupa menyebutkan di posnya bahwa dia menggunakan -R (jika tidak, itu hanya akan mengubah pemilik direktori / usr itu sendiri dan bukan sudo). Saya juga menjelaskan cara membalikkan proses, tetapi itu adalah tugas yang sangat memakan waktu dan melelahkan.
psusi
1
Ini adalah kasus chowntidak chmod. Karena semua yang ada di /usrfolder seharusnya root:root, ini harus menjadi perbaikan yang mudah, bukan perbaikan yang melelahkan yang chmodberarti seorang clobber.
Caleb
2
@ Caleb tidak semuanya di / usr harus root: root.
psusi
6
@ Caleb chownme-reset bit setxid. Ada beberapa file di /usrdalamnya yang tidak dimiliki oleh root; lebih banyak yang berada dalam kelompok yang berbeda (terutama program setgid di /usr/bin).
Gilles 'SO- stop being evil'
11

Karena Anda telah menyembunyikan izin pada satu-satunya hal yang memberi Anda akses tingkat root, Anda akan memerlukan bantuan dari LUAR lingkungan perangkat lunak saat ini untuk memperbaikinya.

Saya menyarankan agar cara termudah adalah mem-boot LiveCD untuk distro Anda, me-mount drive Anda, dan mengubah izin file menggunakan yang chmodAnda daftarkan dari sana.

Anda juga bisa mencoba mem-boot ke mode single-user untuk mendapatkan shell root.

Sadarilah bahwa biasanya semua hal dalam /usr/direktori harus dimiliki rootsehingga Anda hanya dapat melakukan rekursif chownuntuk memperbaiki apa pun yang Anda bangkrut. ( Edit: Per @Gilles komentar tampaknya berjalan chownistirahat setuid dan bit setgid, sehingga Anda akan perlu secara manual dibandingkan dengan sistem yang ada untuk mengembalikan semua dari mereka sekali Anda memperbaiki kepemilikan lagi.)

Namun, BEBERAPA seharusnya 4111. Yang ekstra itu adalah izin khusus tapi itu membuatnya dieksekusi sebagai root bahkan ketika dijalankan sebagai pengguna! Hanya sudodan beberapa perintah pilih yang harus mengatur bit izin ini. Jika Anda tidak menjalankan chmoduntuk memulai dengan Anda mungkin tidak perlu memperbaikinya sama sekali , semua izin harus sudah benar. Jangan menjalankan chmodoperasi besar tanpa mengetahui semua izin yang seharusnya.

Caleb
sumber
Apakah mungkin jika OS di Mesin Virtual?
Adam
Ya itu tidak ada bedanya. Anda dapat menggunakan runlevel 1 (sesuatu yang dapat Anda lakukan di awal proses booting dari grub / lilo atau apa pun bootloader Anda) atau Anda dapat mengatur VM untuk menggunakan gambar ISO LiveCD sebagai perangkat boot.
Caleb
aham, sebelum saya menginstalnya kembali, saya akan mencoba saran Anda :)
Adam
ok saya pikir saya ada di LiveCD, sekarang saya harus menulis ini di terminal? sudo chown -R root /usr/?
Adam
Ya, mulailah dengan itu, tetapi tidak aktif /usrpada LivdCD, Anda harus memasangnya di suatu tempat dan berlari melawan jalan itu, katakanlah /mnt/mydrive/usr. Maka Anda harus memperbaiki bit setuid /mnt/mydrive/usr/bin/sudo. Kemudian lihat / usr pada livecd dan lihat apakah ada kepemilikan lain selain root. find /usr -not -uid 0dan ubah yang cocok. Kemudian cari hal-hal yang memiliki bit setuid atau setgid yang berbeda dan pastikan semuanya cocok. Jika Anda memiliki sistem Ubunutu sungguhan untuk dibandingkan dengan yang terbaik.
Caleb
4

Dalam mode pemulihan Ubuntu, masukkan perintah berikut .. Ini memperbaiki masalah yang saya buat ..

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

Semoga ini akan memperbaiki masalah Anda. (Atau orang lain)

Saya menemukan ini di sini di posting blog ini .

Pengguna Ubuntu
sumber
2

Ini jauh lebih mudah daripada yang disarankan oleh jawaban lain. Tidak perlu memformat, reboot atau menggunakan live CD.

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

Ini adalah cara termudah untuk memperbaiki masalah ini. Penjelasan, sudo rusak (saya tahu korup adalah istilah yang salah, tetapi tidak berfungsi, jadi, kita harus menghindari menggunakan sudo)

  • Menggunakan perintah 1 (su root) , kami mengubah pengguna untuk melakukan root tanpa menggunakan sudo.
  • Dengan menggunakan perintah 2 (chown root: root / usr / bin / sudo && chmod 4755 / usr / bin / sudo) , kami memperbaiki izin / kepemilikan sudo.
  • Menggunakan perintah 3 (keluar) , kami kembali ke pengguna asli.

Saya telah menguji metode ini pada Linux mint. Yang merupakan sistem seperti ubuntu. Biarkan saya tahu ini metode ini tidak berfungsi pada OS lain. Akan memperbarui jawaban yang sesuai.

Terima kasih

divyenduz
sumber
seperti yang saya mengerti, secara default akun root tidak memiliki kata sandi, jadi tidak mungkin untuk memberikan kata sandi pada langkah pertama su root, dan karena sudotidak berfungsi, tidak mungkin untuk mengatur kata sandi root
TitanFighter
1
Terima kasih itu membantu saya.
Arun
1

Ini lebih sederhana daripada orang membuatnya. Coba yang berikut ini:

  1. Alih-alih mencoba masuk sebagai root menggunakan superintah yang rusak , logout sebagai pengguna Anda saat ini dan masuk lagi sebagai root melalui Display Manager normal Anda (yaitu layar login).
  2. Jalankan berikut di terminal: chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo

Ini harus memperbaiki sudoperintah dan membuat Anda bangun dan berjalan lagi dalam waktu singkat.

pengguna7089
sumber
0

Untuk login sebagai root, tanpa su atau sudo, Anda dapat menggunakan pkexec:

pkexec su

Sekarang ubah izin file:

chmod 440 /etc/sudoers
chmod 775 /etc/sudoers.d
chmod 440 /etc/sudoers.d/README
Jagmeet Singh Bains
sumber