privilege.confの解析
/home/QtPalmtop/etc/privilege.confは、アイコン長押しで設定出来る、ルート権限の設定ファイルである。
ルート権限にチェックを入れると、/home/QtPalmtop/etc/privilege.confに行が追加され、チェックを外すと、該当の行が削除される。
このことから、恐らく一行が一アプリに対応しているであろうことが分かる。
さらに、実際に任意のアプリケーションをホーム画面に追加し、対応を調べてみる。
ホーム画面でのタブ配置に関しては、どのタブに配置されていても実行ファイルが同一であれば、privilege.confへの登録内容は同一になるよ。ホーム画面に登録後、タブを移動させても変化は起こらない。
また、同一の実行ファイルを別名で複数登録した場合、privilege.confに重複して複数の同一行が登録されることはない。さらに、この場合、片方でルート権限のチェックを入れると、他方でもチェックが入る。
これらの事から、Qtアプリのルート権限設定は/home/QtPalmtop/bin/以下の実行ファイルそのものに対して設定されるものと思われる。
さて、ここまでの検証内容から、privilege.confに記載される内容も、何らかの形で実ファイル名から反映されているものだと思われる。
そこで、実際に実行ファイル名を変えながら、順次ホーム画面に登録し、内容の変化を追ってみた。
00.sh -> 127815771a682336342c 01.sh -> 127815761a682336342c 02.sh -> 127815751a682336342c 03.sh -> 127815741a682336342c 13.sh -> 127915741a682336342c
確かに一定の法則性を持って、内容が変化していることが分かる。
さらに、ファイル名の文字数で等分に区切ってみると、
00.sh -> 1278 1577 1a68 2336 342c 01.sh -> 1278 1576 1a68 2336 342c 02.sh -> 1278 1575 1a68 2336 342c 03.sh -> 1278 1574 1a68 2336 342c 13.sh -> 1279 1574 1a68 2336 342c
かなり変化が分かりやすくなった。
どうも一文字を四桁の数値、あるいは2Byeteのコードに変換しているようだ。
ただ、00.shの例を見てわかるように、単純な文字コード変換と言う訳でも無いようだ。単純な文字コード変換なら、同一の文字は同一のコードにならなければおかしい。
また、一桁目は0<1と順列でコードが大きくなっているのに対し、二桁目では0>1と逆順でコードが配置されている。
ま、とは言え、昇順降順問わず、順番に数値がズレていくと言うことは何等かの文字コードが設定されていると言うことでもある。
今度はファイル名の文字数を変化させてみよう。
0.sh
- > 1278 1569 1a35 232d
- > 1278 1577 1a68 2336 342c
- > 1278 1577 1a76 236b 3437 552b
- > 1278 1577 1a76 2375 346a 5530 962a
- > 1278 1577 1a76 2375 3474 556d 9631 1729
- > 1278 1577 1a76 2375 3474 5573 966c 1732 1828
- > 1278 1577 1a76 2375 3474 5573 9672 176f 1833 1957
- > 1278 1577 1a76 2375 3474 5573 9672 1771 186e 194c 1a56
- > 1278 1577 1a76 2375 3474 5573 9672 1771 1870 1911 1a4d 1b55
- > 1278 1577 1a76 2375 3474 5573 9672 1771 1870 190f 1a10 1b4e 1c54
- > 1278 1577 1a76 2375 3474 5573 9672 1771 1870 190f 1a0e 1b13 1c4f 1d53
- > 1278 1577 1a76 2375 3474 5573 9672 1771 1870 190f 1a0e 1b0d 1c12 1d48 1e52
- > 1278 1577 1a76 2375 3474 5573 9672 1771 1870 190f 1a0e 1b0d 1c0c 1d15 1e49 1f51
- > 1278 1577 1a76 2375 3474 5573 9672 1771 1870 190f 1a0e 1b0d 1c0c 1d0b 1e14 1f4a 2050
- > 1278 1577 1a76 2375 3474 5573 9672 1771 1870 190f 1a0e 1b0d 1c0c 1d0b 1e0a 1f17 204b 215f
- > 1278 1577 1a76 2375 3474 5573 9672 1771 1870 190f 1a0e 1b0d 1c0c 1d0b 1e0a 1f09 2016 2144 225e
- > 1278 1577 1a76 2375 3474 5573 9672 1771 1870 190f 1a0e 1b0d 1c0c 1d0b 1e0a 1f09 2008 2119 2245 235d
- > 1278 1577 1a76 2375 3474 5573 9672 1771 1870 190f 1a0e 1b0d 1c0c 1d0b 1e0a 1f09 2008 2107 2218 2346 245c
- > 1278 1577 1a76 2375 3474 5573 9672 1771 1870 190f 1a0e 1b0d 1c0c 1d0b 1e0a 1f09 2008 2107 2206 231b 2447 255b
- > 1278 1577 1a76 2375 3474 5573 9672 1771 1870 190f 1a0e 1b0d 1c0c 1d0b 1e0a 1f09 2008 2107 2206 2305 241a 2540 265a
ま、総当たりで調べるのはここらあたりまでで良いだろう。そもそも、これ以上はキリがなさそうだし(^^;)。
とりあえず、20桁まで調べたところで、各コードの差分を取ってみると、
1: 1577-1278: 02FF 2: 1a76-1577: 04FF 3: 2375-1a76: 08FF 4: 3474-2375: 10FF 5: 5573-3474: 20FF 6: 9672-5573: 40FF 7: 1771-9672: FFFF FFFF FFFF 80FF 8: 1870-1771: FF 9: 190f-1870: 9F 10: 1a0e-190f: FF 11: 1b0d-1a0e: FF 12: 1c0c-1b0d: FF 13: 1d0b-1c0c: FF 14: 1e0a-1d0b: FF 15: 1f09-1e0a: FF 16: 2008-1f09: FF 17: 2107-2008: FF 18: 2206-2107: FF 19: 2305-2206: FF
7,8,9桁目辺りで愉快な桁上がりをしているが、まぁ、大体一定のパターンでコードが桁上がりしていっている事が分かる。
恐らく、7,8,9桁目でイレギュラーとなっているのは、FATのファイル名制限(8+3文字)を意識して、コードが設定されたためでは無いかと思われる。
ここまで来れば、後は総当りで文字コードそのものを特定することも不可能では無いが、それはさして重要では無いのでやめておく。
とりあえず、ここまでの検証内容で重要なのは以下の事項である。
- Qtアプリのルート権限の設定は、privilege.confに設定行を追加することで行われる。
- privilege.confの設定行は、特定の独自コードで変換された実行ファイル名を列記している。
- 変換に使用されているコードは独自のものであるが、一定のものであるため、単純にコード変換された行をprivilege.confに追記することで、任意のアプリケーションのルート権限を設定することが出来る。
ま、要するに、ユーザーパッケージに於いて、あらかじめprivilege.confへの追記内容をpostinst辺りでコピペしてやれば、インストール時点でアプリケーションにルート権限を設定することが可能って訳ですな。