Как я могу получить интерактивную оболочку от имени другого пользователя без полномочий root?

14

Я использую сервер Ubuntu 10.04 LTS с моделью безопасности по умолчанию (root заблокирован, используется sudoдля повышения привилегий). Я иногда получаю удовольствие от использования, sudo -iкогда мне нужно выполнить серию команд с повышенными привилегиями, или когда мне нужно покопаться в каталогах с привилегиями только root.

Иногда при настройке программного обеспечения, которое будет запускаться как собственная непривилегированная системная учетная запись ( adduser --system --group --no-create-home --disabled-login some-daemon-user), я обнаруживаю, что мне нужно запускать последовательность команд от имени этого пользователя , а не себя или пользователя root. Я пытался использовать sudo -i -u some-daemon-user, но он просто возвращает 1состояние без каких-либо сообщений об ошибках.

Я проверил syslog, messages, auth, и debugфайлы журналов в /var/logи ни один из них включают в себя любые сообщения , которые эталонные sudoили счет в вопросе.

Итак, возможно ли стать другим пользователем без полномочий root в стиле sudo, не просто установив пароль и войдя (как они)? Моя система каким-то образом «сломана» или я просто делаю это неправильно?

Calrion
источник

Ответы:

14

Аааа .. проблема в том, что стандартная оболочка этих пользователей обычно настроена на /bin/falseи из соображений безопасности вы не должны менять это. Но вы все равно можете запустить, например:sudo -u www-data /bin/sh

Пол Хенш
источник
1
Можете ли вы дать более подробную информацию о «соображениях безопасности»? Разве отличается, если я использую sudoоболочку от имени пользователя, как предлагает Флориан выше?
Калрион
1
Причина в том, что любой злоумышленник, выполняющий вход в систему как системный пользователь, т. Е. Используя ошибку в программе входа в систему, с меньшей вероятностью получит действительную оболочку. Поэтому вы должны оставить настройку в том же виде, что и в файле / etc / passwd, даже если это просто ради хорошей кармы. Вызов оболочки напрямую через sudo не имеет к этому отношения.
Пол Хэнш
Таким образом, проблема заключается в настройке оболочки в passwdфайле, а не в ее запуске пользователем. Попался!
Калрион
9

sudo -iзапускает оболочку, указанную в записи базы данных паролей целевого пользователя, которая предназначена /bin/falseдля пользователя вашей системы.

использование

 sudo -u some-daemon-user bash

или

sudo -u some-daemon-user -H bash

если вы хотите установить переменную окружения $ HOME для целевого пользователя.

Флориан Диш
источник