Kann man eine Schlüsseldatei als Passwort für sudo verwenden?

11

Kontext

Ich arbeite gerne in der Öffentlichkeit an meinem Laptop, aber ich benutze sudo auch gerne ohne Passwort. Nach dem, was ich jetzt weiß, würde ich die NOPASSWDOption in meiner sudoersDatei verwenden, aber natürlich kann jeder sudo verwenden, wie er möchte.

Ein wichtiger Gedanke , der mir in den Sinn kommt, ist, dass Sperrprogramme existieren. Ich würde es jedoch vorziehen, ein Flash-Laufwerk zu verwenden (und es nur für sudo zu verwenden), da (1) es schneller ist, (2) einfacher als mein Passwort einzugeben ist und (3) ich mich nicht mit Personen befasse, die auf meine Inhalte zugreifen oder schändlich handeln Dinge: Der Laptop wäre in der Öffentlichkeit für andere Menschen, und das einzige geistige Eigentum an meinem Laptop ist ein sehr einfaches Angular-Projekt.

Darüber hinaus möchten ich und andere möglicherweise den Missbrauch von sudo auf einem Computer verhindern, auf dem keine X- oder Wayland-Umgebung ausgeführt wird. Meine aktuelle Arbeit erfordert einen modernen Webbrowser, aber wenn ich jemals die Möglichkeit habe, X nicht zu verwenden und nur einen Multiplexer zu verwenden, mache ich das - mein Laptop ist etwas alt und langsam.

Frage

Was ich tun möchte, ist, eine Schlüsseldatei auf ein Flash-Laufwerk zu legen und das Flash-Laufwerk einfach anzuschließen, wenn ich am Laptop bin, und es herauszunehmen, wenn ich mich von ihm entferne.

Hier sind meine drei Fragen, die sich aus diesem Problem ergeben:

  1. Ist das mit sudo so wie es ist möglich?
  2. Wenn nicht, könnte ich ein Programm schreiben, mit dem ich dies tun kann?
  3. Wenn ja, welche Sprache ist möglicherweise die beste, um dieses Programm zu schreiben?

(4. [Vielleicht eine irrelevante Frage] Könnte dieses Paket separat sein oder müsste es eine Gabel aus Sudo sein?)

Hinweis

Wenn es relevant ist, ist mein Setup Arch Linux mit bspwm, keine Desktop-Umgebung. Der größte Teil meiner Arbeit ist die Webentwicklung in urxvt / vim und die Überprüfung mit Chrome.

Gage Sorrell
quelle
1
Entspricht pam_usb Ihren Anforderungen?
StrongBad
@StrongBad Oh ... yep. Es sieht so aus, als würde es nicht sofort nur Sudo machen und Login und Sudo zusammen machen, aber das ist mir egal. Vielen Dank!
Gage Sorrell
2
Okay, um das zu verdeutlichen, möchten Sie ständig angemeldet bleiben und nur verhindern, dass Benutzer sudo unter Ihrem Konto verwenden.
StrongBad
@StrongBad Richtig.
Gage Sorrell
Möglicherweise können Sie etwas konfigurieren, indem Sie das rootpwFlag in den /etc/sudoersDateien verwenden und die pam_usbRoot-Anmeldung einrichten.
RubberStamp

Antworten:

3

Ich bin mir nicht sicher, ob ich verstehe, warum die NOPASSWDOption Ihre Anforderungen nicht von alleine erfüllt, aber wenn Sie das Vorhandensein des Flash-Laufwerks benötigen möchten, kann ich mir etwas vorstellen, das fast das tut, wonach Sie suchen.

Dies ist eher eine Problemumgehung, aber Sie können beispielsweise einen lokalen Administrator erstellen superuserund diesem Benutzer kennwortlose sudoRechte erteilen , dh der /etc/sudoersDatei die folgende Zeile hinzufügen :

superuser ALL=(ALL) NOPASSWD:ALL

Sie können dann die Kennwortanmeldung deaktivieren und die Nur-Schlüssel-SSH-Authentifizierung für diesen Benutzer konfigurieren, dh passwd -l superuserdie folgende Zeilengruppe ausführen und zu Ihrer hinzufügen /etc/ssh/sshd_config:

Match user superuser
PasswordAuthentication no

Erstellen Sie dann ein SSH-Schlüsselpaar für diesen Benutzer. Fügen Sie den öffentlichen Schlüssel hinzu /home/superuser/.ssh/authorized_keysund legen Sie den privaten Schlüssel auf Ihrem Flash-Laufwerk ab. Wenn Sie das superuserKonto verwenden möchten, schließen Sie Ihr Flash-Laufwerk und ssh superusermit Ihrem privaten Schlüssel an das Konto an. Und voilà! Sie haben jetzt passwortlos sudofür Ihren Benutzer. Natürlich müssen Sie Ihre Shell-Sitzungen immer noch beenden, wenn Sie fertig sind - das Herausziehen des Flash-Laufwerks reicht nicht aus. Obwohl ich denke, Sie könnten auch einen Vorbefehlshook einrichten , um nach dem privaten Schlüssel zu suchen und ihn automatisch zu beenden , wenn er nicht vorhanden ist (oder wenn er ungültig ist).

igal
quelle
Eine einfache Antwort, um zu klären, warum Sie dies tun möchten. Für diesen Server versuche ich wieder einzusteigen. Ich habe nur den Root-Schlüssel, keinen Root-SSH-Zugriff. Ich bin an den ec2-Benutzer gebunden, den Sudo nach einem PW fragt, den ich nicht habe. Ich habe meinen Root-Schlüssel auf den Server übertragen, daher möchte ich diesen Schlüssel jetzt idealerweise verwenden, um Sudo-Zugriff zu erhalten. Dann kann ich Dinge reparieren.
Brian Thomas