Shtsh 02.09.2011 17:51

Tips & tricksПросматриваем логи обычным пользователем в gentoo

В gentoo по-умолчанию для логов используется syslog-ng. Но, мне очень портило жизнь, что логи можно было просматривать только рутом. Наконец-то дошли руки поправить это.

Настройки syslog-ng находятся в файле /etc/syslog-ng/syslog-ng.conf

Нам нужна часть
1
2
3
options {

};



Там есть такая опция perm(), которая указывает права на доступ к логам. Конечно, можно сделать 644, но лучше воспользуемся опцией group(), которая указывает на группу, от имени которой будут писаться логи - это поможет нам указывать пользователей, которым нужен доступ к логам.

1
2
3
4
options {
perm(0640);
group("log");
};



После этого добавляем пользователя в группу log
1
gpasswd -a имя log


Выставляем права на папку с логами
1
chown -R root:log /var/log


и перезапускаем демон
1
/etc/init.d/syslog-ng restart



После этого можно смотреть под теми пользователями, которые находятся в группе log


Тэги: Gentoo groups syslogng
+ 3 -
Похожие Поделиться

predator 02.09.2011 18:09 #
А считается ли это брешью в безопасности?
Т.е. стоит ли такое делать на рабочем сервере?
Может ли это помочь при взломе рута от имени обычного пользователя?
cppmm 02.09.2011 18:17 #
Взлому не поможет, но лишнюю инфу о сервере злоумышленнику выдаст. С другой стороны, на грамотно настроенном сервере обычно стараются свести к минимуму необходимость ввода пользователем команды su, разграничивая права и возможности между разными админами, каждый из которых работает под своим несуперпользователем.
cppmm 02.09.2011 18:15 #
А вот не встречал чего-нибудь похожего для портажей?
Проблема вот в чём. Есть у меня скриптик для мониторинга того, что сейчас собирается с помощью emerge. Скриптик простейший и написанный на коленке. Он смотрит в /var/tmp/portage, читает название диры, которая там есть и среди прочей статистики из этого названия определяет, какой пакет в данный момент в процессе сборки. Нужно мне это для того, чтобы если у меня там на десктопе, к примеру, мир обновляется, а я с буком на кухне мылинукс читаю и по ssh периодически поглядываю в вывод этого скриптика. Банальный интерес.
Так вот сейчас приходится запускать скрипт от рута, потому как у пользователя, разумеется, нет доступа в /var/tmp/portage и дира временная там создаётся тоже с рутовыми правами. Если бы каким-нибудь образом так же прописать в портажах, чтобы оно создавало это всё дело с правами пользователя рута, а группы типа emerge, было круто.
На всякий случай, вот он быдлоскриптик:
#!/bin/bash
#

PORTAGE_TMPDIR="/var/tmp/portage"
BUILD_LOG="temp/build.log"

while [ "$(ps -C emerge)" ]
do
EMERGE_PIDS=$(ps -C emerge -o pid=)
EMERGE_PID=99999999
for PID in $EMERGE_PIDS
do
if [[ "$PID" -lt "$EMERGE_PID" ]]
then
EMERGE_PID=$PID
fi
done
EMERGE_TIME=$(ps -p ${EMERGE_PID} -o etime=)
CATEGORY=$(ls ${PORTAGE_TMPDIR})
PACKET=$(ls ${PORTAGE_TMPDIR}/${CATEGORY})
COUNT=$(($(date +%s) - $(date -r ${PORTAGE_TMPDIR}/${CATEGORY} +%s)))
OLD_PACKET=${PACKET}
clear
echo "Emerge working monitor. Emerge pid=${EMERGE_PID}."
echo "Emerge started ${EMERGE_TIME} ago."
echo "----------------"
echo "Now merging: ${PACKET}"
echo "Time: $COUNT sec"
echo "----------------"
echo "Last message:"
echo "$(tail -n 1 ${PORTAGE_TMPDIR}/$CATEGORY/$PACKET/$BUILD_LOG)"
sleep 1;
done
Shtsh 02.09.2011 18:49 #
А почему не анализировать /var/log/emerge.log
Shtsh 02.09.2011 19:17 #
/usr/lib/portage/pym/_emerge/EbuildBuildDir.py

Поправь там маску. А лучше сделай патч и свой ебилд.
cppmm 03.09.2011 16:17 #
Спасибо, это, похоже, то, что мне нужно.
А анализировать emerge.log не очень хочется - парсить лень. Ну и плюс из build.log я вытягиваю сообщения, показываемые при сборке. Мелочь, а приятно.
Scrill 02.09.2011 21:37 #
Откуда взялась группа 'log'? Можно же использовать уже существующую стандартную, например 'adm'
Shtsh 02.09.2011 21:49 #
Можно. Группу я создал сам специально для того, чтобы можно было раздавать только права на просмотр логов. Плюс придерживаюсь мнения, что созданное самим нужно как-то отделять от системного для более удобного управления.