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