2014-06-10 4 views
2

리눅스 PAM 용 모듈을 작성 중입니다. setuid()을 사용하여 인증되는 사용자에게 권한을 부여합니다. 물론 이것은 EUID가 루트 일 때만 작동합니다. PAM 스택은 응용 프로그램과 상관없이 항상 루트로 실행됩니까?PAM 스택은 항상 루트로 실행됩니까?

답변

4

항상 그렇지는 않습니다. pam을 사용하는 대부분의 응용 프로그램에는 setuid라고 표시되어 있거나 setuid 헬퍼가 있습니다. 루트를 필요로하는 표준 플러그인이 많기 때문에 루트 권한이나 확장 권한없이 라이브러리를 사용할 수 있습니다.

몇 가지 예 :/등으로

  • 표준 인증/그림자 루트를 필요로하지, 그 권한을 사용할 수없는 경우 PAM 모듈 읽기/등/그림자, 읽기 하지 않는 플랫폼의 PAM 모듈을 실패합니다/etc/shadow는 이것을 위해 적절한 setuid 도우미를 번들하고 PAM 모듈에서 직접 호출합니다.
  • 일반적으로 LDAP 인증에는 root가 필요하지 않으며 LDAP PAM 모듈은 루트 권한없이 사용할 수 있습니다.

루트 권한이 필요하고 권한을 사용할 수없는 경우 PAM 모듈이 실패하는 것은 완전히 공정하고 다른 모듈 작성 방법과 일치합니다. PAM 라이브러리 자체가 그러한 메커니즘을 제공하지 않더라도 사용 가능한 가장 광범위한 PAM 모듈 배열과 호환되도록하려는 소프트웨어는 사용 가능한 권한 에스컬레이션 경로를 사용할 수 있습니다.