投げ銭

★当サイトへの投げ銭(PayPal)★

LINK


(無償、寄付歓迎) logo
世界中で使われるISO標準オフィスソフト(MSオフィス互換)

★LibreOfficeの導入事例★
詳細について

人気の投稿(1ヶ月間)

Ad

Ad

投げ銭

★当サイトへの投げ銭(PayPal)★

2019年11月8日金曜日

【Raspbian Buster September 2019】(polkit、sudoers)デスクトップ環境でアプリが特権を行使できる方法について

通常ユーザーがroot権限でプログラムを動作させるための方法について

例えば、gnome-disksというGUIアプリケーションを用いれば、
フラッシュメモリーやハードディスク等のディスクに対して、
フォーマット、パーティションの作成など低レベルの操作ができる。

gnome-disksは次のようにパッケージを導入すれば利用ができた。
root@raspberrypi:/home/pi# apt-get install gnome-disk-utility

実際、デフォルトのpiユーザーだと、ログインパスワードの入力で、これらの操作を行うことができた
次の写真のように、piユーザー、rootユーザーのいずれかを選択し、
ログインパスワードを入力することで、特権の必要な操作ができた



(注意)
ただし、RealVNC Serverをsysytemdから利用している場合、
バグがあるようで、この認証機構であるpolkitが機能しなかった。
エラーが発生し、「Not authorized to perform operation (udisks-error-quark, 4)」となった。
tiger vnc serverではこのバグが報告されていた。
この問題を回避するには、最後で述べるように、sudoersを用いて特権動作させるとよかった。
ただし、systemdではなく、手動でvncserverコマンドで起動した場合、
polkitは正常に動作した。

ところが、作成した通常ユーザー(mynewuser)がgnome-disksを起動した場合、
上記写真に示す認証ウインドウのドロップダウンリストには、mynewuserの名称が存在しなかった。
piユーザー、rootユーザーのみであった。

では、いかにしてpiユーザーと同様に、認証ウインドウのドロップダウンリストに新規ユーザーの名称を載せられるのだろうか。



■無駄だったこと

以下のことは無駄だったので、真似をしないように。

そこで、mynewuserが属しているグループについて調べた。
mynewuser@raspberrypi:~ $ id mynewuser
uid=1001(mynewuser) gid=1001(mynewuser) groups=1001(mynewuser)
比較のために、デフォルトのpiユーザーについても調べた。
mynewuser@raspberrypi:~ $ id pi
uid=1000(pi) gid=1000(pi) groups=1000(pi),4(adm),20(dialout),24(cdrom),27(sudo),29(audio),44(video),46(plugdev),60(games),100(users),105(input),109(netdev),999(spi),998(i2c),997(gpio)
ちなみに、rootだとシンプルである。
mynewuser@raspberrypi:~ $ id root
uid=0(root) gid=0(root) groups=0(root)
一方、フラッシュメモリーのデバイスファイルを調べると、diskグループに読み書きが与えられていた。
mynewuser@raspberrypi:~ $ ls /dev/sda -al
brw-rw---- 1 root disk 8, 0 Nov  4 03:54 /dev/sda
そこで、次のようにしてmynewuserをdiskグループに属させたが、
効果がなかった。上記と同じエラーとなった。
root@raspberrypi:/home/pi# usermod -aG disk mynewuser

そこで、グループから解除した。
root@raspberrypi:/home/pi# gpasswd -d mynewuser disk
Removing user mynewuser from group disk
これで元通りである。



■認証用ウインドウのリストに、新規ユーザーが表示されるように設定

次のように専用のファイルを編集して、システムをリブートすることで可能だった。
新規ユーザーもこのように登録さえすれば、polkitを利用することができた。
認証用ウインドウのユーザー一覧にユーザー名が表示されるようになった。

root@raspberrypi:/home/pi# nano /etc/polkit-1/localauthority.conf.d/60-desktop-policy.conf
[Configuration]
AdminIdentities=unix-user:mynewuser;unix-user:pi;unix-user:0
root@raspberrypi:/home/pi# reboot



■polkit以外の方法として、sudoersを用いる

この方法だと、sysytemdからVNC Serverを起動している場合でも、
問題なく、指定済みのアプリケーションを特権で動作させることができた。


○まず、一番最後の行に、次のように特権で動作させたいコマンドについて記述した。
root@raspberrypi:/home/pi# visudo
(略)
mynewuser   ALL=(root) NOPASSWD: /usr/bin/gnome-disks
mynewuser   ALL=(root) NOPASSWD: /sbin/poweroff
mynewuser   ALL=(root) NOPASSWD: /sbin/reboot
そして、システムを再起動した。
root@raspberrypi:/home/pi# reboot


○動作テストを行った。
再起動後、GUIのターミナルで、次のようにコマンド起動すると、
パスワードの入力なしで特権でアプリケーションを動作できた。

$ sudo /usr/bin/gnome-disks


○ショートカット並びに、ランチャーに追加する。

次のページを参照してください。
https://akira-arets.blogspot.com/2019/11/raspbian-alacarte-launcher.html



<参考>

・Enforcing security of your Raspberry PI user accounts
< https://blog.hardcoding.fr/enforcing-security-raspberry-pi-user-accounts/ > 2019年11月7日

・How to create a new user on Raspbian powered Raspberry Pi
< https://blog.gyt.is/2016/03/01/how-to-create-a-new-user-on-raspbian-powered-raspberry-pi/ > 2019年11月7日

・How to Rename the Default Raspberry Pi User
< http://unixetc.co.uk/2016/01/07/how-to-rename-the-default-raspberry-pi-user/ > 2019年11月7日

・after adding a new user the LXTerminal starts without running bash
< https://www.raspberrypi.org/forums/viewtopic.php?t=203669 > 2019年11月7日

・visudoでsudo権限の設定をする際のメモ(sudoersの'ers'って何の略なんですかね?)
< https://qiita.com/kmikmy/items/6a6a086f6415d9b55b96 > 2019年11月8日


投げ銭

★当サイトへの投げ銭(PayPal)★

Ad

Ad