У меня есть makefile и configure shell в моем проекте. Я написал код, чтобы попросить пользователя запустить configure shell в корневом режиме, используя следующий код.Попросить пользователя запустить makefile из корневого режима
[ "$(whoami)" != "root" ] && exec sudo -- "$0" "[email protected]"
Но когда я бегу «make install
» Мне нужно задать пользователю запускать из режима корневого каталога. Так что я просто скопировал код из оболочки configure и скопировал его в другой файл сценария оболочки под названием «runasroot.sh
». Затем я запускаю этот сценарий оболочки из make install
.
install:
@echo About to install XXX Project
./runasroot.sh
find . -name "*.cgi" -exec cp {} $(SCRIPTDEST)/ \;
Когда я запускаю вышеуказанный код, я получил следующую ошибку.
About to install XXX Project
./runasroot.sh \;
make: *** [install] Error 1
runasroot.sh
#!/bin/bash
[ "$(whoami)" != "root" ] && exec sudo -- "$0" "[email protected]"
Напоминать мне не использовать свой код. Не делайте ничего о принуждении 'root' в make-файле. Документ в файле README или INSTALL, который пользователь выполнил, выполнит 'make install' как' root'. Невероятно, что вам нужны привилегии root для компиляции. Лучше всего, если вы даже не требуете «root» для установки - разрешите пользователю устанавливать его как самостоятельно, если у них есть разрешение на запись в соответствующие каталоги. –
Имеет ли 'runasroot.sh' только код, который вы показываете выше? Это не похоже на воспроизводимость. См. Инструкции по созданию [mcve]. – tripleee
Ожидаете ли вы, что все будут работать без пароля root или просто счастливо введите пароль при каждом запросе? –