sudo kann / etc / sudoers nicht öffnen

15

sudofunktioniert nicht. Ich habe Arch Linux auf einem mit BTRFS formatierten USB-Stick installiert. Hier ist die Ausgabe, wenn ich 'sudo' starte:

$ 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) +++
Chipuba
quelle
Was ist ls -ld /etc?
Ansgar Esztermann
Wurde in der letzten Bearbeitung hinzugefügt.
Chipuba
3
Show-Ausgabe von ls -l $(which sudo), das ist die Quelle des Problems
Gänseblümchen
Haben Sie überprüft, dass die sudoers-Syntax keine Probleme aufweist?
Tim
Beides in Änderungen hinzugefügt, keine Syntaxfehler ...
Chipuba

Antworten:

19

Ok, du scheinst keinen Zugang zu / zu haben (keine CD),

Kannst du es versuchen chmod 755 /

Gänseblümchen
quelle
@UlrichDangel wirklich? Ich habe ein einfaches Programm ausprobiert, mit diesen Aufrufen gibt die Funktion immer noch -1 zurück, auch wenn das Programm suided ist. (Ich tat chown root ./suid_testund chmod 4755 ./suid_test), Quellcode: pastebin.mozilla.org/1650215
Gänseblümchen
'./suid_test': 0 setresuid: 0 0
chipuba
Behebt
"strace -uuli -f ./suid_test | & grep uid" erzeugt nichts.
Chipuba
"strace -f ./suid_test | & grep uid" erzeugt: 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

Die ausführbare Datei muss setuid sein und Eigentum von root:

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

In Ihrer Binärdatei fehlt eines dieser Merkmale. Tun Sie dies (als root):

# chown root /usr/bin/sudo
# chmod u+xs /usr/bin/sudo
Andrew Schleifer
quelle
Ich kann mich irren, aber ich glaube nicht, dass das suid-Bit als Rückgabewert für fehlt setresuid32(0, -1, -1)und setresgid32(-1, 0, -1)beide Zeit 0 ist, was anzeigt, dass das Programm die richtigen Berechtigungen hat
Ulrich Dangel
Ulrich Dangel hat leider recht. Das macht keinen Unterschied (und das hatte ich schon versucht).
Chipuba
0

wie hast du es installiert Sie müssen die Partition auf dem USB-Stick als Root für die Installation bereitstellen. Ich weiß nicht warum, aber es hat bei mir nur so funktioniert. Danach können Sie die Partition als Benutzer mounten und über rsync aktualisieren. Es sollte kein Problem auftreten (ich habe dies jedoch nicht ausführlich getestet).

Es ist höchstwahrscheinlich etwas im Benutzer-Mount-System defekt.

alk
quelle
-2

Folge diesen Schritten:

~# chmod 440 /etc/sudoers
~# chmod -R 755 /root
~# chmod -R 755 /etc
~# chmod 755 /etc/phpmyadmin/config.inc.php
Ananthaselvam P
quelle
-1: Das ist ein sehr schlechter Rat. Sie sollten die Berechtigungen für alles in /rootund nicht blind zerschlagen /etc. Es gibt einen Grund, warum diese Dateien mit unterschiedlichen Berechtigungen installiert werden. Der Rat, ausführbare Berechtigungen für alle diese Dateien blind festzulegen, ist falsch. Nur wenige Dateien in diesen Bäumen erfordern dies. Und der Rat zu geben Welt-Lese & -execute Berechtigungen für alles /rootund /etcist erstaunlich schlecht; Sie können das root-Passwort auch per E-Mail an jeden Benutzer senden, der sich auf diesem System anmelden kann, wenn Sie gerade dabei sind.
Warren Young