Почему появляется эта ошибка :«Требуется интерактивная аутентификация»?

Выполняется простым скриптом ниже

команда

for i in `cat file2`; do awk -v i="$i" -F ";" '$1=="ID="i{print $5}' file1| awk -F  "=" '{print $NF}'; done

выход

LOC108565285
LOC108569527
0
24.05.2021, 11:11
1 ответ

Когда вы используете sudo systemctl, вы планируете задание systemd как root. rootвсегда разрешено планировать задания systemd, поэтому это всегда будет работать.

Однако, когда вы запускаете systemctlбез sudo, вы планируете задание systemdкак текущий пользователь. systemdспрашивает polkit, можно ли вам это сделать. polkitпроверит конфигурацию своей политики и:

  1. Подтвердить вас (пароль не требуется)
  2. Требовать аутентификацию, так как ваш пользователь (подтверждает, что запрос делает человек, и этот человек сидит за терминалом ).
  3. Требовать аутентификацию как кто-то другой... возможноroot:(Пользователю не разрешено запускать задание, поэтому он запросит у вас пароль администратора ).

Как polkit, так и sudoделают все возможное, чтобы предотвратить аутентификацию скриптов. Это причина, по которой нет опции --passwordдля sudoи почему sudoне принимает echo 'password' | sudo ls. polkitаналогичен, но более сложен и труден для понимания. Это неприятие проверки подлинности с помощью сценариев связано с тем, что привилегированные задания должны выполняться явно пользователями или другими привилегированными процессами. Обычно мы не хотим, чтобы непривилегированный процесс/скрипт выполнял привилегированную работу.

Когда polkitпопытается аутентифицировать вас, он сделает это через polkit-agent. Если вы когда-либо видели, как окно аутентификации занимает ваш экран, это часто polkit-agent, поставляемое с вашей средой рабочего стола. Но для подключения к соответствующему polkit-agentему необходимо немного знать о ваших $DISPLAYи $XAUTHORITY, чтобы приглашение отображалось в правильном сеансе.

В вашем случае вы sshпопали в машину, поэтому у вас нет дисплея. В этом случае он «возвращается» к текстовому агенту, но, похоже, есть проблема в том, что либо ваш агент аутентифицирует вас как пользователя, а не как root, либо он аутентифицирует вас, но позже понимает, что у вас нет разрешение на планирование systemdзаданий.Сообщение securettyпредполагает, что на самом деле у него нет чистой среды для вашей аутентификации (, например. другой процесс может перехватить ваш стандартный ввод или не сможет подтвердить, что вы реальный человек, а не сценарий ).

Независимо от причины, основной причиной является тот факт, что вы sshподключились к этой машине и не имеете разрешения планировать задания systemd.

У вас есть два варианта:

  1. Используйте sudo systemctl. Это самое простое решение, но если по какой-то причине это неприемлемо (, т. е. вы пишете сценарии заданий systemdи не хотите добавлять :NOPASSWDк /etc/sudoers), тогда упомяните об этом.

  2. Создайте правило polkit, позволяющее запускать задания systemdот имени пользователя. Есть хороший ответ, который описывает, как это сделать здесь .

1
28.07.2021, 11:30

Теги

Похожие вопросы