public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* input/eventX permissions, force feedback
@ 2006-07-18  9:42 Anssi Hannula
  2006-07-18 12:20 ` Dmitry Torokhov
  0 siblings, 1 reply; 7+ messages in thread
From: Anssi Hannula @ 2006-07-18  9:42 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-input, linux-kernel

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*.

I prefer the first one, do you think it is a good solution or do you
have a better one?

If I go with the first one, what is the preferred way of finding out a
gaming device in udev rule?


-- 
Anssi Hannula


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: input/eventX permissions, force feedback
  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
  2006-07-18 16:50   ` Andrey Borzenkov
  0 siblings, 2 replies; 7+ messages in thread
From: Dmitry Torokhov @ 2006-07-18 12:20 UTC (permalink / raw)
  To: Anssi Hannula; +Cc: linux-input, linux-kernel

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.

Another solution would be to relax permissions if user is also console
owner (home box installation).

One thing is for sure - I do not like #3 at all ;)

-- 
Dmitry

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: input/eventX permissions, force feedback
  2006-07-18 12:20 ` Dmitry Torokhov
@ 2006-07-18 14:02   ` Anssi Hannula
  2006-07-18 14:14     ` Dmitry Torokhov
  2006-07-18 16:50   ` Andrey Borzenkov
  1 sibling, 1 reply; 7+ messages in thread
From: Anssi Hannula @ 2006-07-18 14:02 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-input, linux-kernel

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


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: input/eventX permissions, force feedback
  2006-07-18 14:02   ` Anssi Hannula
@ 2006-07-18 14:14     ` Dmitry Torokhov
  2006-07-18 14:31       ` Anssi Hannula
  0 siblings, 1 reply; 7+ messages in thread
From: Dmitry Torokhov @ 2006-07-18 14:14 UTC (permalink / raw)
  To: Anssi Hannula; +Cc: linux-input, linux-kernel

On 7/18/06, Anssi Hannula <anssi.hannula@gmail.com> wrote:
> 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).
>

OK, you can do that too.

> 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?
>

I think this is really up to particular destribution to decide how
they want to handle security/granting access. One could even imagine
writing SELinux policies...

> > 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.
>

That is what you are doing with pam_console_apply, don't you?

-- 
Dmitry

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: input/eventX permissions, force feedback
  2006-07-18 14:14     ` Dmitry Torokhov
@ 2006-07-18 14:31       ` Anssi Hannula
  0 siblings, 0 replies; 7+ messages in thread
From: Anssi Hannula @ 2006-07-18 14:31 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-input, linux-kernel

Dmitry Torokhov wrote:
> On 7/18/06, Anssi Hannula <anssi.hannula@gmail.com> wrote:
> 
>> 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).
>>
> 
> OK, you can do that too.
> 
>> 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?
>>
> 
> I think this is really up to particular destribution to decide how
> they want to handle security/granting access. One could even imagine
> writing SELinux policies...

Yes, it is. I just asked if you had any better idea or if you were
strongly opposed to the solutions I proposed, as I want to make a
working solution for my distribution (Mandriva).

>> > 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.
>>
> That is what you are doing with pam_console_apply, don't you?
> 

Yes, but afaics there are currently no device privileges given to the
console user which would compromise password security. Providing eventX
would do that.

-- 
Anssi Hannula


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: input/eventX permissions, force feedback
  2006-07-18 12:20 ` Dmitry Torokhov
  2006-07-18 14:02   ` Anssi Hannula
@ 2006-07-18 16:50   ` Andrey Borzenkov
  2006-07-18 17:07     ` Anssi Hannula
  1 sibling, 1 reply; 7+ messages in thread
From: Andrey Borzenkov @ 2006-07-18 16:50 UTC (permalink / raw)
  To: Dmitry Torokhov, anssi.hannula, linux-kernel

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.
> 

You could also have udev create specific symlink for such devices,
say /dev/input/ff* and make a rule for pam_console to change their
permissions. That is finally what is done e.g. for CD-ROMs (cdrom ->
hdc/sr0)

-andrey

> Another solution would be to relax permissions if user is also console
> owner (home box installation).
> 
> One thing is for sure - I do not like #3 at all ;)
> 



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: input/eventX permissions, force feedback
  2006-07-18 16:50   ` Andrey Borzenkov
@ 2006-07-18 17:07     ` Anssi Hannula
  0 siblings, 0 replies; 7+ messages in thread
From: Anssi Hannula @ 2006-07-18 17:07 UTC (permalink / raw)
  To: Andrey Borzenkov; +Cc: Dmitry Torokhov, linux-kernel

Andrey Borzenkov wrote:
> 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.
>>
> 
> 
> You could also have udev create specific symlink for such devices,
> say /dev/input/ff* and make a rule for pam_console to change their
> permissions. That is finally what is done e.g. for CD-ROMs (cdrom ->
> hdc/sr0)

Yes, I proposed this kind of solution too in a later post :)

> 
> 
>>Another solution would be to relax permissions if user is also console
>>owner (home box installation).
>>
>>One thing is for sure - I do not like #3 at all ;)
>>
> 
> 


-- 
Anssi Hannula


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2006-07-18 17:07 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox