2017-12-20 14 views
3

도구는 sudo과 같이/dev/tty에서 암호 읽기를 읽습니다./dev/tty에서 읽기 금지

나는 이것을 피하고 싶습니다.

하위 프로세스는/dev/tty를 읽을 수 없어야합니다. 서브 프로세스는 영원히 입력을 기다리지 않고 즉시 실패해야합니다.

저는 subprocess 파이썬 모듈을 사용하고 있습니다./dev/tty에서 읽기를 시도하면 서브 프로세스가 실패합니다.

기억하십시오 : 도구 sudo은 그 예입니다. sudo에 대한 멋진 명령 줄 인수로 내 문제가 해결되지 않습니다. 이것은 모든 리눅스 커맨드 라인 툴에서 잘 작동 할 것입니다.

질문 :/dev/tty (파이썬의 서브 프로세스 모듈을 통해 호출 됨)에서 읽으 려하는 즉시 모든 도구를 실패하게 만드는 방법은 무엇입니까?

배경 : 이것은 루트가 아닌 일반적인 리눅스 사용자 프로세스입니다.

+1

질문은 무엇으로 프로세스를 시작하는 것입니다? '/ dev/tty'에서 읽기 권한을 제거하는 방법, 또는 무엇을해야합니까? –

+0

@AndrejsCainikovs 질문을 업데이트했습니다. – guettli

+3

프로세스를 만들 때 ['start_new_session = True'] (https://docs.python.org/3/library/subprocess.html#subprocess.Popen)하면 필요한 것이 있습니까? – mata

답변

5

python3.2 Popen은 하위 프로세스를 실행하기 전에 setsid()을 호출하여 실행중인 프로세스가 현재 제어 터미널에서 분리되도록하는 start_new_session 인수를 취하기 때문에.

그래서 당신이 필요합니다 모든 start_new_session=True

+0

대단히 고마워요. 새로운 버전의 subx는 기본적으로 이것을 사용합니다 : https://pypi.python.org/pypi/subx/ – guettli