sudo tidak bisa membuka / etc / sudoers


15

sudotidak bekerja. Saya sudah menginstal Linux Arch pada kunci USB yang diformat dengan BTRFS. Inilah hasilnya ketika saya menjalankan 'sudo':

$ sudo
sudo: unable to stat /etc/sudoers: Permission denied
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

$ ls -l /etc/sudoers
-r--r----- 1 root root 2849 May 18 15:00 /etc/sudoers

$ lsattr /etc/sudoers
--------------- /etc/sudoers

$ ls -ld /etc
drwxr-xr-x 1 root root 2476 May 25 13:45 /etc

$ ls -ld /
drwx------ 1 root root 142 May 25 06:51 /

$ ls -l $(which sudo)
---s--x--x 2 root root 123995 May 25 13:10 /usr/bin/sudo

$ strace -u ross sudo true 2>&1 | egrep '(sudo|set.*[ug].*id)'
execve("/usr/bin/sudo", ["sudo", "true"], [/* 30 vars */]) = 0
read(3, "31799 (sudo) R 31796 31796 31754"..., 1024) = 223
lstat64("/etc/sudo.conf", 0xbfcddeb0)   = -1 ENOENT (No such file or directory)
stat64("/usr/lib/sudoers.so", {st_mode=S_IFREG|0755, st_size=235092, ...}) = 0
open("/usr/lib/sudoers.so", O_RDONLY|O_CLOEXEC) = 3
stat64("/usr/lib/sudoers.so", {st_mode=S_IFREG|0755, st_size=235092, ...}) = 0
setresuid32(0, -1, -1)                  = 0
setresgid32(-1, 0, -1)                  = 0
setresuid32(-1, 1, -1)                  = 0
lstat64("/etc/sudoers", 0xbfcddd60)     = -1 EACCES (Permission denied)
setresuid32(-1, 0, -1)                  = 0
write(2, "sudo", 4sudo)                     = 4
write(2, "unable to stat /etc/sudoers", 27unable to stat /etc/sudoers) = 27
setresuid32(-1, 1, -1)                  = 0
setresgid32(-1, -1, -1)                 = 0
setresuid32(-1, 0, -1)                  = 0
setresuid32(-1, 0, -1)                  = 0
setresgid32(-1, 1000, -1)               = 0
write(2, "sudo", 4sudo)                     = 4
write(2, "no valid sudoers sources found, "..., 40no valid sudoers sources found, quitting) = 40
write(2, "sudo", 4sudo)                     = 4


$ ltrace -u ross sudo true 2>&1 | egrep '(sudo|stat|set.*[ug].*id)'
bindtextdomain("sudo", "/usr/share/locale")      = "/usr/share/locale"
textdomain("sudo")                               = "sudo"
fopen("/proc/31813/stat", "r")                   = 0x9e51d40
__xstat(3, "/dev/console", 0xbffd6074)           = 0
__xstat(3, "/dev/wscons", 0xbffd6074)            = -1
__xstat(3, "/dev/pts/4", 0xbffd6074)             = 0
__lxstat64(3, "/etc/sudo.conf", 0xbffd9040)      = -1
strlen("sudo")                                   = 4
memcpy(0x09e51e71, "sudo", 4)                    = 0x09e51e71
__xstat64(3, "/usr/lib/sudoers.so", 0xbffd810c)  = 0
dlopen("/usr/lib/sudoers.so", 257 <unfinished ...>
dlsym(0x09e51ef8, "sudoers_policy")              = 0xb75af520
__xstat64(3, "/usr/lib/sudoers.so", 0xbffd810c)  = 0
dlopen("/usr/lib/sudoers.so", 257)               = 0x09e51ef8
dlsym(0x09e51ef8, "sudoers_io")                  = 0xb75af560
fputs("sudo", 0xb7760920sudo)                        = 1
fputs("unable to stat /etc/sudoers", 0xb7760920unable to stat /etc/sudoers) = 1
fputs("sudo", 0xb7760920sudo)                        = 1
fputs("no valid sudoers sources found, "..., 0xb7760920no valid sudoers sources found, quitting) = 1
fputs("sudo", 0xb7760920sudo)                        = 1
+++ exited (status 1) +++

Bagaimana dengan ls -ld /etc?
Ansgar Esztermann

Ditambahkan dalam pengeditan terbaru.
chipuba

3
Tampilkan keluaran ls -l $(which sudo), itulah sumber masalahnya
daisy

Sudahkah Anda memverifikasi sintaks sudoers tidak memiliki masalah?
Tim

Menambahkan keduanya dalam pengeditan, tidak ada kesalahan sintaksis ...
chipuba

Jawaban:


19

Oke, sepertinya Anda tidak memiliki akses untuk / (tidak bisa melakukan cd),

Bisakah kamu mencoba chmod 755 /


@UlrichDangel benarkah? Saya mencoba program sederhana, dengan panggilan-panggilan itu, bahkan jika program suid-ed, fungsi masih akan mengembalikan -1. (Saya lakukan chown root ./suid_testdan chmod 4755 ./suid_test), kode sumber: pastebin.mozilla.org/1650215
daisy

'./suid_test': 0 setresuid: 0 0
chipuba

Tidak memperbaiki masalah
chipuba

"strace -uuli -f ./suid_test | & grep uid" tidak menghasilkan apa-apa.
chipuba

"strace -f ./suid_test | & grep uid" menghasilkan: execve ("./ suid_test", ["./suid_test"], [/ * 22 vars * /]) = 0 geteuid32 () = 0 setresuid32 (0, -1, -1) = 0 geteuid32 () = 0 write (1, "0 \ nsetresuid: 0 \ n0 \ n", 170 setresuid: 0
chipuba

1

Eksekusi harus setuid dan dimiliki oleh root:

$ ls -la /usr/bin/sudo
---s--x--x 2 root root 173154 Oct 19  2010 /usr/bin/sudo

Biner Anda kehilangan salah satu dari sifat-sifat itu. Lakukan ini (sebagai root):

# chown root /usr/bin/sudo
# chmod u+xs /usr/bin/sudo

Saya mungkin salah tetapi saya tidak berpikir suid bit hilang sebagai nilai pengembalian untuk setresuid32(0, -1, -1)dan setresgid32(-1, 0, -1)keduanya adalah waktu 0 yang menunjukkan bahwa program memiliki izin yang benar
Ulrich Dangel

Sayangnya, Ulrich Dangel benar. Itu tidak ada bedanya (dan saya sudah mencobanya).
chipuba

0

bagaimana Anda menginstalnya? Anda harus me-mount partisi pada usb-stick sebagai root untuk instalasi. Saya tidak tahu mengapa tetapi hanya bekerja untuk saya dengan cara ini. Setelah itu Anda dapat me-mount partisi sebagai pengguna dan memperbaruinya melalui rsync dan tidak ada masalah yang muncul (tapi saya belum menguji ini secara ekstensif).

Kemungkinan besar ada yang rusak pada sistem mount pengguna.


-2

Ikuti langkah ini:

~# chmod 440 /etc/sudoers
~# chmod -R 755 /root
~# chmod -R 755 /etc
~# chmod 755 /etc/phpmyadmin/config.inc.php

-1: Ini saran yang sangat buruk. Anda seharusnya tidak membabi buta menghancurkan izin pada segala sesuatu di /rootdan /etc. Ada alasan mengapa file-file ini diinstal dengan berbagai izin. Saran untuk secara membabi buta mengatur izin yang dapat dieksekusi pada semua file ini adalah palsu; beberapa file di pohon ini memerlukannya. Dan saran untuk memberikan izin baca-ke-dunia & laksanakan untuk semuanya /rootdan /etcsangat buruk; Anda mungkin juga mengirim email kata sandi root ke setiap pengguna yang dapat masuk ke sistem itu saat Anda sedang melakukannya, karena Anda telah memberi mereka jalankan penuh kotak dengan melakukan itu.
Warren Young
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.