문제

'Nobody'에서 실행되도록 프로세스를 설정해야합니다. os.setuid ()를 찾았지만 어떻게 찾을 수 있습니까? uid 만약 내가 가지고 있다면 login?

나는 UID가 /etc /passwd에 있다는 것을 알았지 만 아마도 scanning /etc /passwd보다 더 피스론적인 방법이있을 수 있습니다. 아무도?

도움이 되었습니까?

해결책

당신은 그것을보고 싶을 것입니다 Pwd Python stdlib의 모듈 : 예를 들어 :

import pwd
pw = pwd.getpwnam("nobody")
uid = pw.pw_uid

그것은 /etc /passwd를 사용합니다 (기술적으로는 posix c api를 사용하므로 /etc /passwd를 사용하지 않았지만 필요한 기능에 노출 된 경우 OS에서 작동 할 수 있다고 생각하지만 수동으로 구문 분석하는 것보다 깨끗합니다.

다른 팁

직접 스캔하지 마십시오 /etc/passwd.

예를 들어, 내가 관리하는 Linux 시스템에서 사용자 계정이 켜져 있지 않습니다. /etc/passwd, 그러나 LDAP 서버에서.

올바른 방법은 사용하는 것입니다 getpwent/getgrent 및 관련 C 기능 ( @tfkyle의 답변에서와 같이)은 각 시스템에 대한 올바른 방법에 대한 정보를 얻을 수 있습니다 (Linux Glibc에서는 읽습니다. /etc/nsswitch.conf 정보를 얻기 위해로드 할 NSS 동적 라이브러리를 아는 것).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top