sudo / etc / sudoers dosyasını açamıyor


15

sudoçalışmıyor. BTRFS ile biçimlendirilmiş bir USB anahtarına Arch Linux yükledim. 'Sudo' çalıştırdığımda çıktı:

$ 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) +++

Ne olmuş ls -ld /etc?
Ansgar Esztermann

En son düzenlemeye eklendi.
chipuba

3
Çıktısını göster ls -l $(which sudo), bu sorunun kaynağı
papatya

Sudoers sözdiziminin sorun olmadığını doğruladınız mı?
Tim

Düzenlemelerde her ikisi de eklendi, sözdizimi hatası yok ...
chipuba

Yanıtlar:


19

Tamam, / (cd olamaz) için erişiminiz yok gibi görünüyor,

Deneyebilir misin chmod 755 /


@UlrichDangel gerçekten mi? Basit bir program denedim, bu çağrılarla, program intihar edilmiş olsa bile, işlev hala -1'e dönecektir. ( Yaptımchown root ./suid_test ve chmod 4755 ./suid_test), kaynak kodu: pastebin.mozilla.org/1650215
papatya

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

Sorunu
çözmez

"strace -uuli -f ./suid_test | & grep uid" hiçbir şey üretmez.
chipuba

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

1

Yürütülebilir dosyanın setuid olması ve root'a sahip olması gerekir:

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

İkili programınızda bu özelliklerden biri eksik. Bunu yapın (root olarak):

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

Yanlış olabilir ama suid bit dönüş değeri olarak eksik setresuid32(0, -1, -1)ve setresgid32(-1, 0, -1)her ikisi de zaman 0 olduğunu programın doğru izinlere sahip olduğunu
sanmıyorum

Ne yazık ki Ulrich Dangel haklı. Bu hiç fark etmez (ve ben bunu denemiştim).
chipuba

0

nasıl kurdun? bölümü, yükleme için kök olarak usb çubuğuna monte etmeniz gerekir. Neden bilmiyorum ama bu sadece benim için çalıştı. Daha sonra bölümü kullanıcı olarak bağlayabilir ve rsync ile güncelleyebilirsiniz ve hiçbir sorun görünmemelidir (ancak bunu kapsamlı bir şekilde test etmedim).

Büyük olasılıkla kullanıcı montaj sisteminde kırık bir şey var.


-2

Bu adımları takip et:

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

-1: Bu çok kötü bir tavsiye. /rootVe içindeki her şeyin izinlerini körü körüne ezmemelisiniz /etc. Bu dosyaların değişen izinlerle yüklenmesinin bir nedeni vardır. Bu dosyaların tümüne körü körüne çalıştırılabilir izinler ayarlama tavsiyesi sahte; bu ağaçlardaki birkaç dosya gerektirir. Ve dünyadaki her şeye dünya okuma ve yürütme izinleri verme tavsiyesi /rootve /etcşaşırtıcı derecede kötü; root şifresini, siz sisteme giriş yaparken bu sisteme giriş yapabilen her kullanıcıya e-postayla gönderebilirsiniz, çünkü bunu yaparak kutuyu tam olarak çalıştırmışsınızdır.
Warren Young
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.