2012-05-06 2 views
0

Я уверен, что на этот вопрос был дан ответ раньше, но я не могу найти ответ, который мне нравится. Я хотел бы написать сценарий оболочки, который выполняет очень специфический скрипт как другой пользователь (я хочу, чтобы кто-нибудь мог начать postgres как пользователь postgres). Сценарий будет иметь 710 пермов, поэтому он будет исполняться определенной группой, но не доступен для чтения или записи этой группой.su без пароля в скрипте

Теперь я уверен, что нет возможности использовать «su» без приглашения интерактивного пароля. Для этого есть много веских причин, и мне не нужно быть уверенным в достоинствах этих причин (мне говорят, что кто-то более здраво, чем я, мог бы скрыть пароль из списка процессов, который плохой).

Вопрос, в более общем плане, как я мог бы выполнить то, что я хочу сделать, не злоупотребляя парадигмами безопасности unix? Есть ли способ разрешить пользователю выполнять очень специфический процесс в качестве другого пользователя?

ответ

3

Такая ситуация является именно тем, для чего был предназначен sudo.

1

Вы можете создать исполняемый файл (не сценарий оболочки), который запускает скрипт, который должен запускаться как пользователь postgres. Измените владельца исполняемого файла на пользователя postgres и установите бит setuid.

См. Best practice to run Linux service as a different user для решения проблемы Целады.

+1

Разве это не ограничивается изменением только эффективного uid, а не реального uid? Postgres может заботиться о разнице. – Celada

+0

В этом случае я думаю, что sudo - правильный ответ. Демон для запуска и управления postgres уже существует. Мне просто нужно вызвать их из нужной учетной записи пользователя. Тем не менее, связанная нить - отличная дискуссия. Благодаря! – prauchfuss