Wenn ich einen Befehl mit folgenden Argumenten aufrufe:
bob@bob-pc:~$ command -arg1 -arg2
... können andere Benutzer die an den Befehl übergebenen Argumente anzeigen?
Wenn ich einen Befehl mit folgenden Argumenten aufrufe:
bob@bob-pc:~$ command -arg1 -arg2
... können andere Benutzer die an den Befehl übergebenen Argumente anzeigen?
Antworten:
Im Allgemeinen können sie es ja sehen. Dies ist aus der w
Manpage:
Die folgenden Einträge werden für jeden Benutzer angezeigt: Anmeldename, Name der Tty, Remote-Host, Anmeldezeit, Leerlaufzeit, JCPU, PCPU und die Befehlszeile des aktuellen Prozesses.
Die vollständige Befehlszeile Ihres aktuell ausgeführten Prozesses wird angezeigt. Aus diesem Grund möchten Sie keine Passwörter über Befehlszeilenargumente bereitstellen.
XXXXXXXX
); Ich würde gerne wissen wie. Es könnte etwas lahmes sein, als würde es sich einfach selbst gabelten und ein falsches Argument vorlegen. Ich bin mir nicht sicher
Im Allgemeinen sind Befehlszeilenargumente für alle sichtbar. Zum Beispiel kann ich als Nicht-Root-Benutzer unter OpenBSD Argumente von Prozessen sehen, die als Root ausgeführt werden:
$ ps -U root -o command= |grep getty |head -n 1
/usr/libexec/getty std.9600 ttyC0
Unter Linux werden Sie feststellen, dass alle /proc/*/cmdline
Dateien weltweit lesbar sind.
Es kann sehr spezielle Einstellungen geben, in denen Befehlszeilenargumente privat bleiben. Beispielsweise können SELinux und Solaris Prozesse vor anderen Benutzern verbergen . Wenn Sie jedoch nicht genau wissen, dass Sie sich in einer solchen Umgebung befinden, nehmen Sie an, dass Befehlszeilenargumente öffentlich sind.
In Standardeinstellungen sind die Argumente sichtbar. Wie bereits erwähnt , können Prozesse sie im Speicher überschreiben, jedoch nicht, bevor andere Prozesse die Möglichkeit hatten, sie zu sehen.
Das grsecurity-Patchset enthält jedoch einen Patch, der es so ändert, dass nur der Prozesseigner (und Root) die an einen Prozess übergebenen Argumente sehen kann.