Я пытаюсь скомпилировать некоторые исходники, используя make-файл. В make-файле есть куча команд, которые нужно запускать как sudo
.
Когда я компилирую исходники из терминала, все идет хорошо, и make останавливается при первом запуске sudo
команды в ожидании пароля. Как только я ввожу пароль, make возобновляет работу и завершает работу.
Но я хотел бы иметь возможность компилировать исходные коды в NetBeans. Итак, я запустил проект и показал netbeans, где найти источники, но при компиляции проекта выдает ошибку:
sudo: no tty present and no askpass program specified
Первый раз он попадает в sudo
команду.
Я искал проблему в Интернете, и все найденные решения указывают на одну вещь: отключение пароля для этого пользователя. Так как здесь речь идет о пользователе root. Я не хочу этого делать.
Есть ли другое решение?
sudo -n my-command
у меня сработало. Е.И.В.!sudo: a password is required
Ответы:
Разрешение пользователю использовать эту команду без запроса пароля должно решить проблему. Сначала откройте консоль оболочки и введите:
Затем отредактируйте этот файл, чтобы добавить в самый конец:
например
позволит пользователю
john
в Судоpoweroff
,start
иstop
без запроса пароля.Посмотрите на нижнюю часть экрана, чтобы увидеть нажатия клавиш, которые необходимо использовать в visudo (кстати, это не vi), и выйдите без сохранения при первых признаках каких-либо проблем. Предупреждение о вреде для здоровья: повреждение этого файла будет иметь серьезные последствия, редактируйте с осторожностью!
источник
Пытаться:
Использовать
NOPASSWD
строку для всех команд, я имею в виду:Поместите строку после всех других строк в
sudoers
файле.Это сработало для меня (Ubuntu 14.04).
источник
jenkins ALL=(ALL) NOPASSWD: /var/lib/jenkins/wrapper_script
jenkins
это просто имя пользователя? Это должно быть имя пользователя с хост-машины? Что если имя пользователя на хост-машине совпадает с именем пользователя с удаленного сервера?Пытаться:
Это удалит вышеуказанные ошибки.
источник
-t Force pseudo-tty allocation. This can be used to execute arbitrary screen-based programs on a remote machine
см. также: sudo-no-tty-present-and-no-askpass-program-специфицированный Такжеsudo -A
позволяет установитьsudo
программу askpass, но я вижу только GUI. Кто-нибудь знает аскспас, чтобы разрешитьssh remotehost sudo -A askpass
?-A
forsudo
не принимает аргументов и вместо этого требует средыSUDO_ASKPASS
илиsudo.conf
Sossh remotehost sudo -A command
все равно будет работать. По-прежнему любопытно узнать о терминальной программе Askpass.Pseudo-terminal will not be allocated because stdin is not a terminal.
:(После всех альтернатив я нашел:
Источник
Приведенная выше команда все еще требует ввода пароля. Чтобы удалить ввод пароля вручную, в случаях, подобных jenkins, эта команда работает:
источник
sudo -S <command>
- этоtrue
просто фиктивная команда, которая возвращает код выхода 0 (false
это команда, которая возвращает 1). Спасибо, это единственный верный ответ, так как все остальные ожидают, что "sudo" сработает!Password:
тогда ничего не происходит. Я не могу ввести пароль.sudo
по умолчанию будет читать пароль с подключенного терминала. Ваша проблема в том, что при запуске из консоли netbeans нет подключенного терминала. Таким образом, вы должны использовать альтернативный способ ввода пароля: это называется программа askpass .Программа askpass - это не конкретная программа, а любая программа, которая может запрашивать пароль. Например в моей системе
x11-ssh-askpass
работает нормально.Для этого необходимо указать, какую программу использовать, либо с переменной среды,
SUDO_ASKPASS
либо вsudo.conf
файле (man sudo
подробности см. ).Вы можете принудительно
sudo
использовать программу askpass, используя опцию-A
. По умолчанию он будет использовать его, только если нет подключенного терминала.источник
-A
не принимает аргументов.-A
требует средыSUDO_ASKPASS
илиsudo.conf
файла. В этом случаеssh host "export SUDO_ASKPASS=askpass;sudo -A cat /etc/passwd"
все равно будет работать с терминалом на основе Askpass, однако @chandru гораздо более кратким нижеssh -t ...
Для пользователей Ubuntu 16.04
Есть файл, который вы должны прочитать:
Размещение файла с режимом 0440 в /etc/sudoers.d/myuser со следующим содержимым:
Следует исправить проблему.
Не забудь:
источник
Попробуй это:
источник
[sudo] password for alper: Sorry, try again. [sudo] password for alper: sudo: 1 incorrect password attempt
@sNICkerssssЕсли случайно вы пришли сюда, потому что вы не можете sudo внутри Ubuntu, который поставляется с Windows10
Отредактируйте файл / etc / hosts из Windows (с помощью Блокнота), он будет расположен по адресу:,
%localappdata\lxss\rootfs\etc
добавьте127.0.0.1 WINDOWS8
, это избавит от первой ошибки, которая не может найти хост.Чтобы избавиться от
no tty present
ошибки, всегда делайтеsudo -S <command>
источник
Войдите в свой Linux. Огонь следующие команды. Будьте осторожны, так как редактирование sudoer - рискованное предложение.
После открытия редактора vi внесите следующие изменения:
Закомментировать
Defaults requiretty
Перейти в конец файла и добавить
источник
В Дженкинс :
Например : -
Вы можете использовать Mask Password Plugin, чтобы скрыть свой пароль
источник
Это сработало для меня:
где ваш пользователь "myuser"
для образа Docker это было бы просто:
источник
Убедитесь, что команда, которую вы используете,
sudo
является частью вашейPATH
.Если у вас есть одна (или несколько, но не ВСЕ) командная
sudoers
запись, вы получите,sudo: no tty present and no askpass program specified
когда команда не является частью вашего пути (и полный путь не указан).Вы можете исправить это, добавив команду к вашему
PATH
или вызвав ее с абсолютным путем, т.е.sudo /usr/sbin/ipset
Вместо
sudo ipset
источник
sudoers
%sitd ALL=(lamparna) NOPASSWD: /usr/bin/git_push_to_lamparna.sh, /usr/bin/git
и использованииsudo -u lamparna git push --mirror ssh://lamparna@REDMINE/home/lamparna/repos/git/jine/lamparna.git
в git post-update hookno tty
, но используяsudo -u lamparna /usr/bin/git push --mirror ssh://lamparna@REDMINE/home/lamparna/repos/git/jine/lamparna.git
работу без пароля.Команда
sudo
не выполняется, так как она пытается запросить пароль root, и псевдо-tty не выделен (как часть сценария).Вам нужно либо войти в систему как пользователь root, чтобы выполнить эту команду, либо настроить следующие правила в вашем
/etc/sudoers
(или:)sudo visudo
:Затем убедитесь, что ваш пользователь принадлежит к
admin
группе (илиwheel
).В идеале (безопаснее) было бы ограничивать права суперпользователя только конкретными командами, которые можно указать как
%admin ALL=(ALL) NOPASSWD:/path/to/program
источник
sudoers
файле,apache ALL = (ALL) NOPASSWD:/usr/share/apache-tomcat-7.0.61/bin/startup.sh
но она не работает для меня. выдает следующую ошибкуsudo: >>> /etc/sudoers: syntax error near line 120 <<< sudo: parse error in /etc/sudoers near line 120 sudo: no valid sudoers sources found, quitting sudo: unable to initialize policy plugin
apache ALL=(ALL) NOPASSWD: ALL
но риск для безопасности. :)Я думаю, что могу помочь кому-то с моим делом.
Во-первых, я изменил настройки пользователя,
/etc/sudoers
ссылаясь на ответ выше. Но это все еще не сработало.В моем случае
myuser
был вmygroup
.И мне не нужны были группы. Итак, удалили эту строку.
(Не следует удалять эту строку, как я, просто отмечая комментарий.)
Оно работает!
источник
Запуск сценариев оболочки, содержащих команды sudo от jenkins, может выполняться не так, как ожидалось. Чтобы исправить это, следуйте по
Простые шаги:
В системах на основе Ubuntu запустите "$ sudo visudo"
это откроет файл / etc / sudoers.
сохранить файл
Перезапустите работу Дженкинса
Вы не должны увидеть это сообщение об ошибке снова :)
источник
Мне удалось это сделать, но, пожалуйста, убедитесь, что вы правильно следовали инструкциям. Это для тех, кто получает ошибки импорта.
Шаг 1 : Проверьте, есть ли у файлов и папок проблема с разрешением на выполнение. Пользователь Linux использует:
Шаг 2 : Проверьте, какой пользователь имеет разрешение на его выполнение.
Шаг 3 : откройте терминал, введите эту команду.
добавьте эти строки в код ниже
это дает разрешение на выполнение скрипта и позволяет использовать все библиотеки. Пользователь обычно - «никто» или «www-данные».
Теперь отредактируйте ваш код как
перейдите в терминал, чтобы проверить, запущен ли процесс, введите это там ...
это выведет весь процесс, запущенный в Python.
Добавить дополнения : используйте приведенный ниже код для проверки пользователей в вашей системе
Благодарю вас!
источник
Эта ошибка также может возникать, когда вы пытаетесь запустить терминальную команду (для которой требуется пароль root) из какого-либо сценария, не
sudo ls
являющегося оболочкой, например (в обратных галочках) из программы Ruby. В этом случае вы можете использовать утилиту Expect ( http://en.wikipedia.org/wiki/Expect ) или ее альтернативы.Например, в Ruby для выполнения
sudo ls
без полученияsudo: no tty present and no askpass program specified
вы можете запустить это:[это использует одну из альтернатив Expect TCL extension: ruby_expect gem].
источник
Для справки: в случае, если кто-то еще столкнулся с той же проблемой, я застрял в хороший час с этой ошибкой, которая не должна происходить, так как я использовал параметр NOPASSWD.
Чего я НЕ знал, так это того, что sudo может выдавать точно такое же сообщение об ошибке, когда tty отсутствует, а команда, которую пытается запустить пользователь, не является частью разрешенной команды в файле / etc / sudoers.
Вот упрощенный пример содержимого моего файла с моей проблемой:
Когда bguser попытается запустить «sudo command_b arg_b» без какого-либо tty (bguser используется для какого-то демона), тогда он столкнется с ошибкой «tty присутствует и не задана программа askpass».
Почему?
Потому что в конце строки в файле / etc / sudoers отсутствует запятая ...
(Мне даже интересно, является ли это ожидаемым поведением, а не ошибкой в sudo, поскольку правильное сообщение об ошибке для такого случая должно быть «Извините, пользователю bguser не разрешено выполнять и т. Д.»)
источник
Я получал эту ошибку, потому что я ограничил моего пользователя только одним исполняемым файлом 'systemctl' и неправильно настроил файл visudo.
Вот что у меня было:
Однако вам необходимо указать полный путь к исполняемому файлу, даже если он указан по умолчанию, например:
Это позволяет моему пользователю jenkins перезапускать сервисы, но не иметь полного корневого доступа
источник
Никто не сказал, что может вызвать эту ошибку, в случае миграции с одного хоста на другой, помните о проверке имени хоста в файле sudoers:
Так что это мой конфиг / etc / sudoers
если это не совпадает
появится эта ошибка:
источник
Другие варианты, не основанные на NOPASSWD:
источник
Возможно, вопрос неясен: почему ни один ответ не соответствует ему, но у меня появилось то же сообщение об ошибке, когда я пытался смонтировать sshfs, для которого требовалось sudo: команда выглядит примерно так:
добавив опцию
-o debug
У меня было то же сообщение этого вопроса:
Поэтому, прочитав ответ других людей, я стал создавать файл
/etc/sudoer.d/user
my.server.tld с:и теперь я могу смонтировать диск, не давая слишком много дополнительных прав моему пользователю.
источник
Хотя этот вопрос старый, он все еще актуален для моей более или менее современной системы. После включения режима отладки sudo (
Debug sudo /var/log/sudo_debug all@info
in/etc/sudo.conf
) я указал на / dev: "/dev is world writable
". Таким образом, вам может потребоваться проверить права доступа к файлу tty , особенно те из каталога, в котором находится узел tty / pts.источник
1 открытый / etc / sudoers
тип
sudo vi /etc/sudoers
. Это откроет ваш файл в режиме редактирования.2 Добавить / изменить пользователя Linux
Ищите запись для пользователя Linux. Измените, как показано ниже, или добавьте новую строку.
3 Сохранить и выйти из режима редактирования
источник
Если вы добавите эту строку в свой
/etc/sudoers
(черезvisudo
), это исправит эту проблему, не отключая ввод пароля и когда псевдоним дляsudo -S
не будет работать (вызов скриптовsudo
):Конечно, прочитайте руководство, чтобы понять его, но я думаю, что для моего случая использования в контейнере LXD
lxc exec instance -- /bin/bash
достаточно безопасно, поскольку он не печатает пароль по сети.источник
Использование конвейера:
Используя здесь-документ:
Откройте терминал, чтобы спросить пароль (в зависимости от того, что работает):
источник