Shtsh 02.09.2011 17:51
Tips & tricks — Просматриваем логи обычным пользователем в gentoo
В gentoo по-умолчанию для логов используется syslog-ng. Но, мне очень портило жизнь, что логи можно было просматривать только рутом. Наконец-то дошли руки поправить это.Настройки syslog-ng находятся в файле /etc/syslog-ng/syslog-ng.conf
Нам нужна часть
1 |
|
Там есть такая опция perm(), которая указывает права на доступ к логам. Конечно, можно сделать 644, но лучше воспользуемся опцией group(), которая указывает на группу, от имени которой будут писаться логи - это поможет нам указывать пользователей, которым нужен доступ к логам.
1 |
|
После этого добавляем пользователя в группу log
1 |
|
Выставляем права на папку с логами
1 |
|
и перезапускаем демон
1 |
|
После этого можно смотреть под теми пользователями, которые находятся в группе log
Взлому не поможет, но лишнюю инфу о сервере злоумышленнику выдаст. С другой стороны, на грамотно настроенном сервере обычно стараются свести к минимуму необходимость ввода пользователем команды su, разграничивая права и возможности между разными админами, каждый из которых работает под своим несуперпользователем.
А вот не встречал чего-нибудь похожего для портажей?
Проблема вот в чём. Есть у меня скриптик для мониторинга того, что сейчас собирается с помощью emerge. Скриптик простейший и написанный на коленке. Он смотрит в /var/tmp/portage, читает название диры, которая там есть и среди прочей статистики из этого названия определяет, какой пакет в данный момент в процессе сборки. Нужно мне это для того, чтобы если у меня там на десктопе, к примеру, мир обновляется, а я с буком на кухне мылинукс читаю и по ssh периодически поглядываю в вывод этого скриптика. Банальный интерес.
Так вот сейчас приходится запускать скрипт от рута, потому как у пользователя, разумеется, нет доступа в /var/tmp/portage и дира временная там создаётся тоже с рутовыми правами. Если бы каким-нибудь образом так же прописать в портажах, чтобы оно создавало это всё дело с правами пользователя рута, а группы типа emerge, было круто.
Проблема вот в чём. Есть у меня скриптик для мониторинга того, что сейчас собирается с помощью 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
/usr/lib/portage/pym/_emerge/EbuildBuildDir.py
Поправь там маску. А лучше сделай патч и свой ебилд.
Поправь там маску. А лучше сделай патч и свой ебилд.
Спасибо, это, похоже, то, что мне нужно.
А анализировать emerge.log не очень хочется - парсить лень. Ну и плюс из build.log я вытягиваю сообщения, показываемые при сборке. Мелочь, а приятно.
А анализировать emerge.log не очень хочется - парсить лень. Ну и плюс из build.log я вытягиваю сообщения, показываемые при сборке. Мелочь, а приятно.
Откуда взялась группа 'log'? Можно же использовать уже существующую стандартную, например 'adm'
Т.е. стоит ли такое делать на рабочем сервере?
Может ли это помочь при взломе рута от имени обычного пользователя?