Добавить новую строку в / etc / sudoers через ansible

Чтобы включить ведение журнала, в руководстве указано следующее:

2.1.3 Ведение журнала

Когда возникает проблема, Polipo напечатает дружественное сообщение. Место, куда отправляются эти сообщения, контролируется переменными конфигурации logFile и logSyslog . Если logSyslog имеет значение true, сообщения об ошибках попадают в средство системного журнала, предоставленное logFacility. Если установлен logFile, это имя файла, в котором будет накапливаться весь вывод . Если logSyslog имеет значение false, а logFile пуст, сообщения отправляются в вывод ошибок процесса (обычно в терминал).

Переменная logFile по умолчанию пуста, если daemonise имеет значение false, и в противном случае - ‘/ var / log / polipo’. Переменная logSyslog по умолчанию имеет значение false, и logFacility по умолчанию «пользователь».

Если установлен файл журнала, то переменная logFilePermissions контролирует разрешения Unix, с которыми будет создан файл журнала, если он не существует . По умолчанию это 0640.

Объем журналирования контролируется переменной logLevel. Пожалуйста, просмотрите файл ‘log.h’ в источниках Polipo, чтобы узнать о возможных значениях logLevel.

Ведение подробных журналов о привычках пользователей к просмотру веб-страниц, вероятно, является серьезным нарушением их конфиденциальности. Если установлена ​​переменная scrubLogs, тогда Polipo будет удалять большую часть, если не всю, личную информацию из своих журналов.

Далее в лог.h (из здесь ) имеет следующие уровни:

#define L_ERROR 0x1
#define L_WARN 0x2
#define L_INFO 0x4
#define L_FORBIDDEN 0x8
#define L_UNCACHEABLE 0x10
#define L_SUPERSEDED 0x20
#define L_VARY 0x40
#define L_TUNNEL 0x80
#define LOGGING_DEFAULT (L_ERROR | L_WARN | L_INFO)
#define LOGGING_MAX 0xFF

Так, например, если вы хотите просмотреть все сообщения журнала в файле, рекомендуемая конфигурация (в / etc / polipo / config ):

  logFile=/var/log/polipo
  logLevel=4

1
18.04.2018, 11:05
2 ответа

Проблема может заключаться в том, что командная строка

sudo echo "test ALL=(ALL)       NOPASSWD: ALL" >> /etc/sudoers

перенаправит вывод команды sudo, используя личность исходного пользователя для выполнения перенаправления -, и, поскольку вам нужен root-доступ для записи в /etc/sudoers, это не удастся. Команда echoзапускается от имени пользователя root, но не выполняет перенаправление -, которое уже было настроено оболочкой, которая готовила командную строку sudo echo...к выполнению. И поскольку вы используете здесь sudo, я подозреваю, что оболочка не была запущена от имени пользователя root.

Вы можете перефразировать это как:

echo "test ALL=(ALL)       NOPASSWD: ALL" | sudo tee -a /etc/sudoers >/dev/null

В этой версии:

  • команда echoвыполняется от имени исходного пользователя
  • перенаправление на /dev/null выполняется от имени исходного пользователя
  • , но tee -a <filename>добавляет копию передаваемого по конвейеру ввода в указанный файл как root, что именно то, что вам нужно.
1
27.01.2020, 23:43

В RHEL есть каталог /etc/sudoers.d, файлы которого включены как часть /etc/sudoers. Подумайте о том, чтобы добавить туда фрагмент файла вместо того, чтобы редактировать сам /etc/sudoers:

echo "test ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/ansible

Кроме того, вы можете обнаружить, что Ansible имеет средства для прямого управления sudoers.

0
27.01.2020, 23:43

Теги

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