Wie kann ich zulassen, dass ein Benutzer auf einen anderen übergeht, ohne dass er root-Zugriff hat?

53

Ich möchte bestimmten Benutzern erlauben, sich einem anderen Benutzerkonto anzuschließen, ohne das Kennwort dieses Kontos zu kennen, aber den Zugriff auf ein anderes Benutzerkonto (z. B. root) nicht zulassen.
Zum Beispiel möchte ich Tom erlauben, dass der DBA für den Oracle-Benutzer, nicht aber für den Tomcat-Benutzer oder den Root-Benutzer verwendet wird.

Ich stelle mir vor, dies könnte mit der Datei / etc / sudoers geschehen - ist das möglich? Wenn das so ist, wie?

gharper
quelle

Antworten:

44

Ja, das ist möglich.

In / etc / sudoers ist das unmittelbar auf equals folgende Element der Benutzer, unter dem der Befehl ausgeführt werden darf.

tom  ALL=(oracle) /bin/chown tom *

Der Benutzer (tom) kann sudo -u oracle / bin / chown tom / home / oracle / oraclefile eingeben

Brent
quelle
5
Dies würde es Tom ermöglichen, Befehle als Orakel auszuführen, aber nicht zum Orakelbenutzer zu werden
gharper
11
Was ist mit sudo -u oracle su -? Das würde ihm eine Granate geben, die als Orakelnutzer geöffnet wurde. Ist es das was du willst?
Brent
+1 für diesen letzten Kommentar, Brent. Das wäre meine Antwort.
Annika Backstrom
3
Etwas wie das Folgende würde funktionieren: sudo -u oracle -s oder sudo -u oracle -i (-s für Shell, -i für Login - führt eine Login-Shell aus). Leider weiß ich nicht ohne weiteres, was Sie in / etc / sudoers verwenden würden, um den Benutzer einzuschränken, aber da Sie ihnen den Shell-Zugriff erlauben, möchten Sie wahrscheinlich nur tom ALL = (oracle) ALL ausführen, wie jemand anderes erwähnt. Wenn sie eine Shell ausführen können, interessiert es Sie wahrscheinlich nicht, welche Befehle sie ausführen können.
Mark
1
Wollten Sie nicht, dass Tom Befehle als Oracle-Benutzer ausführt, anstatt Oracle-Benutzer zu werden? Der Unterschied ist gering, aber es wird ein hervorragendes Überwachungsprotokoll erstellt, ohne dass eine Überwachungsshell verwendet werden muss.
Scott Pack
40

Fügen Sie Ihrer / etc / sudoers so etwas wie hinzu

tom ALL=(oracle) ALL

Dann sollte Benutzer tom in der Lage sein, sudo zu verwenden, um Dinge als Benutzerorakel mit der Option -u auszuführen, ohne Tom zuzulassen

Dh, Sie erhalten eine Shell als Benutzer oracle (vorausgesetzt, Ihr sudo ist neu genug, um die Option -i zu haben).

sudo -u oracle -i
Kjetil Joergensen
quelle
5
Ich musste die Syntax verwenden tom ALL=(oracle)NOPASSWD:ALL, um sudo zu veranlassen, nicht nach dem Passwort zu fragen
snowindy
9

Fügen Sie Folgendes zu / etc / sudoers hinzu, um NUR die in der Frage genannten Funktionen bereitzustellen:

tom            ALL=(oracle)    /bin/bash

Dann kann tom:

sudo -u oracle bash -i
karimofthecrop
quelle
0

Zum Beispiel möchte ich Tom erlauben, dass der DBA für den Oracle-Benutzer, nicht aber für den Tomcat-Benutzer oder den Root-Benutzer verwendet wird.

Ich musste dies kürzlich auf einem System tun und hatte Schwierigkeiten, meine Notizen zu dem alternativen Setup zu finden, das ich vor Jahren verwendet habe und das auch die Syntax erlaubte su <user>. In meiner Situation musste ich sueinem bestimmten Benutzer mehrere Benutzer erlauben .

Erstellen Sie eine Gruppe, addgroup <groupName>die andere Benutzer suohne Kennwort verwenden können. Fügen Sie dann diese Gruppe zu jedem Benutzer hinzu, den Sie suohne Kennwort diesem Benutzer zuordnen möchten : usermod -a -G <groupName> <userName>(oder usermod -a -G oracle tom). Die Gruppenänderungen werden möglicherweise erst bei der nächsten Anmeldung wirksam.

Hinweis: In Ihrem Fall haben Sie die Gruppe bereits, da oraclesie erstellt wurde, als Sie den Oracle-Benutzer mit erstellt haben adduser oracle.

Bearbeiten Sie nun /etc/pam.d/suund unter:

# This allows root to su without passwords (normal operation)
auth       sufficient pam_rootok.so

..add auth rule lines, so dass der Abschnitt so aussieht:

# This allows root to su without passwords (normal operation)
auth       sufficient pam_rootok.so
auth       [success=ignore default=1] pam_succeed_if.so user = <groupName>
auth       sufficient   pam_succeed_if.so use_uid user ingroup <groupName>

Ersetzen Sie <groupName>mit oraclein diesem Fall. Dies ermöglicht es jedem Benutzer , die Teil der ist <groupName>zusu <groupName>

Jetzt tomkönnen su oracleund müssen Sie anderen Benutzern den gleichen Zugriff gewähren, indem Sie sie zu einer oracleGruppe hinzufügen .

ähnliche Frage hier

jtlindsey
quelle