python-daemon 패키지를 사용하여 파이썬으로 데몬을 작성하고 있습니다. 데몬은 부팅시 시작되고 (init.d) 다양한 장치에 액세스해야합니다. 데몬은 우분투를 실행하는 임베디드 시스템 (beaglebone)에서 실행해야합니다.비공개 사용자로 python-daemon을 실행하고 그룹 멤버쉽을 유지
내 문제는 root
이 아닌 권한이없는 사용자 (예 : mydaemon
)로 데몬을 실행하고 싶습니다.
데몬이 해당 사용자를 필요한 그룹에 추가 한 장치에 액세스 할 수 있도록 허용합니다. 은 파이썬 코드에서 daemon.DaemonContext(uid=uidofmydamon)
을 사용합니다.
root
에 의해 프로세스가 시작되고 올바른 사용자가 소유하고 있지만, 권한이 거부되었습니다. 장치에 액세스하려고하면 오류가 발생합니다. 작은 테스트 응용 프로그램을 작성했으며 프로세스가 사용자의 그룹 구성원 자격을 상속하지 않는 것으로 보입니다. 내가 UID를 가진 사용자로 위의 코드를 실행하면
#!/usr/bin/python
import logging, daemon, os
if __name__ == '__main__':
lh=logging.StreamHandler()
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logger.addHandler(lh)
uid=1001 ## UID of the daemon user
with daemon.DaemonContext(uid=uid,
files_preserve=[lh.stream],
stderr=lh.stream):
logger.warn("UID : %s" % str(os.getuid()))
logger.warn("groups: %s" % str(os.getgroups()))
= 1001 내가 루트 (또는 su
)로 위의 코드를 실행하면 반면
$ ./testdaemon.py
UID: 1001
groups: [29,107,1001]
같은, 내가 얻을 수 :
$ sudo ./testdaemon.py
UID: 1001
groups: [0]
루트로 시작하지만 다른 유효 uid가 및 인 그룹 회원 자격으로 시작하는 데몬 프로세스를 만들려면 어떻게해야합니까?
어떤 리눅스 배포판입니까? – rkyser
우분투와 데비안 (내가 그에 따라 업데이트 됨) –
파이썬 데몬을 시작하기 전에 데몬 사용자로 변경할 수없는 이유가 있습니까? 아마도 (이 답변) [http://stackoverflow.com/a/8941040/651848]과 같은 것이 귀하의 필요에 부합 할 수 있습니까? – rkyser