사용자를 변경하고 일부 Ruby 데몬을 시작하는 시작 스크립트에 문제가 있습니다.
과거에는 bash -c "do the business" -l someuser
해당 플래그를 사용하여 -l
로그인을 시뮬레이션했습니다.
이것은 지금까지 훌륭하게 작동했으며 Ruby 프로세스에서 다음 오류가 계속 발생합니다. require: no such file to load -- rubygems (LoadError)
조사한 결과 이 오류는 스크립트를 루트로 실행할 때만 발생한다는 것을 발견했습니다. 즉, 스크립트를 sudo su
루트로 실행하거나 런타임을 시작하여 실행할 때입니다. ).
경로를 수동으로 먼저 설정하면 문제가 해결되었기 때문에 이것이 PATH 문제라고 생각합니다.
사용자를 변경하고 로드하는 방법이 있나요?모두환경?
나는 또한 시도 su user -c
했다 sudo
.
테스트를 더 쉽게 하기 위해 "루트업"( sudo su
)하고 실행합니다 which bundle
(번들은 루비입니다).
이것이 내가 얻는 것입니다:
sudo -i -u webuser which bundle
# => 출력 없음su -l webuser -c which bundle
# => 출력 없음sudo su - webuser -c which bundle
# => 출력 없음
그러나 SSH를 통해 네트워크 사용자로 로그인하십시오.
which bundle
# => /opt/ruby/bin/bundle
답변1
를 사용하면 sudo su - user -c
경로를 물려받은 사람으로 로그인됩니다. 그렇기 때문에 su user
다른 것입니다 su - user
.
그러나 파일에 경로를 설정하면 .bashrc
대화형 세션(예: 해당 사용자로 SSH 로그인)에만 적용됩니다.
.bash_profile
대신 or 를 사용해야 합니다 /etc/profile
.이것.
답변2
로그인 컨텍스트의 경우 다음을 사용하십시오.
sudo -i -u USER COMMAND
su -l USER -c COMMAND