Erlauben Sie einem bestimmten Benutzer oder einer Gruppe den Root-Zugriff ohne Kennwort für / bin / date

7

Ich möchte einem Benutzer oder einer Gruppe vollen Root-Zugriff auf den Befehl / bin / date gewähren, einschließlich aller in den Manpages definierten Argumente.

Ich verstehe, /etc/sudoerserwartet explizite Befehlsdefinitionen, daher habe ich derzeit Folgendes:

%some_group ALL=(root) NOPASSWD: /bin/date

Ich möchte beispielsweise, dass jeder Benutzer in some_group Folgendes ausführen kann:

sudo /bin/date +%T "12:34:56"

Plus unzählige andere Kombinationen von Argumenten.

Ich denke meine Frage ist, gibt es eine Möglichkeit, Regex oder sichere (Betonung auf sichere!) Platzhalter zu verwenden, um die feinere Granularität zu erreichen?

AKTUALISIEREN

Mit Cmnd_Alias ​​habe ich etwas Ähnliches erreicht. Warum dies nicht ohne funktioniert, ist ein Rätsel, das über die Zeit hinausgeht, um weiter über das Innenleben sudound die Sudoer zu lesen .

Ihre Syntax wurde nicht ganz akzeptiert, aber ich habe es geschafft, das zu erreichen, was ich brauchte:

Cmnd_Alias DATE=/bin/date
%some_group ALL=(root) NOPASSWD: DATE

Dies tat genau das, was ich als Mitglied der definierten Gruppe brauchte.

peterRepeater
quelle

Antworten:

7

Sie können den Befehl sudo verwenden, um dies zu erreichen. Wenn Sie Ihrer / etc / sudoers-Datei die folgende Regel wie folgt hinzufügen:

Als root oder mit sudo von Ihrem normalen Benutzerkonto:

$ sudo visudo

Dadurch wird die /etc/sudoersDatei in vi / vim geöffnet . Fügen Sie nach dem Öffnen die folgenden Zeilen hinzu:

Cmnd_Alias NAMEOFTHIS=/bin/date
ALL ALL=NOPASSWD: NAMEOFTHIS

Wobei "Benutzer" eine Unix-Gruppe ist, zu der alle Benutzer gehören. Sie können mit dem groups <username>Befehl oder in den Dateien /etc/groupsund bestimmen, in welcher Gruppe sich Benutzer befinden /etc/passwd.

Wenn Sie einen Abschnitt wie diesen haben, würde ich die obigen Regeln hier wie folgt hinzufügen:

## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

# my extra rules
Cmnd_Alias NAMEOFTHIS=/bin/date
ALL ALL=NOPASSWD: NAMEOFTHIS
slm
quelle
1
Ich verstehe die Zeile "ALL ALL = NOPASSWD: Benutzer" nicht. Was soll das sein, eine Benutzerspezifikation? Zitat aus man sudoers: "Die Grundstruktur einer Benutzerspezifikation ist" who where = (as_whom) what ""
Hauke ​​Laging
Wird abstimmen, wenn ich genügend Repräsentanten habe! :)
PeterRepeater
1
@HaukeLaging - Die Zeile, nach der Sie fragen, stammt direkt aus der Sudoers-Manpage auf Fedora. Es heißt, dass jeder die Befehle in der Cmnd_Alias NAMEOFTHISohne Passwort ausführen kann . linuxmanpages.net/manpages/fedora12/man5/sudoers.5.html
slm
14

Wenn Sie unter GNU / Linux arbeiten und Lust auf etwas "Neues" haben, pam_cap.sokönnen bestimmte Benutzer bestimmte Benutzer dazu bringen, CAP_SYS_TIMEdie Systemzeit ohne sudooder zu ändern su. Sie konfigurieren es einfach als Sitzungsmodul für die Authentifizierung ( sshoder loginwas auch immer), fügen den Benutzer / die Funktionen hinzu, die Sie /etc/security/capabilities.confdann ausführen möchten, setcap CAP_SYS_TIME+ei /bin/dateund schon kann es losgehen. pam_cap kann jedoch noch keine Gruppen erstellen, sodass Sie für jeden Benutzer, den Sie ausführen möchten, kopieren / einfügen müssen.

Wenn Sie möchten, dass alle Systembenutzer die Systemzeit ändern können, können Sie alle pam_cap-Inhalte vergessen und einfach eine Aktion ausführen, setcap CAP_SYS_TIME+ep /bin/datedie im Wesentlichen das Analogon von Capabilities zum Hinzufügen des Setuid-Bits zu einer Binärdatei ist (ähnlich können Sie dies nicht tun Skripte und wenn Sie in die ausführbaren Dateien schreiben, werden Fähigkeitsflags und setuid / setgid-Bits vom Kernel gelöscht.

dateEs ist ziemlich sicher, sudo zu durchlaufen (es gibt nicht viele Möglichkeiten, wie Sie versuchen können, ein so einfaches Dienstprogramm auszunutzen, außer durch Ersetzen nach rechts, aber der Angreifer müsste einen Weg finden, in Verzeichnisse zu schreiben, für die nur root Schreibberechtigungen hat) -able, aber die Funktionen lassen die Gewährung von Berechtigungen für Endbenutzer nahtloser erscheinen (sie müssen nicht denken "Oh, ich muss darüber nachdenken", sie tun einfach das, was sie versuchen, und es funktioniert) und sind eingeschränkt (Sie erhalten nur einen bestimmten Satz erhöhter Berechtigungen). sudo ist ein Nur-Setuid-Mechanismus (zumindest vorerst) und kann nur in Bezug auf diese oder jene ausführbare Datei denken, und was auch immer diese Datei tut (ob Binär oder Skript, das Sie geschrieben haben), es kann dies mit vollen Root-Rechten tun.

setuid ist ein alter alter alter Mechanismus , dass es im Grunde auf dem Weg aus auf den meist GNU / Linux und Unix - Implementierungen. Der vollständige Root-Zugriff ist für die Vögel. Warum CAP_SYS_ADMIN oder CAP_NET_ADMIN geben, wenn Sie nur versuchen, die Benutzer die Systemzeit ändern zu lassen? Sicher, ich kann mir keine Möglichkeit vorstellen /bin/date, etwas Böses auszunutzen , aber die meisten Exploits sind nicht intuitiv, bis sie entdeckt und demonstriert werden (hoffentlich enthält die Software keine offensichtlichen Exploits, meine ich).

Wenn Sie mit * BSD oder Solaris arbeiten, haben sie das gleiche Konzept, das sie nur "Berechtigungen" anstelle von "Funktionen" nennen, da "Funktionen" auf diesen Plattformen bereits der Name eines sicherheitsrelevanten Mechanismus war (ungefähr analog zu LxC) und / oder SELinux, fwiw). Die Implementierungsdetails unterscheiden sich zwischen Berechtigungen und Linux-Funktionen, aber das Basiskonzept ist dasselbe (so implementiert Solaris 11 auch das Sicherheitsmodell "Root as Role").

Bratchley
quelle
1
Hervorragende Resonanz und sehr interessante Punkte. Informationssicherheit ist ein Thema, das mich interessiert, deshalb haben Sie mir einige Punkte gegeben, zu denen ich etwas mehr lesen kann. Vielen Dank!
PeterRepeater
1
Wird abstimmen, wenn ich genügend Repräsentanten habe! :)
PeterRepeater