Я хочу предоставить конкретному (обычному) пользователю grep
доступ к моим почтовым журналам (/var/log/maillog*
).
Я не готов менять права доступа к журналу, так как они должны остаться root
-только, поэтому я думаю, что предпочтительным решением будет через sudoers
.
Также: я хочу предоставить как можно меньше других разрешений, в идеале пользователь просто имеет доступ к почтовому журналу (и повернутым файлам).
Например:
username ALL= NOPASSWD: /bin/grep
Позволяет этому пользователю в основном grep
в любом файле в системе, чего я бы хотел избежать.
Какое здесь лучшее решение?
К вашему сведению: это не должно быть grep
по сути: пользователю просто нужен доступ для чтения к почтовым журналам, и он, вероятно, будет использовать только grep
чтобы получить к ним доступ.
Вы можете использовать acl для файла (ов), чтобы предоставить пользователю разрешение на чтение.
setfacl -m user:grepuser:r /var/log/maillog*
Это преимущество, позволяющее пользователю использовать любой инструмент, который он пожелает.
Это также безопасно для logrotate для maillog *
Это должно работать, как ожидалось, в sudoers файл:
%users ALL= /bin/cat /var/log/mail.log
%users ALL= /bin/cat /var/log/mail.err
(пути журналов из Ubuntu, при необходимости измените)
Используя общий инструмент только для вывода, например кошка просто и безопасно. Вам не нужно разрешать и ограничивать определенные параметры, как в grep прямо в sudoers. Это также позволит фильтровать логи с любыми grep-or-not инструмент, т.е. awk, sed.
Не знаю как судо настроен в CentOS, но если он запрашивает пароль вызов пользователь (не из цель пользователь), я бы не стал использовать NOPASSWD. Это может быть преимуществом в безопасности, если какая-либо враждебная сторона получит доступ к учетной записи пользователя, не зная пароля пользователя.
Если вы не знаете, какие конкретные строки будут искать пользователи и какие файлы они будут проверять, используя sudo
не лучшее решение для этого. Если вы создадите такое правило:
blizz ALL=root NOPASSWD: /bin/grep * /var/log/maillog*
Пользователь сможет запускать такие команды:
grep root /etc/shadow /var/log/maillog
grep = /root/my.cnf /var/log/maillog
Они смогут читать любой файл в системе. Вы можете найти дополнительную информацию об этой проблеме здесь:
http://blog.csnc.ch/2012/10/dangerous-sudoers-entries-part-4-wildcards/
Если вы знаете, какие строки и файлы будет проверять пользователь, вы можете определить отдельные правила для каждого сценария. Например:
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
Однако это может быть обременительно и может привести к чрезмерно большой конфигурации sudo.
В качестве альтернативы вместо grep
вы можете предоставить им доступ к файлам через more
команда, тогда они могут искать файлы в интерактивном режиме:
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
Однако это не позволяет пользователю вести историю своих поисков (например, .bash_history
) или создавать собственные скрипты или псевдонимы для поиска. Кроме того, если у вас есть ротация журналов, они не смогут анализировать сжатые журналы.
Примечание: Не предоставить sudo доступ к less
команда. Пользователь может выйти из процесса, например, запустив !/bin/bash
в less
предоставит им root-доступ к системе.
Другой вариант - установить для них правила cat
файлы, чтобы они могли передать их grep
как их сердце считает нужным. Например:
sudo cat /var/log/maillog | grep "anything can go here"
В конце концов, самое простое и, вероятно, лучшее решение - предоставить им доступ для чтения к журналам, изменив разрешения для файлов журналов. Вы можете сделать что-то вроде этого:
groupadd logcheck
chgrp logcheck /var/log/maillog*
chmod g+r /var/log/maillog*
useradd -G logcheck blizz
А затем они могут использовать любой инструмент, который они хотят анализировать файлы (например, grep
, zgrep
, less
, more
, view
, и т.д).