Будьте очень осторожны: сценарии в сочетании с setuid опасны!
Во-первых, пожалуйста, посмотрите на этот вопрос / ответы , особенно на этот ответ и предупреждение безопасности .
Если вы все еще хотите выполнить свой сценарий с помощью setuid
set, вы можете написать короткую программу на C в качестве оболочки и установить setuid
бит в скомпилированном двоичном файле.
Пример Wrapper:
int main(void) {
setuid(0);
clearenv();
system("/absolute/path/to/your/script.sh");
}
Другое решение с использованием sudo
(упомянуто здесь ):
От имени пользователя root запретите запись (и, возможно, другое) в ваш скрипт:
chown root /absolute/path/to/your/script.sh
chmod 700 /absolute/path/to/your/script.sh
Убедитесь, что никто, кроме root, не может заменить скрипт , например, изменив права доступа родительской папки:
chown root / absolute / path / to / your /
CHMOD 755 / абсолютный / путь / к / ваш /
Измените права доступа sudo /etc/sudoers
с помощью visudo
:
ALL ALL = (root) NOPASSWD: /absolute/path/to/your/script.sh
Более подробную информацию о настройках (например, ограничение доступа для определенных пользователей или групп) можно найти на странице руководства sudoers.
После этого все пользователи могут запускать скрипт от имени пользователя root без пароля:
sudo /absolute/path/to/your/script.sh
Это похоже на использование решения обертки / setuid выше.