컨텍스트: GUI 애플리케이션을 Linux 서비스로 시작합니다. GUI 프런트엔드로 헤드리스 데몬을 만드는 것을 고려했지만 지금 당장은 너무 많은 코드가 필요합니다. 서비스는 사용자가 로그인할 때 시작되어야 하며 사용자의 셸에서 시작되어야 합니다(여기에서는 파일 권한이 중요합니다). 루트 상호 작용이 필요하지 않습니다(RPM에서 자동 설치). 또한 cron이 호출하는 유지 관리 작업을 수행하려면 시스템(루트)이 서비스를 시작하고 중지할 수 있어야 합니다.
지금까지 해냈지만 이에 대한 보안 질문이 있습니다. 사용자 "username"이 로그인되면 다음이 일부 X 서버 보안을 깨뜨립니까?
.xinitrc는 '/home/username'에 생성되며 창 관리자를 시작하기 전에 xhost를 호출합니다.
xhost + local:username exec $WINDOWMANAGER
사용자 정의 편집기를 사용하여 "/etc/sudoers"를 수정하여 다음 행을 추가하십시오.
username localhost = NOPASSWD: /etc/init.d/my-daemon Defaults env_keep += "DISPLAY XAUTHORITY"
서비스 스크립트 '/etc/init.d/my-daemon'
#!/bin/bash DISPLAY=${DISPLAY:-:0.0} export DISPLAY=$DISPLAY gnomesu -u username -c 'my-gui-app-bin with-some-arguments'
my-daemon 서비스는 어떤 레벨에서도 시작할 수 없습니다(레벨 5에 표시되더라도 준비되지 않음).
chkconfig --del my-daemon
"/etc/xdg/autostart/"의 .desktop 파일과 다음 스크립트를 통해 데몬 프로세스를 자동으로 시작합니다.
#!/bin/bash sudo /etc/init.d/my-daemon start