Wir haben eine CI-Server-Anwendung als build
Benutzer ausgeführt. Jeder Befehl mit Argumenten, die vom CI-Server ausgeführt werden, ist über sichtbar ps
. Benutzer ohne Administratorrechte haben zwar keinen Zugriff auf das Laden einer Shell auf dem CI-Server, sie haben jedoch Zugriff auf das Ausführen von Unix-Befehlen über eine Task.
Meine Sorge ist; Benutzer A kann möglicherweise die Aufgabe von Benutzer B mit Befehlszeilenargumenten (die möglicherweise vertrauliche Informationen enthalten können) anzeigen, indem Sie einfach Folgendes ausführen: a ps
.
Beachten Sie, dass alle Aufgaben auf dem CI-Server als build
Benutzer ausgeführt werden. Benutzer können nicht zu anderen wechseln user
.
Ich könnte den ps
Befehl möglicherweise so blockieren, dass ein Benutzer ihn innerhalb einer Aufgabe nicht ausführen kann. Dies ps
sollte mein Problem lösen, aber ich bin gespannt, ob ich Folgendes weiß:
- Gibt es andere Befehle, die ausgeführt werden können, um Befehlszeilenargumente ohne
root
Berechtigungen anzuzeigen? - Gibt es angesichts des Zusammenhangs dieses Problems eine bessere / sichere Möglichkeit, es zu verwalten?
build
? Wenn sie als unterschiedliche Benutzer ausgeführt würden, könnte dies durchgeführt werden.ps
für alle Benutzer ist wahrscheinlich nicht das, wonach ich suche, da es für die Verwaltung des Systems von entscheidender Bedeutung ist.proc
Kann vielleicht auch deaktiviert werden? aber wenn es noch andere Mittel gibt, ist es vielleicht kein effizienter Weg, dies zu tun.build
Benutzer ausgeführt.Antworten:
Dann kann jeder, der einen Build einreicht, die Jobs eines anderen Benutzers sehen und sogar stören. Das Ausführen eines Builds kann beliebigen Code ausführen. Dies ermöglicht jedem, der einen Build einreicht, nicht nur das Ausführen,
ps
sondern auch das Lesen und Schreiben von Dateien, die zu anderen Jobs gehören. Wenn Sie nicht die Benutzer vertrauen können , die einreichen baut dann Sie müssen laufen die als separate Benutzer aufbaut.Wenn Sie sich nur mit Benutzern befassen, die ein Konto auf diesem CI-Server haben, aber keine Builds senden dürfen, kann die
hidepid
Option hilfreich sein. Alternativ können Sie Build-Übermittler anweisen, vertrauliche Informationen in Dateien oder Umgebungsvariablen anstelle von Befehlszeilenargumenten zu übergeben. Beachten Sie, dass derps
Befehl nicht das ist, worum Sie sich kümmern müssen, sondern nur ein hübscher Drucker für Informationen im proc-Dateisystem . Die Befehlszeile des Prozesses 1234 kann mit gedruckt werdencat /proc/1234/cmdline
.Wenn Sie Bedenken hinsichtlich der Vertraulichkeit von Builds haben, sollten Sie nicht versuchen, jeweils ein potenzielles Informationsleck zu schließen, sondern alle Builds in einem Container oder einer virtuellen Maschine ausführen .
quelle
überprüfen Sie die
hidepid
Option für die Montage / proclink für mehr info -
quelle
2
ist möglicherweise eine Option.Anstatt Informationen in der Befehlszeile zu übergeben, können Sie Ihr Programm so ändern, dass es die Informationen in der Standardeingabe liest und über einen Unterprozess ausführt, der es mit
popen
(einer Pipe) startet . Stellen Sie sicher, dass Sie das Rohr mit schließen,pclose
wenn Sie fertig sind.Weitere Lektüre:
quelle