Translate

2019年11月26日火曜日

一般ユーザで実行したら "/dev/uinput" cannot be opened for writing と出る件



    from evdev import uinput, UInput
    from evdev import ecodes as e

Raspberry Pi上で上記のようにevdevパッケージを使ったPythonプログラムを実行しようとしたら、

env) foo@bar:~/tar $ python hogehoge.py
"/dev/uinput" cannot be opened for writing
Have you tried running as root? sudo hogehoge.py
env) foo@bar:~/tar $

というエラーが出た。

virutalenv 上でevdevをインストールしたからかも..
とおもって
virtualenv環境ではなくじかにevdevをインストールして、
sudoをつけて実行すると..うごいた..

でも、このプログラムを一般ユーザでうごかしたい..

ということで調べたら、
以下の方法で動いた。

sudo vi /etc/udev/rules.d/40-uinput.rules

してファイルを新規作成し、

SUBSYSTEM=="misc", KERNEL=="uinput", MODE="0660", GROUP="uinput"

と入力し保存。

つぎに、

sudo vi /etc/modules-load.d/uinput.conf

してファイルを新規作成し、

uinput

と入力し保存。

そして

sudo groupadd uinput
sudo usermod -aG uinput <実行ユーザ名>


して実行ユーザを新規作成したuinputグループに参加させる。

そして

sudo reboot

すればよい。


最近のLinux(raspbeianだけど..)は
ルール関係が複雑で、
入社当時のBSDなんかだと安直に

chmod a+rw /dev/uinput

とかしてたけど、
最近のLinux(raspbeianだけど..)は
ルール関係が複雑なので
こんなことしてもリブートしたらすぐに戻っちゃうだろうから..
(やったことないので、ほんとにそうなるかは、わからないけどね)

0 件のコメント:

ClaudeをOpenAI O1のように思考させるDifyサンプルを試す

 Difyの「探索」タブにはさまざまなサンプルが載っており、その1つに「Thinking Claude (OpenAI O1 Alternative)」というものがある。   このサンプルがどういうものか、未だに自分でも解けない以下の問題をためしに聞いてみることにした。 『人類の...