Скрипт работает без sudo, не работает с sudo

Когда я запускаю этот скрипт:

#!/bin/bash -v sshpass -p '<pypasswd>' scp blah.img root@myip:/home/user/blah.img exit 0 

с

 ./script.sh 

или

 nohup ./script.sh & 

оно работает.

Но когда я сделаю

 nohup sudo ./script.sh & 

он не работает (ничего не загружено, и у меня когда-то была ошибка аутентификации, которую я больше не могу воспроизвести). Зачем?


Примечание. Обычно я использую nohup sudo ./script.sh & для некоторых других скриптов, и он обычно работает отлично.

Примечание 2: Мне действительно нужно sudo потому что в моем скрипте есть другие вещи, которые нуждаются в sudo.

  • Пользователь без пароля - как войти в эту учетную запись из учетной записи, отличной от root
  • Использовать текущую переменную среды пользователя в файле sudoers
  • Проблема с именем пользователя su -c "./script.sh" и sudo -u ush bash -c "./script.sh" и Java classpath
  • Как обычный пользователь может запускать задачу root cron немедленно, без задержки?
  • Пропустить флаги для xargs
  • LDAP Sudoers с AD & SSSD (возвращает только основную группу)
  • Разрешить определенному пользователю или группе root доступ без пароля к / bin / date
  • `root` vs` sudo` от ulimit POV
  • 2 Solutions collect form web for “Скрипт работает без sudo, не работает с sudo”

    Я подозреваю, что myip записан в /root/.ssh/known_hosts . Попробуйте один раз sudo ssh root@myip интерактивно, прежде чем запускать этот скрипт.

    Кроме того, вы можете отключить проверку ключа хоста:

     #!/bin/bash -v sshpass -p '<pypasswd>' scp -o StrictHostKeyChecking=no blah.img root@myip:/home/user/blah.img exit 0 

    У вашего пользователя root нет одинаковых секретных ключей, которые вы используете, если они не выполняются как root. Поэтому, как root, вы не можете копировать материал.

    Попробуйте скопировать добавление ~/.ssh/id_rsa в /root/.ssh/id_rsa (или какой-либо другой секретный ключ, который вы используете для подключения к myip ).

    В качестве альтернативы, пусть sudo выполняет другие действия и автоматически переходит к «нормальному» пользователю в сценарии, прежде чем делать копию.

    Linux и Unix - лучшая ОС в мире.