Я пытаюсь выучить скрипты bash. Я работаю над практической проблемой, и в какой-то момент мне нужно добавить строку в файл, который требует root
разрешения на запись.
Код выглядит так:
# some code
echo "add this line to the code" >> fileName
# some code
Можно ли как-то заставить скрипт запрашивать пароль root, проверять пароль и при успешной аутентификации изменять файл? Затем сценарий должен вернуться в режим пользователя и продолжить выполнение команды.
sudo
, пароли, похоже, не кэшируютсяsu
.Вы можете использовать
tee
сsudo
:echo
Выходные данные перенаправляются с|
( pipe ) наsudo tee
. в этом случаеtee
читает из стандартного ввода и записывает в стандартный вывод любой заданный файлfilename
.-a
(или--append
) делаетtee
добавление к файлам, без него файлы будут перезаписаны. Приtee
запускеsudo
он открывает файлы с рут-правами. Наконец,> /dev/null
подавляетtee
вывод в стандартный вывод .Одно из преимуществ использования
tee
вместо того , чтобы просто начать всю команду , включая перенаправление сsu -c
или вsudo sh -c
том, что вам не придется менять цитирование исходной команды в любом случае (Цитируя строки уже содержащие цитаты можно получить довольно уродливые в разы).источник
Попробуйте это Эта команда доступна в Unix и Linux.
sudo sh -c "echo 'add this line to the code' >> fileName"
источник
Сделал бы трюк:
источник
ssh
? Вам не нужноsu
сsudo
и ни вам нужно указать ,root
как это по умолчанию. В целом, немного больше объяснений было бы неплохо, поскольку ОП хотел узнать что-то, а не просто решить проблему.