Будьте дуже обережні: сценарії в поєднанні з setuid небезпечні!
По-перше, ознайомтеся з цим питанням / відповідями , особливо на цю відповідь та попередження безпеки .
Якщо ви все ще хочете виконати свій скрипт із setuid
набором, тоді ви можете написати коротку програму C в якості обгортки та встановити setuid
біт на складений бінарний файл.
Приклад обгортки:
int main(void) {
setuid(0);
clearenv();
system("/absolute/path/to/your/script.sh");
}
Ще одне рішення з використанням sudo
(згаданого тут ):
Як корінь, забороняйте писати (а може й інший) доступ до вашого сценарію:
chown root /absolute/path/to/your/script.sh
chmod 700 /absolute/path/to/your/script.sh
Переконайтесь, що ніхто, крім root, не може замінити скрипт , наприклад, змінивши права доступу до батьківської папки:
корінь чауна / абсолютний / шлях / до / ваш /
chmod 755 / абсолютний / шлях / до / ваш /
Змініть права доступу до sudo за /etc/sudoers
допомогою visudo
:
ВСЕ ВСЕ = (корінь) NOPASSWD: /absolute/path/to/your/script.sh
Більш детальну інформацію про налаштування (наприклад, обмеження доступу до конкретних користувачів або груп) можна знайти на сторінці судорів.
Після цього всі користувачі можуть запускати скрипт як root без пароля:
sudo /absolute/path/to/your/script.sh
Це аналогічно використанню рішення для обгортки / налаштування вище.