Quindi ho delle novità.
Alla fine sono riuscito a decifrare la chiave senza password; non è particolarmente sicuro, ma è una demo. Quindi ho modificato il mio codice PHP per includere la riga
sudo -u wapt /opt/wapt/bin/python /opt/wapt/testarg.py 0019ECDE-E109-DE11-AEAF-0025111B87F7add rimuovi
(comando che ho creato per automatizzare tutto)
Il problema è che il comando non restituisce nulla e non funziona, quindi ho preso l'iniziativa e ho scoperto che per qualche motivo, indipendentemente dai diritti che gli concedo, nginx non riesce a usare sudo.
La soluzione che ho utilizzato è stata quella di modificare l'utente in php-fpm utilizzando wapt.
Se eseguo il comando `whoami` sullo script PHP, restituisce `wapt`, quindi sto usando l'utente corretto. Ho anche modificato il mio comando..
/opt/wapt/bin/python /opt/wapt/testarg.py 0019ECDE-E109-DE11-AEAF-0025111B87F7aggiungi rimuovi
poiché si suppone che sudo non sia necessario.
E sorprendentemente, continua a non funzionare.
Ho quindi modificato il file /etc/passwd per consentire la connessione con l'utente wapt, in modo da potermi connettere e testare il comando direttamente sulla console.
E sorprendentemente funziona!
Quindi ho pensato che qualcosa in Python stesse bloccando PHP.
Quindi ho aggiunto istruzioni print a ogni riga del mio codice:
Codice: Seleziona tutto
from waptpackage import PackageEntry,WaptLocalRepo
from waptcrypto import SSLCABundle,SSLPrivateKey,SSLCertificate
import sys
arg=""
#Configuration
certpub="/opt/wapt/wapt.crt"
privatekey="/opt/wapt/wapt.pem"
if len(sys.argv)>2:
for i in sys.argv:
if not i==sys.argv[0]:
arg=arg+i+" "
arg=arg.split("add")
print("1")
option=arg[1].split("remove")
print("2")
uuid_machine=arg[0]
print("3")
adddepend=option[0].split(" ")
print("4")
removedepend=option[1].split(" ")
print("5")
adddepend.remove("")
print("6")
removedepend.remove("")
print("7")
adddepend.remove("")
print("8")
removedepend.remove("")
print("9")
ca_bundle = SSLCABundle()
print("10")
signers_bundle = SSLCABundle()
print("11")
signers_bundle.add_certificates_from_pem(pem_filename=certpub)
print("12")
key = SSLPrivateKey(privatekey)
print("13")
pe = PackageEntry(waptfile = "/var/www/html/wapt-host/%s.wapt" % uuid_machine)
print("14")
depends = pe.depends.split(',')
print("15")
if len(adddepend)>0:
print("16")
for dep in adddepend:
if not dep in depends:
depends.append(dep)
if not len(removedepend)<=0:
print("17")
for dep in removedepend:
if dep in depends:
depends.remove(dep)
print("18")
pe.depends = ','.join(depends)
print("19")
pe.inc_build()
print("20")
pe.sign_package(private_key=key,certificate = signers_bundle.certificates())
print("21")
print("Modification reussite")
else:
print("Erreur pas assez d arguments ont ete saisis")
/opt/wapt/bin/python /opt/wapt/testarg.py 0019ECDE-E109-DE11-AEAF-0025111B87F7add rimuovi1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 18 19 20
Ciò significa che è bloccato qui:
Codice: Seleziona tutto
pe.sign_package(private_key=key,certificate = signers_bundle.certificates())Sistema: CentOS 7
Versione Wapt: 1.7.4
Versione PHP: 7.2.19
