Ist der Befehl w für Benutzer sicher?

Ist der Befehl w für Benutzer sicher?

Einige Anwendungen erlauben die Übergabe von Passwörtern als Argument. Beispiel:

mysql --user=user_name --password=your_password db_name

Ist es sicher? Abgesehen davon, dass das eingegebene Passwort im Bash-Verlauf gespeichert wird, kann jemand wim entsprechenden Moment einen Befehl eingeben und sieht die vollständige Befehlszeile des Prozesses (einschließlich Passwort).

Für mich ist es eine große Überraschung, dass jeder Benutzer sehen kann, welchen Befehl ich gerade ausführe.

Antwort1

Die Befehlszeilenargumente jedes Prozesses im System gelten als „öffentlich“. Nicht nur der wBefehl, sondern psauch topviele andere Befehle greifen ganz selbstverständlich auf diese Informationen zu. Tatsächlich sind keine besonderen Berechtigungen erforderlich, um diese Informationen abzurufen. Unter Linux können Sie die Befehlszeile eines anderen Prozesses lesen, sogar eines Prozesses, der einem anderen Benutzer gehört, indem Sie lesen /proc/<pid>/cmdline.

Dies ist kein Fehler oder unsicheres Verhalten seitens woder topoder ps(oder cat). Die Verantwortung liegt vielmehr auf der Seite, die auf Mehrbenutzersystemen niemals vertrauliche Informationen über Befehlszeilen weitergibt.

Die meisten Dienstprogramme, die Passwörter in der Befehlszeile akzeptieren können, weisen darauf hin, dass dies nicht empfohlen wird. Beispielsweise heißt es in mysqlder Manpage von :

Die Angabe eines Passworts auf der Befehlszeile sollte als unsicher angesehen werden. Siehe Abschnitt 5.3.2.2, „Richtlinien für Endbenutzer zur Passwortsicherheit“. Sie können eine Optionsdatei verwenden, um die Eingabe des Passworts auf der Befehlszeile zu vermeiden.

Übrigens ist die Übergabe von Passwörtern oder sensiblen Daten in Umgebungsvariablen weniger offensichtlich unsicher, auf den meisten Systemen aber tatsächlich ebenfalls unsicher.

Antwort2

Nein, es ist nicht sicher, Passwörter über die Kommandozeile an Programme weiterzugeben. Besser ist es, Folgendes zu verwenden:

mohsen@debian:~$ mysql -uuser -p
Enter password: 

Antwort3

Auch wenn es nicht sicher ist, bedenken Sie bitte, dass Linux heutzutage erst Anfang zwanzig ist. Wie bei anderen Dingen in der IT waren die Auswirkungen auf die Sicherheit damals entweder noch nicht so klar oder wurden erst später angegangen.

Verwenden Sie daher, wie in den anderen Antworten erwähnt, kein Kennwort in der Befehlszeile.

Sie können (und sollten) die bereitgestellten Informationen auch einschränken, indem Sie entweder procfs with thedie Option „hidepid“ mounten oder diegrsicherheitgehärteter Kernel. Beachten Sie, dass dies einige Dinge beschädigen könnte (möglicherweise Cgroups und alles, was davon abhängt – wie z. B. systemd), zumindest zum Zeitpunkt des Schreibens.

verwandte Informationen