Linux Mint 17 "Mate"를 실행하는 데스크톱 PC에 USB GPIO 전자 장치가 연결되어 있습니다. 이 환경에서 기즈모는 / dev / ttyACM0으로 나타납니다. pySerial 모듈을 통해 기즈모를 제어하는 GUI Python 2.7 / Tkinter 프로그램을 작성했습니다. 이 프로그램은 sudo를 사용하여 콘솔에서 실행할 때 작동합니다.
GUI 프로그램이기 때문에 "Mate"데스크톱에서 실행할 수 있기를 원합니다.하지만 직렬 장치이기 때문에 기즈모에 액세스하려면 sudo를 통해 얻은 루트 권한이 필요하고 wot는 터미널에서 호출해야합니다. .
# here's the offending code
import serial
numa = serial.Serial("/dev/ttyACM0", 19200, timeout=1)
....
원시 사용자가 암호를 입력하기 위해 터미널을 열 필요가 없도록 Python 프로그램 내 에서 "암호 입력 ..."루틴을 어떻게 호출 합니까?
조언을 해주셔서 감사합니다!
나는 당신의 질문에 대답 할 수 없지만 대신 당신의 문제를 해결할 것입니다.
장치 파일을 나열하면 다음과 같은 내용이 표시됩니다.
$ ls -l /dev/ttyACM0
crw-rw---- 1 root dialout 188, 0 Apr 4 11:22 /dev/ttyACM0
소유자 (루트) 와 소유자 그룹 (다이얼 아웃) 모두 읽기-쓰기 액세스 권한 ( rw-
)이있는 반면 다른 사람은 모두 장치에 액세스 할 수 없습니다 ( ---
). 따라서 시스템에 대한 루트 액세스 권한을 프로그램에 부여하는 대신 단순히 사용자를 다이얼 아웃 그룹에 추가 할 수 있습니다 .
$ sudo usermod -aG dialout <username>
로그 아웃했다가 다시 로그인해야하지만 나중에 스크립트는 루트 암호없이 직렬 인터페이스를 읽고 쓸 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다