Ich muss zulassen martin
, dass Benutzer martin-test
ohne Kennwort zu Benutzer wechseln
su - martin-test
Ich denke, das kann in konfiguriert werden /etc/pam.d/su
. In dieser Datei befinden sich bereits einige Zeilen, die nicht kommentiert werden können. Die Idee, Benutzer martin
zu einer Gruppe hinzuzufügen, gefällt mir jedoch nicht wheel
. Ich möchte nicht martin
mehr Privilegien geben, als wechseln zu können martin-test
. Ich möchte auch nicht verwenden sudo
.
Was wäre der beste Weg, dies zu tun und gleichzeitig die Rechte des Benutzers martin
minimal zu halten?
users
password
authentication
pam
Martin Vegter
quelle
quelle
sudo
zsudo -u martin-test -i
. Gibt es einen Grund, nach dem Sie speziell fragensu
?sudo
nur deswegen installieren (ich benutze es normalerweise nichtsudo
und es gefällt mir nicht besonders). Und ich denke, die Verwendungpam
ist sauberer und transparenter.sudo
war es gedacht. Abgesehen davon, dass Sie es normalerweise nicht verwenden, was sind die Einwände?pam
, würde ich das vorziehensudo
. Wennsudo
die einzige Möglichkeit ist, ist das auch in Ordnung. Meine Einwändesudo
sind größtenteils ideologischer Natur: Mir gefällt die Idee nicht, dass Benutzer mit Administration arbeitensudo foo
. Wenn ich die Administration durchführen muss, melde ich mich als root an. Andernfalls melde ich mich als Benutzer an. Diese beiden unterschiedlichen Rollen sollten nicht gemischt werden. Außerdem habe ich bereits einepam
Infrastruktur installiert. Ich möchte kein anderessetuid
Programm installieren , das möglicherweise Sicherheitslücken enthält.sudo foo
spezifischen Befehle ausführen. Sudo hatsudo -s
eine Shell gestartet. sudo ist ein weit verbreitetes Dienstprogramm, das bedeutet, dass seine Sicherheit gründlich überprüft wurde, weit mehr als irgendein Pam-Trick. Ich würde auch argumentieren, dass das Abrufen einer Root-Shell für Aufgaben viel unsicherer ist als das Starten bestimmter Befehle. Wenn Sie eine Shell starten, führen Sie alles als root aus. Wenn eines dieser Dinge (wie ein einfachesls
) eine Sicherheitslücke aufweist, haben Sie gerade eine Sicherheitslücke geöffnet.Antworten:
Fügen Sie die folgenden Zeilen direkt unter der
pam_rootok.so
Zeile in Ihrem ein/etc/pam.d/su
:Diese Zeilen führen Prüfungen mit dem
pam_succeed_if.so
Modul durch. Weitere Informationen zu denauth
Zeilen finden Sie auch in der Syntax der Linux-PAM-Konfigurationsdatei .martin-test
. Wenn dies der Fall ist, passiert nichts (success=ignore
) und wir fahren in der nächsten Zeile fort, um den aktuellen Benutzer zu überprüfen . Ist dies nicht der Fall, wird die nächste Zeile übersprungen (default=1
) und die nachfolgenden Zeilen werden mit den üblichen Authentifizierungsschritten fortgesetzt.martin
. Wenn dies der Fall ist, betrachtet das System den Authentifizierungsprozess als erfolgreich und gibt (sufficient
) zurück. Ist dies nicht der Fall, passiert nichts und wir fahren in den folgenden Zeilen mit den üblichen Authentifizierungsschritten fort.Sie können auch einschränken
su
zu einer Gruppe, hier die Gruppeallowedpeople
kannsu
ohne Passwort:quelle
Wenn Sie keine Gruppen ändern oder verwenden möchten
sudo
, verwenden Sie ein Pam-Modul, das aufgerufen wirdpam_exec
, um externe Skripts in einer Pam-Phase auszuführen.Fügen Sie
/etc/pam.d/su
nach derpam_rootok.so
Zeile eine Zeile ein :/path/to/script
hat die Berechtigungen 755 (rwxr-xr-x) und den folgenden Inhalt:Dieses Skript existiert also mit Erfolg, wenn
su
:martin
undmartin-test
.Sehen:
quelle
/etc/pam.d/su
, um siepam_access
für meine Situation zu nutzen?pam_access
nicht. Wennsu
der Pam-Stack durchlaufen wird, geschieht dies als der Benutzer, zu dem Sie wechseln, und nicht als der Benutzer, von dem Sie wechseln. Also , wenn Sie eine Regel wie hinzufügen+ : martin : ALL
, wird es ermöglichen , jemand Wechsel zumartin
. Auch wenn Sie zu wechselnmartin
,martin-test
lässt es trotzdem jeden zu. Sie müssen sowohl den Benutzer analysieren, von dem Sie kommen, als auch den Benutzer, zu dem Sie wechseln. Wirklich, das ist genau das, wassudo
für ...Wenn Sie keinen Zugriff auf das Root-Konto haben, aber das Kennwort des Benutzers haben, den Sie zum Ausführen eines Befehls verwenden möchten, können Sie Folgendes tun.
Installieren Sie einfach Ihren öffentlichen Schlüssel in authorized_keys von toto
quelle
Meine einfache Lösung lautet:
Wenn Sie sudo um jeden Preis vermeiden möchten, sollte es meiner Meinung nach möglich sein, dies in ein Skript einzufügen:
Ich kann jedoch die
chown root
undchmod +s ToTest.sh
Bits nicht herausfinden , damit dies tatsächlich funktioniert:Ich laufe immer noch wie mein normaler Benutzer, wie das Echo mir sagt. Und es erfordert immer noch sudo Passwort. Wenn es als root laufen würde, könnte man das
sudo
in der letzten Zeile beseitigen ...quelle
bash
befindet, warum nehmen Sie an, dass Sie wissen, woenv
sich oder befindet ob es überhaupt existiert?). Aber am Ende wissen Sie nicht genau, wasbash
das sein wird. Es könnte aus dem Verzeichnis des aufrufenden Benutzers stammen und eine Minute zuvor aus seinem Quellcode kompiliert worden sein. Sie sehen, wohin ich gehe? Oder der Benutzer könnte überschreibenwhoami
...