У Вас в основном есть две учетных записи. Вы обычно зарегистрированы с учетной записью обычного пользователя и когда у Вас должен быть корневой доступ затем, Вы повторно входите в систему как корень и обеспечиваете пароль корня, чтобы сделать это. Пароль root должен отличаться от пароля обычного пользователя. По умолчанию, на некоторых дистрибутивах, таких как Ubuntu, корневая учетная запись отключена. Для подъема полномочий в этих системах, Вы используете названную команду sudo
так, чтобы можно было выполнить некоторые/все команды с помощью полномочий корня.
Например, входить в систему как корень:
$ sudo su -
Выполнять команду как корень:
$ sudo apt-get install gimp
1-й пример установит пользователя (su) для укоренения (предположение, что у Вас есть полномочия сделать так). После выполнения этой команды Вас оставят при подсказке корня.
2-я команда запустит программу установщика Debian/Ubuntu и установит программу, названную калекой как корень.
Если это для демона, стандартный способ выполнения вещей - поставить что-то подобное в файле сценариев INIT:
USER=bob
...
su -c '/command/to/start/actual/daemon' "$USER"
В файле скрипта, который должен быть запущен как BOB
, просто положить sudo
перед соответствующими командами.
Кроме того, убедитесь, что вы прочитали это о включении расширения псевдонима в неинтерактивных раковинах Bash (например, те, которые создаются скриптом или демоном).
Вы сказали, что команды, которые пользователь должен запускать с привилегиями root, это /sbin/firstcommand
и /sbin/secondcommand
?
Если эти команды действительно расположены в /sbin
, это каталог, который по умолчанию не включен в каталог обычного пользователя PATH
. Вы можете использовать это в своих интересах :вы можете создать два очень простых скрипта /usr/local/bin/firstcommand
и /usr/local/bin/secondcommand
, содержимое которых будет состоять из sudo /sbin/firstcommand
и sudo /sbin/secondcommand
соответственно.
Оболочка пользователя обычно ищет /usr/local/bin
перед стандартными /usr/bin
и /bin
, что позволяет системному администратору при необходимости заменить стандартные системные команды локальными версиями. Точно так же, когда пользователь запускает firstcommand
, он в конечном итоге запускает ту версию firstcommand
, которую можно найти первой в его PATH
. /sbin/firstcommand
с префиксом sudo
и/или с добавлением некоторых параметров по мере необходимости.
Фактические файлы программы и другие системные файлы вообще не нужно изменять, за исключением конфигурации необходимого sudo
доступа.