У меня есть пользователь 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 есть
/bin/false
, поэтому у нее вообще нет оболочки. Вы можете создать для него настоящую оболочку, такую как / bin / bash, и в то же время заблокировать учетную запись (использоватьpasswd -l
), чтобы вы не могли удаленно войти в систему с этой учетной записью, что сделало бы ее немного более безопасной.источник
Чтобы обновить $ PATH, необходимо добавить следующую строку
экспорт PATH = $ PATH: / usr / local / bin
В зависимости от типа машины и сервера / клиента имя файла будет меняться:
Для RedHat машины:
зепзи-клиент
зепзи-сервер
Для машин Debian:
зепзи-клиент
зепзи-сервер
источник
PATH=/usr/local/bin:$PATH
. Таким образом, когда существуют две команды с одним и тем же именем, одна из которых предоставляется ОС, а другая - пользовательской, приоритет отдается пользовательской.