데몬의 PATH(또는 기타 모범 사례)에 새 요소를 어떻게 추가합니까?

데몬의 PATH(또는 기타 모범 사례)에 새 요소를 어떻게 추가합니까?

Linux 서버(Ubuntu 12.04)에 사용자 정의 관리 작업을 위한 일부 스크립트를 추가하고 싶습니다. 궁극적으로 이러한 스크립트는 적어도 하나의 데몬(내 경우에는 PostgreSQL이지만 중요하지 않음)의 콜백 스크립트입니다. 데몬이 내 스크립트를 찾으려면 내가 /opt/<package>/bin따르는 전체 경로를 제공해야 합니다.FHS.

해당 경로를 PATH 에 추가하면 /etc/environment사용자는 전체 경로를 제공하지 않고도 스크립트를 호출할 수 있지만 데몬에서는 "찾을 수 없음"이라는 메시지만 표시됩니다.

그래서 내 질문은 기본적으로 두 가지입니다.

  1. PATH에 데몬의 경로를 어떻게 추가합니까?
  2. 어쨌든 이것이 좋은 생각인가요? 아니면 항상 전체 경로 이름을 사용해야 합니까?

답변1

/etc/environment의 PATH에 해당 경로를 추가하면 사용자는 전체 경로를 제공하지 않고도 스크립트를 호출할 수 있지만 데몬에서는 "찾을 수 없음"이라는 메시지만 표시됩니다.

~에 따르면이 소스, IBM AIX 문서는 다음과 같습니다(다른 항목은 찾을 수 없음). 그러나 일반적으로 정확할 수 있습니다. 1

운영 체제에서 사용되는 첫 번째 파일로그인할 때/etc/environment 파일입니다. /etc/environment 파일에는 모든 프로세스의 기본 환경을 지정하는 변수가 포함되어 있습니다.

있으니 참고해주세요아니요모든 시스템 범위에서 발생하므로 .profile하드코딩됩니다. 그러나 "로그인 시"에 적용되는 경우 init에 의해 시작되고 로그인되지 않은 데몬에는 적용되지 않습니다("모든 프로세스에 대해"가 이와 모순되지만 잘못된 단어 선택일 수도 있음).

~에 따르면이 슈퍼유저 Q&A, /etc/environment의 일부입니다폴리아크릴아미드, 이는 "로그인 시" 전제 조건을 지원하며 이는 초기화 생성 데몬에서 사용되지 않음을 의미합니다. 다른 참고 자료가 많이 있지만 실제 PAM 문서는 없는 것 같습니다.

항상 전체 경로 이름을 사용해야 합니까?

이는 가장 일반적이고 일반적으로 권장되는 절차입니다. 데몬은 $PATH 없이도 시작할 수 있습니다. 따라서 시작 스크립트에서 직접 설정할 수도 있고, 말했듯이 필요한 경우 전체 경로 이름을 사용할 수도 있습니다.

1. "/etc/environment"는 관련 POSIX 사양에 전혀 나타나지 않습니다.[1] [2].

답변2

이는 배포에 매우 의존적입니다. /etc/environment는 Linux의 PAM에 속합니다(이미 지적했듯이). 그러나 /etc/environment는 데몬이 아닌 로그인에 사용됩니다. 서비스와 데몬의 경우 일반적으로 Gentoo Linux의 /etc/conf.d/에서 찾을 수 있는 일부 구성 스크립트(일반적으로 일부 rc 스크립트)에서 파생됩니다. 그러나 이것도 배포판에 매우 의존적입니다. 서비스 시작을 위한 시스템은 또 다른 이야기입니다.

절대 이름으로 프로그램을 호출하는 것이 가장 좋습니다. 이는 실행하려는 프로그램에 대한 모호성을 방지하므로 보안 모범 사례이기도 합니다.

관련 정보