sudo: немає Tty присутнього та не вказано жодної програми пропуску


2

У мене є сценарій perl, який я розщеплюю з іншого сценарію, який запускаю з веб-браузера через mod_perl. Сценарій роздвоєного (який в кінцевому підсумку працює як apache) повинен бути sudo service X stopчастиною процесу відновлення резервного копіювання: служба X залежить від відновлення. У мене це було добре в Windows, але тепер, переходячи до CentOS, я стикаюся з помилкою в заголовку.

Налаштування:

  1. файл sudoers прокоментував # Defaults requiretty
  2. Файл sudoers має apache_usr localhost=(root) NOPASSWD: /sbin/service X stop(який проходить visudo -cперевірку) і не має інших apache_usrрядків

Те, що я спробував:

  1. sudo /sbin/serviceа не просто sudo serviceу роздвоєному процесі
  2. Судори подають з коментуванням або без нього Defaults !visiblepw
  3. файл sudoers, (ALL)а не (root)в рядку NOPASSWD вище

Що ще можна спробувати?

Відповіді:


5

Коротше кажучи, так було спроектовано судо. Дивіться тут .

Він робить пошук хостів трохи інакше, щоб не відставати, коли у вас немає мережевого підключення / швидкого сервера DNS.

Якщо ви називаєте машину "сіль", то ваш правильний рядок судорів:

apache_usr salt=(root) NOPASSWD: /sbin/service X stop

Іншими словами, localhost не є дійсним іменем хоста, що стосується судодерів.


2

Ви згадали, що "файл sudoers прокоментував # Defaults requiretty".

Це не матиме ніякого ефекту, якщо ваша збірка судо requirettyза замовчуванням увімкнена, що і моя. Використовуйте цільову специфікацію за замовчуванням для відповідного користувача:

Defaults:apache_usr !requiretty

0

Коли я ALL=(root)замість цього пишу , це працює. Незважаючи на те, що сценарій працює на тому ж сервері, що і сервіс, який я намагаюся зупинити. Доступ до нього в браузері здійснюється через інший IP, ніж основний, але, тим не менш, якщо я запускаю, ping -c 1 localhostя отримую 127.0.0.1так мені дуже цікаво, чому потрібно змінити.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.