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