コンテキスト: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