쉘 스크립트에서 사용자 변경 및 전체 환경 로드

쉘 스크립트에서 사용자 변경 및 전체 환경 로드

사용자를 변경하고 일부 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

관련 정보