sudo
ne marche pas. J'ai installé Arch Linux sur une clé USB formatée avec BTRFS. Voici la sortie lorsque j'exécute '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
la source
la source
ls -ld /etc
?ls -l $(which sudo)
, c'est la source du problèmeRéponses:
Ok, vous ne semblez pas avoir accès à / (ne peut pas cd),
Peux-tu essayer
chmod 755 /
la source
chown root ./suid_test
etchmod 4755 ./suid_test
), code source: pastebin.mozilla.org/1650215L'exécutable doit être setuid et détenu par root:
Votre binaire manque l'un de ces traits. Faites ceci (en tant que root):
la source
setresuid32(0, -1, -1)
etsetresgid32(-1, 0, -1)
soit à la fois 0 ce qui indique que le programme a les autorisations correctescomment l'avez-vous installé? vous devez monter la partition sur la clé USB en tant que root pour l'installation. Je ne sais pas pourquoi mais ça n'a fonctionné pour moi que de cette façon. Ensuite, vous pouvez monter la partition en tant qu'utilisateur et la mettre à jour via rsync et aucun problème ne devrait apparaître (mais je n'ai pas testé cela de manière approfondie).
Il y a très probablement quelque chose de cassé dans le système de montage utilisateur.
la source
Suivez ces étapes:
la source
/root
et/etc
. Il y a une raison pour laquelle ces fichiers sont installés avec différentes autorisations. Le conseil pour définir aveuglément les autorisations exécutables sur tous ces fichiers est faux; peu de fichiers dans ces arbres l'exigent. Et le conseil de donner des autorisations de lecture et d'exécution à tout le monde/root
et/etc
est incroyablement mauvais; vous pourriez aussi bien envoyer le mot de passe root à chaque utilisateur qui peut se connecter à ce système pendant que vous y êtes, car vous leur avez déjà donné la pleine mesure de la boîte en faisant cela.