一般ユーザで起動すると、root認証を求められるアプリの作り方

OSC会場だけど、まだ人の入りが悪くて退屈なので、
暇つぶしに。。。

よく、一般ユーザーで実行すると、ポップアップが出てきて、
root認証が促されることがある。
system-config-networkとか。
隣のintrajpさんに聞かれたので、書いてみる。

例として、
/usr/sbin/testapp
中身は下

#!/bin/sh
echo hoge
id

1)
# chmod +x /usr/sbin/testapp
# ln -s /usr/bin/consolehelper /usr/bin/testapp

2)/etc/pam.d/testappを以下のように作成。

auth            include         config-util
account         include         config-util
session         include         config-util


3) /etc/security/console.apps/testappseedit-gui を以下。

USER=root
PROGRAM=/usr/sbin/testapp
SESSION=true

さあ起動しよう。

$ testapp
root認証を求められるポップアップが出てくる。
認証成功すると。。。

hoge
uid=0(root) gid=0(root) context=system_u:system_r:unconfined_t

testappがrootで動いている!

仕組みは、
/usr/bin/testappからリンクされてるconsolehelperが、
ポップアップ出して、/usr/sbin/testappを起動してくれてる。