Re: execvp() e shell invalida...
Marco Gaiarin <[email protected]> Mon, 12 Sep 2022 15:01:50 +0200
| Newsgroups | gmane.linux.debian.devel.italian |
|---|---|
| Organization | Il gaio usa sempre TIN per le liste, fallo anche tu!!! |
| Message-ID | <[email protected]> |
Mandi! Alessandro Rubini
In chel di` si favelave...
> "-f" segue i fork. E "-p <pid>" si collega ad un processo gia` in
> esecuzione. "man strace".
Quante cose si imparano... ;-)
> L'utente senza shell e` irrilevante. Come dicevo, "diagnosi sbagliata.
E di brutto. Il comando non viene eseguito dallo storage daemon, quindi da
utente 'bacula', ma direttamente da 'vchanger', eseguito dentro degli script
per udev, quindi eseguiti da root.
Infatti se lo eseguo DA ROOT con strace con:
root@sdpve2:~# strace -f /usr/bin/vchanger --force /etc/vchanger/SDPVE2RDX.conf refresh
fa correttamente il fork, esegue bconsole, la quale ad un certo punto:
[pid 22011] openat(AT_FDCWD, "/etc/bacula/bconsole.conf", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied)
Come può qualcosa eseguito come root NON avere i permessi di accesso a un
file? Se serve la chiamata a clone() prima del'execve() è:
22729 clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fb0f063ea90) = 22746
[...]
22746 execve("/usr/sbin/bconsole", ["/usr/sbin/bconsole", "-n", "-u", "30"], 0x7ffcab66de30 /* 20 vars */) = 0