openSUSE Forums > Hardware » Using udev to change device permissions

Go Back   openSUSE Forums > Hardware
Forums FAQ Members List Search Today's Posts Mark Forums Read

Hardware Questions about drivers, peripheral cabling, configuration

Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 03-Jul-2009, 09:05
rackham's Avatar
Puzzled Penguin
 
Join Date: Sep 2008
Location: Sweden
Posts: 35
rackham hasn't been rated much yet
Default Using udev to change device permissions

Hi,

I want to change the device permissions for /dev/parport0 to 666 in openSuSE 11.1, from the current 664.

I guess I could do this by running "chmod 666 /dev/parport0" every time the computer boots up, maybe, but I aim to do this using udev rules as I suppose that is the "correct" way to do it.

So, I have written my own rules file (/etc/udev/rules.d/10-local.rules) with the contents:
Code:
KERNEL=="parport[0-9]*",	GROUP="lp", MODE="0666"
Theoretically I should then be able to put these new rules into effect by running the command:
Code:
udevadm control --reload-rules
or possibly:
Code:
udevadm trigger
Doing either however has no effect on /dev/parport0.

Checking udev database with:
Code:
udevadm info --export-db | grep parport0
yields:
Code:
P: /devices/pnp0/00:07/ppdev/parport0
N: parport0
Using that to simulate the udev event for that device with command:
Code:
udevadm test /devices/pnp0/00:07/ppdev/parport0
yeilds:
Code:
run_command: calling: test
udevadm_test: version 128
This program is for debugging only, it does not run any program,
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.

parse_file: reading '/etc/udev/rules.d/10-local.rules' as rules file
parse_file: reading '/dev/.udev/rules.d/10-root-symlink.rules' as rules file
parse_file: reading '/etc/udev/rules.d/40-alsa.rules' as rules file
parse_file: reading '/etc/udev/rules.d/40-bluetooth.rules' as rules file
parse_file: reading '/lib/udev/rules.d/40-suse.rules' as rules file
parse_file: reading '/lib/udev/rules.d/40-zaptel.rules' as rules file
parse_file: reading '/etc/udev/rules.d/41-soundfont.rules' as rules file
parse_file: reading '/lib/udev/rules.d/50-udev-default.rules' as rules file
parse_file: reading '/etc/udev/rules.d/51-lirc.rules' as rules file
parse_file: reading '/etc/udev/rules.d/51-packagekit-firmware.rules' as rules file
parse_file: reading '/etc/udev/rules.d/55-hpmud.rules' as rules file
parse_file: reading '/etc/udev/rules.d/55-libsane.rules' as rules file
parse_file: reading '/etc/udev/rules.d/56-idedma.rules' as rules file
parse_file: reading '/etc/udev/rules.d/56-sane-backends-autoconfig.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-cdrom_id.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-input.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-storage-tape.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-storage.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-v4l.rules' as rules file
parse_file: reading '/lib/udev/rules.d/61-persistent-storage-edd.rules' as rules file
parse_file: reading '/lib/udev/rules.d/64-device-mapper.rules' as rules file
parse_file: reading '/lib/udev/rules.d/64-lvm2.rules' as rules file
parse_file: reading '/lib/udev/rules.d/64-md-raid.rules' as rules file
parse_file: reading '/etc/udev/rules.d/65-wacom.rules' as rules file
parse_file: reading '/etc/udev/rules.d/70-kpartx.rules' as rules file
parse_file: reading '/etc/udev/rules.d/70-persistent-cd.rules' as rules file
parse_file: reading '/etc/udev/rules.d/70-persistent-net.rules' as rules file
parse_file: reading '/etc/udev/rules.d/71-multipath.rules' as rules file
parse_file: reading '/lib/udev/rules.d/75-cd-aliases-generator.rules' as rules file
parse_file: reading '/lib/udev/rules.d/75-persistent-net-generator.rules' as rules file
parse_file: reading '/etc/udev/rules.d/77-network.rules' as rules file
parse_file: reading '/lib/udev/rules.d/79-fstab_import.rules' as rules file
parse_file: reading '/lib/udev/rules.d/80-drivers.rules' as rules file
parse_file: reading '/lib/udev/rules.d/90-hal.rules' as rules file
parse_file: reading '/lib/udev/rules.d/95-udev-late.rules' as rules file
parse_file: reading '/etc/udev/rules.d/99-pcsc_lite.rules' as rules file
import_uevent_var: import into environment: 'MAJOR=99'
import_uevent_var: import into environment: 'MINOR=0'
udevadm_test: looking at device '/devices/pnp0/00:07/ppdev/parport0' from subsystem 'ppdev'
udev_rules_get_name: no node name set, will use kernel name 'parport0'
udev_db_get_device: found a symlink as db file
udev_device_event: device '/devices/pnp0/00:07/ppdev/parport0' already in database, cleanup
udev_node_add: creating device node '/dev/parport0', major=99, minor=0, mode=0664, uid=0, gid=7
udevadm_test: run: 'socket:@/org/freedesktop/hal/udev_event'
udevadm_test: run: 'socket:@/org/kernel/udev/monitor'
udev_unref: context 0x80673e8 released
I see my own rules file is read, but near the end of that output it says:
Code:
udev_device_event: device '/devices/pnp0/00:07/ppdev/parport0' already in database, cleanup
udev_node_add: creating device node '/dev/parport0', major=99, minor=0, mode=0664, uid=0, gid=7
Does "already in database" mean that it's ignoring my rules, and hence setting permissions to 664?

What am I missing / doing wrong here?

Thankful for any help on the subject.
Reply With Quote
  #2 (permalink)  
Old 03-Jul-2009, 13:00
rackham's Avatar
Puzzled Penguin
 
Join Date: Sep 2008
Location: Sweden
Posts: 35
rackham hasn't been rated much yet
Default Re: Using udev to change device permissions

Hmm... perhaps I misinterpreted (sort of) the documentation of udev at Writing udev rules.

There it says "In general, you want your own rules to be parsed before the defaults, so I suggest you create a file at /etc/udev/rules.d/10-local.rules and write all your rules into this file.", which I interpreted as, the sooner the rules file is read the higher priority for the rule.

Simply renaming my rules file to "99-zzz-local.rules" solves the problem since it will then be last to be parsed and it's rules will be the ones in effect.
Reply With Quote
  #3 (permalink)  
Old 03-Jul-2009, 17:22
Wise Penguin
 
Join Date: Jun 2008
Location: NZ
Posts: 1,721
deano_ferrari 's reputation will be famous soon enoughdeano_ferrari 's reputation will be famous soon enoughdeano_ferrari 's reputation will be famous soon enough
Default Re: Using udev to change device permissions

Quote:
Simply renaming my rules file to "99-zzz-local.rules" solves the problem since it will then be last to be parsed and it's rules will be the ones in effect.
Yes, thats right. However, you can force an earlier rule by using the 'last_rule' option in your rule. Outlined here:

Writing udev rules
Reply With Quote
Reply

Bookmarks


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On




 

Search Engine Friendly URLs by vBSEO 3.3.0 RC2