
Ich möchte einem bestimmten (normalen) Benutzer grep
Zugriff auf meine Maillogs ( /var/log/maillog*
) gewähren.
Ich bin nicht bereit, die Protokollberechtigungen zu ändern, da sie weiterhin root
nur -Berechtigungen haben sollten. Daher denke ich, dass die bevorzugte Lösung über wäre sudoers
.
Außerdem: Ich möchte so wenig andere Berechtigungen wie möglich erteilen, idealerweise hat der Benutzer nur Zugriff auf das Mailprotokoll (und die rotierten Dateien).
Z.B:
username ALL= NOPASSWD: /bin/grep
Ermöglicht dem Benutzer grundsätzlich den Zugriff grep
auf jede Datei im System, was ich vermeiden möchte.
Was ist hier die beste Lösung?
Zur Info: Das muss nicht grep
unbedingt so sein: Der Benutzer benötigt lediglich Lesezugriff auf die Maillogs und wird grep
diese vermutlich auch nur nutzen, um darauf zuzugreifen.
Antwort1
Sie können eine ACL für die Datei(en) verwenden, um dem Benutzer Leseberechtigung zu erteilen
setfacl -m user:grepuser:r /var/log/maillog*
Dies hat den Vorteil, dass der Benutzer jedes gewünschte Werkzeug verwenden kann.
Dies ist auch Logrotate-sicher für Maillog*
Antwort2
Wenn Sie nicht wissen, nach welchen spezifischen Zeichenfolgen die Benutzer suchen und welche spezifischen Dateien sie zum Prüfen verwenden, sudo
ist dies keine gute Lösung. Wenn Sie eine Regel wie diese erstellen:
blizz ALL=root NOPASSWD: /bin/grep * /var/log/maillog*
Der Benutzer kann Befehle wie diese ausführen:
grep root /etc/shadow /var/log/maillog
grep = /root/my.cnf /var/log/maillog
Sie können alle Dateien auf dem System lesen. Weitere Informationen zu diesem Problem finden Sie hier:
http://blog.csnc.ch/2012/10/dangerous-sudoers-entries-part-4-wildcards/
Wenn Sie wissen, welche Zeichenfolgen und Dateien der Benutzer überprüfen wird, können Sie für jedes Szenario separate Regeln definieren. Beispiel:
Cmnd_Alias MAILLOGA = /bin/grep 'Connection refused' /var/log/maillog
Cmnd_Alias MAILLOGB = /bin/grep 'Connection refused' /var/log/maillog.1
Cmnd_Alias MAILLOGC = /bin/grep 'imap-login' /var/log/maillog
Cmnd_Alias MAILLOGD = /bin/grep 'imap-login' /var/log/maillog.1
blizz ALL=root NOPASSWD: MAILLOGA, MAILLOGB, MAILLOGC, MAILLOGD
Dies kann jedoch umständlich sein und zu einer zu großen Sudo-Konfiguration führen.
Alternativ grep
können Sie ihnen den Zugriff auf die Dateien auch über den more
folgenden Befehl gewähren, damit sie die Dateien interaktiv durchsuchen können:
Cmnd_Alias MAILLOG = /bin/more /var/log/mailllog
Cmnd_Alias MAILLOG1 = /bin/more /var/log/mailllog.1
Cmnd_Alias MAILLOG2 = /bin/more /var/log/mailllog.2
Cmnd_Alias MAILLOG3 = /bin/more /var/log/mailllog.3
blizz ALL=root NOPASSWD: MAILLOGA, MAILLOGB, MAILLOGC, MAILLOGD
Dies ermöglicht es dem Benutzer jedoch nicht, einen Suchverlauf zu speichern (z. B. .bash_history
) oder eigene Skripte oder Aliase für Suchvorgänge zu erstellen. Wenn Sie außerdem eine Protokollrotation eingerichtet haben, können sie die komprimierten Protokolle nicht analysieren.
Notiz:Nichtgewähren Sie sudo Zugriff auf den less
Befehl. Ein Benutzer könnte den Prozess abbrechen, indem er beispielsweise !/bin/bash
in ausführt less
, um Root-Zugriff auf das System zu erhalten.
Eine andere Möglichkeit besteht darin, Regeln für die Dateien festzulegen cat
, damit sie diese grep
nach Belieben weiterleiten können. Zum Beispiel:
sudo cat /var/log/maillog | grep "anything can go here"
Die einfachste und wahrscheinlich beste Lösung besteht letztlich darin, ihnen Lesezugriff auf die Protokolle zu gewähren, indem Sie die Berechtigungen für die Protokolldateien ändern. Sie könnten etwa Folgendes tun:
groupadd logcheck
chgrp logcheck /var/log/maillog*
chmod g+r /var/log/maillog*
useradd -G logcheck blizz
Und dann können sie jedes beliebige Tool zur Analyse der Dateien verwenden (z. B. grep
, zgrep
, less
, more
, view
, usw.).
Antwort3
Dies sollte wie erwartet funktionieren insudoersDatei:
%users ALL= /bin/cat /var/log/mail.log
%users ALL= /bin/cat /var/log/mail.err
(Logpfade von Ubuntu, ggf. ändern)
Durch die Verwendung eines generischen, ausschließlich auf die Ausgabe ausgerichteten Tools wieKatzeist einfach und sicher. Sie müssen keine bestimmten Optionen zulassen und einschränken wie beigrepdirekt in sudoers. Es ermöglicht auch das Filtern der Protokolle mit allengrep-oder-nichtWerkzeug, dh.awk,sed.
Nicht sicher wiesudoist in CentOS konfiguriert, aber wenn es nach einem Passwort vonBerufungBenutzer (nicht vonZielBenutzer), würde ich vermeiden,Kein PasswdDies kann ein Sicherheitsvorteil sein, wenn eine feindliche Partei Zugriff auf das Benutzerkonto erhält, ohne das Kennwort des Benutzers zu kennen.