Erlaube sudo einem anderen Benutzer ohne Passwort

46

Ich möchte in der Lage sein, einem bestimmten Benutzer "su" zuzuweisen, sodass ich jeden Befehl ausführen kann, ohne dass ein Kennwort eingegeben wird.

Zum Beispiel:

Wenn mein Login user1 wäre und der Benutzer, dem ich mich anschließen möchte, user2 ist:

Ich würde den Befehl verwenden:

su - user2

aber dann fordert es mich mit

Password:

zio
quelle
Fragen Sie den anderen Benutzer nach dem Passwort. Zumindest der andere Benutzer weiß, was unter seiner / ihrer ID getan wurde.
Global Nomad
1
Dies hat nichts mit einem anderen physischen Benutzer zu tun. Beide Ausweise gehören mir. Ich kenne das Passwort, als ich das Konto erstellt habe. Ich möchte einfach nicht jedes Mal das Passwort eingeben müssen.
Zio
Wäre es in Ordnung, ssh an einen Benutzer zu senden, oder müssen Sie eine bestimmte Shell erben und benötigen su, um zu arbeiten?
bmike
1
@ Zio Great Use Case. Funktioniert das open -na Skypebei dir nicht?
bmike

Antworten:

66

sudo kann genau das für dich tun :)

Es muss zwar ein bisschen konfiguriert werden, aber sobald Sie fertig sind, würden Sie nur Folgendes tun:

sudo -u user2 -s

Und Sie würden als Benutzer2 angemeldet sein, ohne ein Passwort einzugeben.

Aufbau

: So konfigurieren Sie sudo, müssen Sie die Konfigurationsdatei über bearbeiten visudo. Hinweis: Dieser Befehl öffnet die Konfiguration mit dem viTexteditor. Wenn Sie damit nicht vertraut sind, müssen Sie einen anderen Editor (mit export EDITOR=<command>) festlegen, bevor Sie die folgende Zeile ausführen. Ein anderer Befehlszeilen-Editor, der manchmal als einfacher angesehen wird nano, ist das , was Sie tun würden export EDITOR=/usr/bin/nano. Normalerweise benötigen Sie Superuser-Rechte für visudo:

sudo visudo

Diese Datei ist in verschiedene Abschnitte gegliedert, die Aliase, dann die Standardeinstellungen und am Ende haben Sie die Regeln. Hier müssen Sie die neue Zeile hinzufügen. Sie navigieren also am Ende der Datei und fügen Folgendes hinzu:

user1    ALL=(user2) NOPASSWD: /bin/bash

Sie können auch ersetzen /bin/bashdurch ALLund dann könnten Sie einen Befehl wie benutzer2 starten , ohne ein Passwort: sudo -u user2 <command>.

Wenn Sie zu einem beliebigen Benutzer wechseln möchten, verwenden Sie einfach

user1    ALL=(ALL) NOPASSWD: /bin/bash

Aktualisieren

Ich habe gerade Ihren Kommentar zu Skype gesehen. Sie können Skype auch direkt zur Konfigurationsdatei von sudo hinzufügen. Ich gehe davon aus, dass Sie Skype in Ihrem Anwendungsordner installiert haben :

user1    ALL=(user2) NOPASSWD: /Applications/Skype.app/Contents/MacOS/Skype

Dann würden Sie vom Terminal aus anrufen:

sudo -u user2 /Applications/Skype.app/Contents/MacOS/Skype
Huygens
quelle
Dies ist weitaus unkomplizierter als die Idee mit den SSH-Schlüsseln. Verwenden Sie diese Option, es sei denn, Sie benötigen die SSH-Schlüssel auch für den Fernzugriff.
bmike
2
Unter Sicherheitsaspekten ist zu beachten, dass das Angeben eines bestimmten Befehls voraussetzt, dass es sich um einen schreibgeschützten Befehl für Benutzer1 handelt. Andernfalls können sie den Befehl mit etwas anderem überschreiben und als user2 ausführen. Und wenn Ihnen das egal ist, können Sie auch angeben, dass user1 jeden Befehl als user2 ausführen kann und daher eine einfachere sudo-Konfiguration hat.
Stan Kurdziel
@ StanKurdziel guter Punkt! Obwohl es etwas zu beachten ist, ist es wirklich selten, dass System-Executables von Benutzern geschrieben werden können, es sei denn, Sie sind root, aber in diesem Fall brauchen Sie kein sudo ;-) Aber Sie haben Recht, diesen Kommentar hinzuzufügen, weil er so selten ist dass ich es wahrscheinlich mehr als einmal übersehen habe.
Huygens
Um es näher an das Verhalten zu bekommen su - user2statt su user2, sollten die Befehle wahrscheinlich alle beinhalten sudo -u user2 -i, um eine Erstanmeldung als user2 zu simulieren
Gert van den Berg
4

Ich würde öffentliche / private SSH-Schlüssel für das zweite Konto einrichten und den Schlüssel im ersten Konto speichern.

Dann könnten Sie einen Befehl ausführen wie:

 ssh user@localhost -n /Applications/Skype.app/Contents/MacOS/Skype &

Es treten weiterhin Probleme auf, bei denen Skype verwirrt wird, da zwei Instanzen unter einem Benutzerkonto ausgeführt werden und von diesem Programm gelesene / geschriebene Dateien möglicherweise in Konflikt stehen. Es könnte auch gut genug für Ihre Bedürfnisse funktionieren und Sie benötigen keinen iPod touch, um Ihre zweite Skype-Instanz auszuführen.

bmike
quelle
1
Dies ist eine gute, sichere Lösung für den allgemeinen Fall der passwortfreien Anmeldung bei einem beliebigen Konto auf einem beliebigen Host, aber ich würde sagen, es ist wahrscheinlich übertrieben, wenn sich beide Konten auf demselben Host befinden und demselben Benutzer gehören.
calum_b
@scottishwildcat Es ist weitaus sicherer als die Alternative, ein Skript für das Kennwort zu erstellen und es im Klartext einzugeben oder eine Variable zu verwenden und das Kennwort im Schlüsselbund zu speichern und ein Tool expectzu verwenden, mit dem die Interaktion mithilfe von Skripten ausgeführt werden kann. Ich benutze einfach sudo su - blahmein Passwort und gebe es ein. Ich denke, die andere Antwort deckt sudo gut genug ab, um dies als Kommentar festzuhalten.
bmike
Oh, ich habe auf keinen Fall vorgeschlagen, Ihre Antwort zu streichen. Ich habe nicht einmal falsch abgestimmt, das ist eine sehr gute Antwort.
calum_b
Wir scheinen uns vollkommen einig zu sein - danke für die Hinzufügung -. Wenn Sie die Antwort verbessern können, können Sie sie gerne bearbeiten.
bmike
Die akzeptierte Lösung ( sudo -u user2 <...>) hat den Vorteil, dass sie nicht remote verwendet werden kann, was zur Sicherheit beitragen kann - es gibt keinen privaten Schlüssel für Benutzer1, der gestohlen werden kann.
Gert van den Berg