Это связано с вопросом, Почему это обходит пароль SUDO?. В том из респондентов ответил на вопрос потрясающим способом, и очень, очень ясный любому новичку. Теперь вот вопрос, который я, может казаться, не изображаю.
Я записал, сценарий для запуска плагина Firefox VMware (не волноваться. Я бросил это и теперь выполнил vBox очень счастливо. Я оставил VMware для своих серверов :))
Я должен был запустить плагин как sudo, но я также должен был передать аргумент (пароль) ему, который, оказалось, был тем же.
Так, если мой пароль был Hello123
, команда была бы: sudo ./myscript.sh hi other Hello123
Работая из командной строки, сценарий попросил бы мой sudo пароль и затем работал бы. Я хотел получить тот пароль и передать его также. Я также хотел работать графически, таким образом, я попробовал gksudo, и существует опция -p
это возвращает пароль для переменного присвоения.
Ну, это было кошмаром, потому что я все еще предложить исходный sudo: посмотрите ниже
Find UserName
vUser=$USER
Find password (and hopefully enable sudo)
vP=gksudo -p -D somedescriptiontext echo
Execute command
gksudo ./myscript.sh hi $vUser $vP
И мне все еще предлагают дважды.
Таким образом, моим вопросом является сгиб тримарана:
Есть ли переменная, которую я могу использовать для пароля, точно так же, как существует один для пользователя, $USER
?
Есть ли другой способ, которым я должен присваивать значение, получающееся из команды, в которой я имею $vP
? Я задаюсь вопросом при выполнении способа, которым у меня есть он, делает это на непосвященной сессии а не текущей, так как я получаю некоторые дополнительные ошибки типа предупреждения на некоторых переменных.
Я пытался использовать Zenity, чтобы просто получить текст, но затем конечно, я не мог передать то значение sudo, таким образом, я мог только использовать его в качестве параметра, который откладывает меня в 2 подсказках.
Вы можете назначить выполнение определенных команд без необходимости ввода пароля с помощью sudo (man visudo
). Например, у вас может быть такая строка, если ваше имя пользователя - psusi:
%psusi ALL = NOPASSWD: /usr/local/bin/myscript.sh
Будьте предельно осторожны с предоставлением полностью доверяющего доступа sudo.
Программа, которую вы ищете, называется expect
. Вы пишете сценарий, в котором вы говорите программе ожидать определенных подсказок (таких как подсказки пароля), а затем отправляете некоторый ответ через стандартный ввод, такой же, как при вводе с клавиатуры. Я использовал его в прошлом, чтобы обойти надоедливые парольные запросы, от которых я не мог (легко) избавиться.
sudo aptitude install expect
man expect
1) Нет, так как это выдаст ваш пароль кому-либо в вашей системе
2) Возвращаемое значение из gksudo - это целое число, указывающее, было ли в нем ошибка или нет. Ключ -p имеет ПЕЧАТЬ пароля к его стандартному выводу.
3) Почему вы даже пытаетесь получить пароль? Пропустите первый вызов gksudo и просто используйте второй.