Устаревший контроль исходного кода: CVS в xinetd
У нас есть команда, которая использует устаревший исходный контроль: cvs. Мы запускаем cvs pserver под xinetd (файл конфигурации ниже).
Аудит Флаг
Аудит безопасности выявил следующее: «убедитесь, что сервер cvs не работает под учетной записью root».
Вопрос:
Могу ли я безопасно заблокировать 'cvs pserver', заменив "user=root" на "user=cvs"? Есть ли какие-нибудь вредные побочные эффекты или 'подводные камни'?
Примечание: Пользователь «cvs» владеет всеми файлами в корневом каталоге cvs «/var/cvs/cvs».
Я спрашиваю, потому что просмотрел всю документацию десятилетней давности и во всех примерах есть «user=root», и ни один из них не предлагает изменить параметр «user=» для повышения безопасности.
Обновлять: Я попробовал. Сработало. Никаких проблем.
Спасибо
Пример: файл конфигурации cvspserver
# Begin /etc/xinetd.d/cvspserver
service cvspserver
{
port = 2401
socket_type = stream
protocol = tcp
wait = no
user = root
passenv = PATH
server = /usr/bin/cvs
server_args = -f --allow-root=/var/cvs/cvs pserver
}
# End /etc/xinetd.d/cvspserver
решение1
Вам непременно следует последовать их совету. Это очень хороший совет.
Обычно, делая это, вам нужно будет убедиться, что у демона достаточно прав, чтобы делать то, что он делает. В этом конкретном случае это, скорее всего, просто означает, что у него уже есть право собственности. Я бы посоветовал сделать резервную копию вашего репозитория и просто продолжить и внести изменения.
Это работает так: xinetd (часто запущенный как root) сбрасывает привилегии и затем выполняет /usr/bin/cvs со stdin и stdout, направленными на сокет, которым управляет xinetd. В этом нет ничего особенного. CVS достаточно прост и не должен требовать никаких разрешений, кроме возможности манипулировать файлами под его root.