Установить $ PATH для / bin / false пользователя

2

У меня есть пользователь Sensu:

sensu:x:496:496:Sensu Monitoring Framework:/opt/sensu:/bin/false

Это $PATH: /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin

Я хочу обновить его PATH, так что, пока sensu запускает мой скрипт проверки, он будет использовать мою версию Python (установленную под /usr/local/bin), поэтому я хочу установить для sensu PATHзначение:

export PATH=$PATH:/usr/local/bin

Тем не менее, я редактировал оба /opt/sensu/.bashrcи /opt/sensu/.profileне работал; Я читал онлайн ( ссылка ), .bashrcбудет получен только после входа в систему как для интерактивных, так и для неинтерактивных пользователей, однако, как /bin/falseпользователь Sensu, он .profileбудет получен после входа в систему пользователем bash, насколько я понимаю, он не имеет имени входа Оболочка как все, но как я могу достичь своей цели установки $PATHдля него?

Кстати, запустив, sudo su - sensu -s /bin/bashя увидел, что .profile был получен правильно, однако для меня это не имеет большого смысла, так как пока клиент sensu запускает мой скрипт проверки Python, он не будет иметь bash.

Могу ли я изменить, /etc/passwdчтобы изменить /bin/falseна /bin/bash, это вызовет проблемы, пожалуйста?

Уэйн Е.
источник
Это может сработать: sudo -u sensu PATH="/usr/local/bin:$(getconf PATH)" python program.py- проверьте свои страницы sudo(1)и sudoers(5)страницы руководства.
Гленн Джекман
Спасибо, это сработает, но проблема для меня заключается в том, что, пока sensu запускает контрольные сценарии, он запускается от имени пользователя sensu, а у меня нет элемента управления, который запускается так, как вы упомянули выше ...
Wayne Ye

Ответы:

1

Как вы уже заметили, оболочка для вашего пользователя Sensu есть /bin/false, поэтому у нее вообще нет оболочки. Вы можете создать для него настоящую оболочку, такую ​​как / bin / bash, и в то же время заблокировать учетную запись (использовать passwd -l), чтобы вы не могли удаленно войти в систему с этой учетной записью, что сделало бы ее немного более безопасной.

JvO
источник
Спасибо за ответ! Я действительно боюсь разбить свой экземпляр, прежде чем я начну с вашего предложения, могу ли я убедиться: 1. Переключение с / bin / false на / bin / bash и passwd -l sensu не нарушит функцию контроля Sensu? 2. Пользователь «sensu» - это тот, кто запускает сервисы Sensu, как только я закончу # 1 выше, я должен выйти из Sensu и заново его зарегистрировать?
Уэйн Е.
Я сомневаюсь, что это сломало бы это; кроме того, если что-то перестает работать, вы всегда можете вернуть оболочку в / bin / false. Обычно эти пользователи существуют только для запуска процессов мониторинга отдельно от других процессов и не требуют оболочки. Вы должны перезапустить свою службу мониторинга Sensu, да.
JvO
Я пытался, и это не сработало ...
Уэйн Е.
Хм. Затем вам, возможно, придется изменить скрипт, который вызывает ваш скрипт мониторинга Sensu, чтобы включить правильный PATH. Есть два последних варианта: сделайте символическую ссылку на вашу версию Python в / usr / bin (если это не противоречит), или измените глобальный PATH в / etc / profile или аналогичную инициализацию общесистемной оболочки.
JvO
Добавление символической ссылки на python 2.7.10 может привести к поломке CentOS, в нее встроен py 2.6.6.
Уэйн Е.
1

Чтобы обновить $ PATH, необходимо добавить следующую строку

экспорт PATH = $ PATH: / usr / local / bin

В зависимости от типа машины и сервера / клиента имя файла будет меняться:

Для RedHat машины:

  • зепзи-клиент

     /etc/sysconfig/sensu-client
  • зепзи-сервер

     /etc/sysconfig/sensu-server

Для машин Debian:

  • зепзи-клиент

     /etc/default/sensu-client
  • зепзи-сервер

     /etc/default/sensu-server
АКС
источник
Лучше всего использовать PATH=/usr/local/bin:$PATH. Таким образом, когда существуют две команды с одним и тем же именем, одна из которых предоставляется ОС, а другая - пользовательской, приоритет отдается пользовательской.
MariusMatutiae