強化されたシステムを実行していますジェンツーそして私はインストールしましたXorg、フラックスボックス、 そしてコンキーこれらを組み合わせて、最小限のウィンドウ マネージャー デスクトップを作成します。このシステムには、2 人のメイン ユーザーroot
と、ログインする通常の実行ユーザーがいます。
問題は、Conkyが内部から温度とバッテリーの情報にアクセスしようとして/sys/class/thermal/thermal_zone1/temp
、/sys/class/power_supply/BAT1/uevent
権限が拒否されたエラーが発生し、表示したいデータが空またはゼロ値として表示されることです。これらは両方のファイルの権限値です。
File: '/sys/class/thermal/thermal_zone0/temp'
Size: 4096 Blocks: 0 IO Block: 4096 regular file
Device: 12h/18d Inode: 3719 Links: 1
Access: (0444/-r--r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2015-03-14 20:14:54.143855495 +0000
Modify: 2015-03-14 20:14:54.143855495 +0000
Change: 2015-03-14 20:14:54.143855495 +0000
Birth: -
File: '/sys/class/power_supply/BAT1/uevent'
Size: 4096 Blocks: 0 IO Block: 4096 regular file
Device: 12h/18d Inode: 3907 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2015-03-14 19:23:15.227055847 +0000
Modify: 2015-03-14 19:23:15.227055847 +0000
Change: 2015-03-14 19:23:15.227055847 +0000
Birth: -
プロセス全体にroot
経由でアクセスsudo
を許可せずに、Conky が特定の特権ファイルにアクセスできるようにする方法はありますか? で実行できるように sudoers ルールを設定することはできますNOPASSWD
が、Conky に完全なルート権限を与えることは望ましくありません。
できれば、プロセスにこれらのファイルへの読み取りアクセスのみを与えたいのですが、副作用なしにこれらのファイルを誰でも読み取り可能にすることはできますか?
編集: 問題の根本原因が分かりました。ファイル自体が問題なのではなく、すでに誰でも読み取り可能な状態になっているため、ファイルを含むディレクトリがユーザーによってのみ drwx されるのです。 および ディレクトリを誰でも読み取り可能にすると、何か悪影響があるでしょ/sys/class/thermal
う/sys/class/power_supply
か/sys/class
?
編集2: 強化機能の 1 つにより、通常のユーザーはルート権限なしでこれらのファイルにアクセスできないことが判明しました。この結論に至った理由は、ls -alh
通常のユーザーとしてディレクトリを実行すると、すべての rwx フラグが、0704 (drwx---r--) に設定した後でも疑問符として表示されるからです。残念ながら、現在の唯一の選択肢は、NOPASSWD sudo ルールを使用して Conky をルートとして実行し、Fluxbox が問題なく起動できるようにすることです。
答え1
私があなたの立場だったら、facl の使用を検討します:
sudo setfacl -Rm u:1000:r /sys/class/
ここで、1000 は conky を実行するユーザーの UID です。上記の例では、/sys/class の下にあるすべてのファイルが、UID 1000 で実行されるすべてのプロセスによって読み取り可能になるように変更されますが、特定のファイルを選択した場合は、さらに制限される可能性があります。
上記の 2 つのファイルだけを読み取り可能にしたい場合は、次のようにします。
sudo setfacl -m u:1000:rx /sys
sudo setfacl -m u:1000:rx /sys/class/
sudo setfacl -m u:1000:r /sys/class/thermal
sudo setfacl -m u:1000:r /sys/class/power_supply
私も Gentoo 強化カーネルを実行しているマシンを持っていますが、アクセス制御リストをどのように処理するかはわかりません。テスト後にこの回答を更新します。
私も conky を実行していますが、これらの権限のハードルをどうやって回避したか思い出せません。