sudo
nie działa. Mam Arch Linux zainstalowany na kluczu USB sformatowanym w BTRFS. Oto wynik, gdy uruchamiam „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) +++
arch-linux
sudo
Chipuba
źródło
źródło
ls -ld /etc
?ls -l $(which sudo)
, oto źródło problemuOdpowiedzi:
Ok, nie masz dostępu do / (nie można cd),
Możesz spróbować
chmod 755 /
źródło
chown root ./suid_test
ichmod 4755 ./suid_test
), kod źródłowy: pastebin.mozilla.org/1650215Plik wykonywalny musi być ustawiony jako setuid i należy do roota:
W twoim pliku binarnym brakuje jednej z tych cech. Zrób to (jako root):
źródło
setresuid32(0, -1, -1)
isetresgid32(-1, 0, -1)
wynosi zarówno czas 0, co oznacza, że program ma odpowiednie uprawnieniajak to zainstalowałeś? musisz zainstalować partycję na pendrivie jako root do instalacji. Nie wiem dlaczego, ale działało to dla mnie tylko w ten sposób. Następnie możesz zamontować partycję jako użytkownik i zaktualizować ją za pomocą rsync i nie powinien pojawić się żaden problem (ale nie testowałem tego obszernie).
Najprawdopodobniej coś jest zepsute w systemie montowania użytkownika.
źródło
Wykonaj następujące kroki:
źródło
/root
i/etc
. Istnieje powód, dla którego te pliki są instalowane z różnymi uprawnieniami. Porada dotycząca ślepego ustawiania uprawnień do wykonywania wszystkich tych plików jest nieprawdziwa; wymaga tego kilka plików w tych drzewach. A rada, aby dać światowe i niewykonalne uprawnienia do wszystkiego/root
i/etc
jest oszałamiająco zła; równie dobrze możesz wysłać hasło roota do każdego użytkownika, który może zalogować się do tego systemu, gdy jesteś przy nim, ponieważ już to zrobiłeś.