Как запустить программу с правами root без использования su или sudo

8

У меня есть bashсценарий, который должен запускаться с правами суперпользователя , но должен вызываться обычным пользователем.

Сложность в том, что скрипт не должен запрашивать пароль, и я не хочу использовать файл sudoers . Я хотел бы избежать использования sudo или su .

Это возможно?

Стефан
источник
возможный дубликат Allow setuid в сценариях оболочки
Стефан

Ответы:

9

Если бы это был не bash-скрипт, а обычное приложение, вы бы передали право владения им root и установили бит setuid в приложении. Затем после выполнения эффективный пользователь, под которым запускается приложение, является пользователем root. Однако из соображений безопасности это во многих системах запрещено для сценариев оболочки. Этот вопрос здесь, на unix.stackexchange.com, описывает способы, как это преодолеть.

fschmitt
источник
Хорошо, я просто разместил ссылку на это. Ответ Хеманта - хорошее решение
Михаил Мрозек
Будет ли Ruby считаться сценарием оболочки?
Стефан
1
@Stefan Да, все, что запускается через интерпретатор, делает, потому что запускается не сам скрипт, а интерпретатор ruby, который не установлен. Вам нужен настоящий двоичный файл, чтобы использовать setuid
Майкл Мрозек
2
Хотел бы я проголосовать за это, но, к сожалению, мне не хватает 25 очков репутации. Позволить обычным пользователям запускать скрипт bash от имени root - ОЧЕНЬ ПЛОХАЯ идея, если вы не знаете точно, что делаете (и если вам нужно спросить, как это сделать, вы этого не сделаете). Если ОП разместит здесь свой сценарий, я, вероятно, найду как минимум 3 способа использовать его. Есть причина, по которой почти все дистрибутивы затрудняют это.
Ким
Один из основных принципов Unix: «Дайте пользователю любую возможность выстрелить себе в ногу» :-)
fschmitt 8.10.10
1

Используйте sudo. Если вы не хотите звонить sudo /path/to/myscript, напишите однострочную оболочку exec sudo /path/to/myscript "$@". См. Разрешить setuid для сценариев оболочки , в частности ответ Мачей Пехотки об использовании sudo и мое более общее обсуждение программ setuid .

Жиль "ТАК - перестань быть злым"
источник
Вся идея состоит в том, чтобы не использовать sudo.
Алексей Магура
@AlexejMagura Sudo - самое простое решение. Это трудно обойтись без sudo (если только вы не согласитесь на небезопасное решение, и в этом случае вы можете также дать всем пароль root).
Жиль "ТАК - перестань быть злым"