Схоже, ніхто більше не вирішив тут очевидного занепокоєння. Введення sudo
в сценарій, який ви розповсюджуєте, сприяє поганим звичкам користувача . (Я припускаю, що ви поширюєте його, оскільки ви згадуєте "з точки зору користувача".)
Правда полягає в тому, що в застосуванні програм та сценаріїв є настанова, яка схожа на принцип безпеки в банківській справі: Ніколи не роздавайте свою особисту інформацію тому, хто телефонує вам, і каже, що вони дзвонять "з вашого банку" , і який існує з подібних причин.
Правило для додатків:
Ніколи не вводьте свій пароль, коли буде запропоновано, якщо ви не впевнені, що з ним робиться. Це потрійно стосується тих, хто має sudo
доступ.
Якщо ви вводите свій пароль, тому що ви бігли sudo
в командному рядку, чудово. Якщо ви вводите це через те, що ви виконали команду SSH, добре. Якщо ви вводите це під час входу на комп’ютер, звичайно, чудово.
Якщо ви просто запускаєте іноземний скрипт або виконуваний файл і приручно вводите свій пароль, коли буде запропоновано його, ви не маєте поняття, що з ним робить сценарій. Це може бути збереження його у тимчасовому файлі в простому тексті, бо все, що ви знаєте, і навіть не зможе очистити його після себе.
Очевидно, є окремі та додаткові занепокоєння щодо запуску невідомого набору команд як root
, але те, про що я тут говорю, - це підтримка безпеки самого пароля . Навіть припускаючи, що додаток / скрипт не є шкідливим, ви все одно хочете, щоб ваш пароль надійно оброблявся, щоб запобігти захопленню інших програм та його зловмисному використанню.
Отже, моя особиста відповідь на це: найкраще, що потрібно вкласти у свій сценарій, якщо йому потрібні кореневі привілеї, це:
#!/bin/bash
[ "$UID" -eq 0 ] || { echo "This script must be run as root."; exit 1;}
# do privileged stuff, etc.
exec
- виклич себе, але водночас замінивши процес, тому ми не породимо декількох примірників сценарію