Ich habe Neuigkeiten.
Ich habe es endlich geschafft, den Schlüssel ohne Passwort zu entschlüsseln; es ist zwar nicht besonders sicher, aber es dient nur der Demonstration. Deshalb habe ich meinen PHP-Code entsprechend angepasst und die folgende Zeile hinzugefügt:
sudo -u wapt /opt/wapt/bin/python /opt/wapt/testarg.py 0019ECDE-E109-DE11-AEAF-0025111B87F7add entfernen
(Befehl, den ich erstellt habe, um alles zu automatisieren)
Das Problem ist, dass der Befehl nichts zurückgibt und nicht funktioniert. Deshalb habe ich die Initiative ergriffen und festgestellt, dass nginx aus irgendeinem Grund, egal welche Rechte ich ihm gewähre, kein sudo ausführen kann.
Die von mir verwendete Lösung bestand darin, den Benutzer in php-fpm mithilfe von wapt zu modifizieren.
Wenn ich den Befehl `whoami` auf das PHP-Skript anwende, erhalte ich `wapt` zurück, ich verwende also den richtigen Benutzer. Ich habe meinen Befehl außerdem wie folgt angepasst: ..
/opt/wapt/bin/python /opt/wapt/testarg.py 0019ECDE-E109-DE11-AEAF-0025111B87F7add entfernen
da sudo angeblich unnötig ist.
Und überraschenderweise funktioniert es immer noch nicht.
Deshalb habe ich die Datei /etc/passwd so geändert, dass die Verbindung mit dem Benutzer wapt ermöglicht wird, damit ich mich verbinden und den Befehl direkt in der Konsole testen kann.
Und überraschenderweise funktioniert es!
Daher nahm ich an, dass irgendetwas in Python PHP blockierte.
Deshalb habe ich jeder Zeile meines Codes print-Anweisungen hinzugefügt:
Code: Alle auswählen
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 entfernen1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 18 19 20
Das heißt, es steckt hier fest:
Code: Alle auswählen
pe.sign_package(private_key=key,certificate = signers_bundle.certificates())System: CentOS 7
Wapt-Version: 1.7.4
PHP-Version: 7.2.19
