From: Anssi Hannula <anssi.hannula@gmail.com>
To: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: linux-input@atrey.karlin.mff.cuni.cz, linux-kernel@vger.kernel.org
Subject: Re: input/eventX permissions, force feedback
Date: Tue, 18 Jul 2006 17:02:08 +0300 [thread overview]
Message-ID: <44BCE9E0.1030108@gmail.com> (raw)
In-Reply-To: <d120d5000607180520m2a7ec74at452539186cd7814@mail.gmail.com>
Dmitry Torokhov wrote:
> Hi Anssi,
>
> On 7/18/06, Anssi Hannula <anssi.hannula@gmail.com> wrote:
>
>> Currently most distributions have /dev/input/event* strictly as 0600
>> root:root or 0640 root:root. The user logged in will not have rights to
>> the device, unlike /dev/input/js*, as he could read all passwords from
>> the keyboard device.
>>
>> This is a problem, because /dev/input/event* is used for force feedback
>> and should therefore be user-accessible.
>>
>> I can think of the following solutions to this problem:
>>
>> 1. Some creative udev rule to chmod /dev/input/event* less strictly when
>> it has a /dev/input/js* and is thus a gaming device.
>>
>> 2. Some creative udev rule to chmod /dev/input/event* more strictly when
>> it is a keyboard.
>>
>> 3. Have another force feedback interface also in /dev/input/js*.
>>
>
> You can do it in udev looking either at MODALIAS or at EV and ABS
> environment variables. I think it is pretty safe to say that a device
> with EV_ABS, EV_FF, ABS_X and ABS_Y is a force-feedback joystick-type
> device and not a keyboard.
Okay, thanks. But I think it'd be more consistant if all devices that
have js* entries would have the relaxed perms in event*. Looking at
joydev.c, that seems to be devices where EV_ABS && (ABS_X || ABS_WHEEL
|| ABS_THROTTLE) && !(EV_KEY && BTN_TOUCH).
There's another problem, too:
Some distros (Fedora, Mandriva...) don't use groups with /dev/input/jsX,
they use pam_console to chmod the device to the console owner.
Unfortunately, it allows to specify the permissions based on device file
names only.
To solve this problem, I see two solutions:
1. Have the pam_console_apply program extended so that it can perform
more complex matches (but what kind of matches would those be?).
2. Have udev create symlinks like the following case:
/dev/input/event3
/dev/input/js0
/dev/input/jsevent0 => event3
Then pam_console_apply could match jsevent[0-9]* and it would follow the
symlink, thus chowning event3 to the wanted user.
Unfortunately neither look too good to me. Do you have any other ideas?
> Another solution would be to relax permissions if user is also console
> owner (home box installation).
I thought of that too, but I thought it's too big a security risk, as
it's not guaranteed that somebody else won't temporarily login on
another terminal.
> One thing is for sure - I do not like #3 at all ;)
>
--
Anssi Hannula
next prev parent reply other threads:[~2006-07-18 14:02 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-07-18 9:42 input/eventX permissions, force feedback Anssi Hannula
2006-07-18 12:20 ` Dmitry Torokhov
2006-07-18 14:02 ` Anssi Hannula [this message]
2006-07-18 14:14 ` Dmitry Torokhov
2006-07-18 14:31 ` Anssi Hannula
2006-07-18 16:50 ` Andrey Borzenkov
2006-07-18 17:07 ` Anssi Hannula
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=44BCE9E0.1030108@gmail.com \
--to=anssi.hannula@gmail.com \
--cc=dmitry.torokhov@gmail.com \
--cc=linux-input@atrey.karlin.mff.cuni.cz \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox