udev doesnt execute setfacl -b %N on boot
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
udev (Ubuntu) |
Confirmed
|
Undecided
|
Unassigned |
Bug Description
I want to remove the acls from /dev/video[0-9]* which are set by /lib/udev/
So i created a file /etc/udev/
i set the log level in /etc/udev/udev.conf to "debug" and see that:
ladiko@machine:~$ grep "setfacl.*video1" /var/log/syslog
* boot
Aug 21 15:36:02 machine udevd[1145]: starting '/bin/setfacl -b /dev/video1'
Aug 21 15:36:02 machine udevd[1176]: starting '/bin/setfacl -b /dev/video1'
* manual unplug and replug when the machine is up and running:
Aug 21 15:44:16 machine udevd[4859]: starting '/bin/setfacl -b /dev/video1'
Aug 21 15:44:16 machine udevd[4841]: '/bin/setfacl -b /dev/video1' [4859] exit with return code 0
Aug 21 15:44:16 machine udevd[4860]: starting '/bin/setfacl -b /dev/video1'
Aug 21 15:44:16 machine udevd[4841]: '/bin/setfacl -b /dev/video1' [4860] exit with return code 0
Here is a little further testing and output:
Using username "ladiko".
ladiko@
Welcome to Ubuntu 12.04.2 LTS (GNU/Linux 3.2.0-52-
* Documentation: https:/
0 packages can be updated.
0 updates are security updates.
Last login: Wed Aug 21 15:17:55 2013 from 192.168.1.3
ladiko@machine:~$ dpkg-query -W udev
udev 175-0ubuntu9.4
ladiko@machine:~$ uname -a
Linux machine 3.2.0-52-
ladiko@machine:~$ cat /etc/udev/
KERNEL=
KERNEL=
ladiko@machine:~$ ls -la /dev/video*
crw-rw----+ 1 root root 81, 0 Aug 21 15:36 /dev/video0
crw-rw----+ 1 root root 81, 1 Aug 21 15:36 /dev/video1
crw-rw----+ 1 root root 81, 2 Aug 21 15:36 /dev/video2
crw-rw----+ 1 root root 81, 3 Aug 21 15:36 /dev/video3
ladiko@machine:~$ getfacl /dev/video*
getfacl: Removing leading '/' from absolute path names
# file: dev/video0
# owner: root
# group: root
user::rw-
user:ladiko:rw-
group::---
mask::rw-
other::---
# file: dev/video1
# owner: root
# group: root
user::rw-
user:ladiko:rw-
group::---
mask::rw-
other::---
# file: dev/video2
# owner: root
# group: root
user::rw-
user:ladiko:rw-
group::---
mask::rw-
other::---
# file: dev/video3
# owner: root
# group: root
user::rw-
user:ladiko:rw-
group::---
mask::rw-
other::---
ladiko@machine:~$ sudo udevadm test --action=add $(udevadm info -q path -n /dev/video1)
custom logging function 0xb7f86008 registered
selinux=0
runtime dir '/run/udev'
calling: info
device 0xb7f86318 has devpath '/devices/
custom logging function 0xb932d008 registered
selinux=0
runtime dir '/run/udev'
run_command: calling: test
adm_test: version 175
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 '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/etc/udev/
parse_file: reading '/etc/udev/
parse_file: reading '/etc/udev/
parse_file: reading '/etc/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
add_rule: IMPORT found builtin 'usb_id', replacing /lib/udev/
parse_file: reading '/etc/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/etc/udev/
parse_file: reading '/etc/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/etc/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/lib/udev/
parse_file: reading '/etc/udev/
udev_rules_new: rules use 211932 bytes tokens (17661 * 12 bytes), 36672 bytes buffer
udev_rules_new: temporary index used 65060 bytes (3253 * 20 bytes)
udev_device_
udev_device_
udev_device_
udev_device_
udev_device_
udev_device_
udev_device_
udev_device_
udev_device_
udev_device_
udev_rules_
udev_rules_
udev_event_spawn: starting 'v4l_id /dev/video1'
spawn_read: 'v4l_id /dev/video1'(out) 'ID_V4L_VERSION=2'
spawn_read: 'v4l_id /dev/video1'(out) 'ID_V4L_
spawn_read: 'v4l_id /dev/video1'(out) 'ID_V4L_
spawn_wait: 'v4l_id /dev/video1' [4401] exit with return code 0
udev_rules_
builtin_usb_id: /sys/devices/
udev_builtin_
udev_builtin_
udev_builtin_
udev_builtin_
udev_builtin_
udev_builtin_
udev_builtin_
udev_builtin_
udev_builtin_
udev_builtin_
udev_builtin_
udev_builtin_
udev_builtin_
udev_rules_
udev_rules_
udev_builtin_
udev_builtin_
udev_rules_
udev_rules_
udev_rules_
udev_rules_
udev_rules_
udev_rules_
udev_rules_
udev_rules_
udev_rules_
udev_rules_
udev_rules_
udev_rules_
udev_event_
udev_node_
link_update: no reference left, remove '/dev/CC_TV3'
udev_node_add: creating device node '/dev/video1', devnum=81:1, mode=0600, uid=0, gid=0
udev_node_mknod: preserve file '/dev/video1', because it has correct dev_t
udev_node_mknod: preserve permissions /dev/video1, 020600, uid=0, gid=0
node_symlink: preserve already existing symlink '/dev/char/81:1' to '../video1'
link_find_
link_update: creating link '/dev/MYvideo1' to '/dev/video1'
node_symlink: preserve already existing symlink '/dev/MYvideo1' to 'video1'
link_find_
link_update: creating link '/dev/v4l/
node_symlink: preserve already existing symlink '/dev/v4l/
link_find_
link_update: creating link '/dev/v4l/
node_symlink: preserve already existing symlink '/dev/v4l/
udev_device_
ACTION=add
COLORD_DEVICE=1
COLORD_KIND=camera
DEVLINKS=
DEVNAME=/dev/video1
DEVPATH=
ID_BUS=usb
ID_MODEL=
ID_MODEL_
ID_MODEL_ID=332d
ID_PATH=
ID_PATH_
ID_REVISION=0100
ID_SERIAL=
ID_TYPE=video
ID_USB_
ID_USB_
ID_USB_
ID_V4L_
ID_V4L_PRODUCT=Vega USB 2.0 Camera.
ID_V4L_VERSION=2
ID_VENDOR=
ID_VENDOR_
ID_VENDOR_ID=0ac8
MAJOR=81
MINOR=1
SUBSYSTEM=
TAGS=:udev-acl:
UDEV_LOG=7
USEC_INITIALIZE
run: 'udev-acl --action=add --device=
run: '/bin/setfacl -b /dev/video1'
run: '/bin/setfacl -b /dev/video1'
ladiko@machine:~$ ls -la /dev/*vid*
lrwxrwxrwx 1 root root 6 Aug 21 15:36 /dev/MYvideo0 -> video0
lrwxrwxrwx 1 root root 6 Aug 21 15:39 /dev/MYvideo1 -> video1
lrwxrwxrwx 1 root root 6 Aug 21 15:36 /dev/MYvideo2 -> video2
lrwxrwxrwx 1 root root 6 Aug 21 15:36 /dev/MYvideo3 -> video3
crw-rw----+ 1 root root 81, 0 Aug 21 15:36 /dev/video0
crw-rw----+ 1 root root 81, 1 Aug 21 15:39 /dev/video1
crw-rw----+ 1 root root 81, 2 Aug 21 15:36 /dev/video2
crw-rw----+ 1 root root 81, 3 Aug 21 15:36 /dev/video3
* unplugged one of the cameras *
ladiko@machine:~$ ls -la /dev/*vid*
lrwxrwxrwx 1 root root 6 Aug 21 15:36 /dev/MYvideo0 -> video0
lrwxrwxrwx 1 root root 6 Aug 21 15:36 /dev/MYvideo2 -> video2
lrwxrwxrwx 1 root root 6 Aug 21 15:36 /dev/MYvideo3 -> video3
crw-rw----+ 1 root root 81, 0 Aug 21 15:36 /dev/video0
crw-rw----+ 1 root root 81, 2 Aug 21 15:36 /dev/video2
crw-rw----+ 1 root root 81, 3 Aug 21 15:36 /dev/video3
* replugged one of the cameras *
ladiko@machine:~$ ls -la /dev/*vid*
lrwxrwxrwx 1 root root 6 Aug 21 15:36 /dev/MYvideo0 -> video0
lrwxrwxrwx 1 root root 6 Aug 21 15:44 /dev/MYvideo1 -> video1
lrwxrwxrwx 1 root root 6 Aug 21 15:36 /dev/MYvideo2 -> video2
lrwxrwxrwx 1 root root 6 Aug 21 15:36 /dev/MYvideo3 -> video3
crw-rw----+ 1 root root 81, 0 Aug 21 15:36 /dev/video0
crw------- 1 root root 81, 1 Aug 21 15:44 /dev/video1
crw-rw----+ 1 root root 81, 2 Aug 21 15:36 /dev/video2
crw-rw----+ 1 root root 81, 3 Aug 21 15:36 /dev/video3
ladiko@machine:~$ getfacl /dev/video1
getfacl: Removing leading '/' from absolute path names
# file: dev/video1
# owner: root
# group: root
user::rw-
group::---
other::---
ladiko@machine:~$
This is another machine with the same software packages, kernel etc. just the hardware setup is slightly different. there are 3 cameras of the same vendor/model and 1 from another vendor. so i just want the three cameras to be effected, thats why the udev.rule executes the same command but looks for the vendor id.
Using username "okidal". 192.168. 1.106's password: generic- pae i686)
okidal@
Welcome to Ubuntu 12.04.2 LTS (GNU/Linux 3.2.0-52-
* Documentation: https:/ /help.ubuntu. com/
0 packages can be updated.
0 updates are security updates.
Last login: Wed Aug 21 16:12:26 2013 from 192.168.1.161
okidal@enihcam:~$ ls -la /dev/vid*
crw-rw----+ 1 root video 81, 0 Aug 21 16:13 /dev/video0
crw-rw----+ 1 root root 81, 1 Aug 21 16:13 /dev/video1
crw-rw----+ 1 root root 81, 2 Aug 21 16:13 /dev/video2
crw-rw----+ 1 root root 81, 3 Aug 21 16:13 /dev/video3
okidal@enihcam:~$ sudo udevadm trigger
[sudo] password for okidal:
okidal@enihcam:~$ ls -la /dev/vid*
crw-rw----+ 1 root video 81, 0 Aug 21 16:13 /dev/video0
crw------- 1 root root 81, 1 Aug 21 16:14 /dev/video1
crw-rw----+ 1 root root 81, 2 Aug 21 16:14 /dev/video2
crw------- 1 root root 81, 3 Aug 21 16:14 /dev/video3
okidal@enihcam:~$ sudo udevadm trigger
okidal@enihcam:~$ ls -la /dev/vid*
crw-rw----+ 1 root video 81, 0 Aug 21 16:14 /dev/video0
crw------- 1 root root 81, 1 Aug 21 16:15 /dev/video1
crw------- 1 root root 81, 2 Aug 21 16:14 /dev/video2
crw------- 1 root root 81, 3 Aug 21 16:15 /dev/video3
okidal@enihcam:~$
so when i boot, all cameras still have their acls, executing udevadm trigger changes 2 cameras while 1 preserves the acls and another call of udevadm changes the last of three cameras.
i also checked the syslog. After a restart, setfacl isnt executed, even not if i restart udev, but when i use udevadm trigger, udevd calls setfacl for the video devices.
cosmocard@ CC-F08- 0064:~$ sudo service udev restart CC-F08- 0064:~$ ls -la /dev/vid* CC-F08- 0064:~$ sudo udevadm trigger CC-F08- 0064:~$ ls -la /dev/vid* CC-F08- 0064:~$
[sudo] password for cosmocard:
udev stop/waiting
udev start/running, process 4554
cosmocard@
crw-rw----+ 1 root video 81, 0 Aug 21 16:23 /dev/video0
crw-rw----+ 1 root root 81, 1 Aug 21 16:23 /dev/video1
crw-rw----+ 1 root root 81, 2 Aug 21 16:23 /dev/video2
crw-rw----+ 1 root root 81, 3 Aug 21 16:23 /dev/video3
cosmocard@
cosmocard@
crw-rw----+ 1 root video 81, 0 Aug 21 16:26 /dev/video0
crw------- 1 root root 81, 1 Aug 21 16:26 /dev/video1
crw------- 1 root root 81, 2 Aug 21 16:26 /dev/video2
crw------- 1 root root 81, 3 Aug 21 16:26 /dev/video3
cosmocard@