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/sudoers
erwartet 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 sudo
und 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.
quelle
man sudoers
: "Die Grundstruktur einer Benutzerspezifikation ist" who where = (as_whom) what ""Cmnd_Alias
NAMEOFTHIS
ohne Passwort ausführen kann . linuxmanpages.net/manpages/fedora12/man5/sudoers.5.htmlWenn Sie unter GNU / Linux arbeiten und Lust auf etwas "Neues" haben,
pam_cap.so
können bestimmte Benutzer bestimmte Benutzer dazu bringen,CAP_SYS_TIME
die Systemzeit ohnesudo
oder zu ändernsu
. Sie konfigurieren es einfach als Sitzungsmodul für die Authentifizierung (ssh
oderlogin
was auch immer), fügen den Benutzer / die Funktionen hinzu, die Sie/etc/security/capabilities.conf
dann ausführen möchten,setcap CAP_SYS_TIME+ei /bin/date
und 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/date
die 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.date
Es 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").
quelle