В напряженные дни я хотел бы бежать
$ ./configure && make && sudo make install && halt
на ночь и ложитесь спать, надеясь, что приложение будет установлено автоматически. Но то, что я вижу на следующий день, это экран, на котором sudo спрашивает у меня пароль. Итак, как я могу запустить sudo с паролем в одной командной строке, или есть другой способ сделать это?
halt
запускать с правами root.sudo
имеет 15-минутного перерыва? Не могли бы вы запустить, скажем,sudo ls
или что-то подобное, ввести свой пароль, а затем выполнить приведенную выше команду, сохраняяsudo
права доступа? (Я не могу проверить это в настоящее время, иначе я бы опубликовал это как ответ.)sudo
настраивается. Люди, которые заботятся о безопасности (параноик, как и я), установили его на ноль ... :-)Ответы:
Да, используйте
-S
переключатель, который читает пароль из STDIN:Так что для вашего случая это будет выглядеть так:
конечно, замените
<password>
свой пароль.источник
Вы можете заменить вашу командную строку следующим образом:
$sudo su
$./configure && make && make install && halt
Вам будет предложено ввести пароль немедленно, затем остальные команды будут запущены с правами суперпользователя.
источник
sudo sh -c "./configure && make && make install && halt"
Некоторые из других решений , имеют тот недостаток , что они излишне работать
./configure
и вmake
качестве корня.Это немного запутанно, но оно должно работать:
Обратите внимание на использование двойных кавычек, которые могут
$USER
быть расширены оболочкой (без полномочий root).Я мог бы также добавить
sleep 60
передhalt
командой. Иногда я делал такие вещи, ожидая, что команда будет выполняться в течение длительного времени, но что-то идет не так, и она немедленно завершается;sleep
позволяет мне убить команду до выключения системы. Или вы можете использоватьshutdown
с аргументом времени.источник
Вы также можете настроить sudo,
visudo
чтобы позволить пользователю использовать make как sudo без пароля.источник
Установите HISTIGNORE на " sudo -S "
Затем безопасно передайте свой пароль sudo:
«HISTIGNORE» означает не сохранять эту команду в историю. Это история в памяти или файл "~ / .bash_history".
Например, ниже приведен безопасный путь вашего пароля к команде sudo без сохранения истории вашего пароля.
«-S» означает использовать стандартный пароль для пароля,
«-K» означает игнорировать кэшированные учетные данные, чтобы заставить sudo всегда спрашивать. Это для последовательного поведения.
Недостатком вышеописанного метода является то, что если вы хотите увидеть команды, которые вы запускали в истории позже, их там не будет. Другой способ заключается в обновлении кэша учетных данных аутентификации sudo (по умолчанию включено с 5-минутным таймаутом), а затем запустите sudo отдельно. Но недостатком этого является то, что вам нужно знать о 5-минутном кеше.
Например:
Примечание. Я запускал sudo перед каждой командой, чтобы убедиться, что кэш sudo обновляется, поскольку по умолчанию используется 5 минут. Да, whoami не должно занимать 5 минут, но я полагаю, что он должен запускаться перед каждой командой для согласованности. Вы также можете поставить "export HISTIGNORE = ' sudo -S'"в файле ~ / .bashrc, затем загрузите его с помощью". ~ / .bashrc "или выйдите из системы, затем войдите в систему. Однако я думаю использовать это для целей написания сценариев, поэтому я буду держать его на вершине всех моих сценариев для обеспечения наилучшей практики безопасности. Настройка" echo "" | Вместо этого sudo -S -v "для переменной также может быть хорошей идеей, тогда просто запускайте переменную перед каждой командой, которой нужны привилегии root, см. комментарий Janar. Комментарий" John T "также должен включать параметр" -k " , как будто вы запускаете «sudo -S» без «-k» и кеш аутентификации sudo уже имеет ваши учетные данные (и он по-прежнему действителен, кеш аутентификации sudo по умолчанию равен 5 минутам), тогда bash вместо этого запустит ваш пароль как команду, которая Плохо.
источник
Обратите внимание, я обнаружил, что метод не работает в более старой версии sudo, в частности, в «Sudo version 1.6.7p5»:
Где, как этот метод работает на старых и новых версиях sudo:
источник
Ты тоже можешь это сделать:
источник
Если вы хотите быть более внимательным, вы можете создать скрипт, изменить права доступа к файлу, чтобы только root мог читать и редактировать, а затем просто запустить его.
Пример:
1) Создайте файл:
2) Вставьте это и сохраните:
3) Сделать его исполняемым:
4) Измените права доступа к файлу, чтобы только root мог читать и редактировать его:
5) Выполнить:
Наслаждаться ;-)
источник
Подобная настройка sudo опасна, если кто-то случайно увидел, что sudo не требует пароля в вашей учетной записи. Если вы не знаете, что делаете, не делайте этого. У меня это случалось в моей местной программе обучения А + с моим экспериментальным компьютером слишком много раз ... -_-
То, что сказал Джон Т., звучит неплохо, за исключением того, что в истории оболочки есть риск найти пароль. То, что сказал CarlF, звучит лучше, но если одна из команд не будет выполнена, компьютер все равно будет работать с привилегиями суперпользователя.
источник
Лично я делаю то же самое, что ответил Джон Т 9 ноября 2009 года в 2:47, я также улучшил свой согласно руководству его ответа, спасибо.
Разница в том, что я склонен использовать переменные, что-то вроде:
Таким образом, я могу легко использовать мою переменную вместо sudo,
Это очень удобно с некоторыми более длинными сценариями. Я в основном использую их для персональных компьютеров других, которые я должен поддерживать.
Также рекомендую обратить внимание на:
источник
Проблема устранена. Например, для пользователя root:
источник