I am trying to configure ALSA for a CentOS 6.5 minimal install, my problem is non-root users do not have permission to access the sound devices in /dev/snd because the files are missing access control lists:dispcentos:~$ ls -l /dev/sndtotal 0drwxr-xr-x 2 root root      60 Jan  7 02:21 by-path/crw-rw---- 1 root audio 116, 8 Jan  7 02:21 controlC0crw-rw---- 1 root audio 116, 4 Jan  7 02:21 midiC0D0crw-rw---- 1 root audio 116, 7 Jan  7 02:21 pcmC0D0ccrw-rw---- 1 root audio 116, 6 Jan  7 02:21 pcmC0D0pcrw-rw---- 1 root audio 116, 5 Jan  7 02:21 pcmC0D1pcrw-rw---- 1 root audio 116, 3 Jan  7 02:21 seqcrw-rw---- 1 root audio 116, 2 Jan  7 02:21 timerPrevious suggestions have been to add the users to the audio group but this should not be necessary. The output of udevadm info shows that the ACL_MANAGE property is present as a result of /lib/udev/rules.d/70-acl.rules:dispcentos:~$ udevadm info --query=all --name=/dev/snd/pcmC0D0cP: /devices/pci0000:00/0000:00:11.0/0000:02:02.0/sound/card0/pcmC0D0cN: snd/pcmC0D0cS: char/116:7E: UDEV_LOG=3E: DEVPATH=/devices/pci0000:00/0000:00:11.0/0000:02:02.0/sound/card0/pcmC0D0cE: MAJOR=116E: MINOR=7E: DEVNAME=/dev/snd/pcmC0D0cE: SUBSYSTEM=soundE: ACL_MANAGE=1E: DEVLINKS=/dev/char/116:7But the output of udevadm test shows that udev-acl is not run for the device:dispcentos:~$ udevadm test /devices/pci0000:00/0000:00:11.0/0000:02:02.0/sound/card0/pcmC0D0crun_command: calling: testudevadm_test: version 147This program is for debugging only, it does not run any program,specified by a RUN key. It may show incorrect results, becausesome values may be different, or not available at a simulation run.parse_file: reading '/lib/udev/rules.d/01-log-block.rules' as rules fileparse_file: reading '/lib/udev/rules.d/10-console.rules' as rules fileparse_file: reading '/lib/udev/rules.d/10-dm.rules' as rules fileparse_file: reading '/lib/udev/rules.d/11-dm-lvm.rules' as rules fileparse_file: reading '/lib/udev/rules.d/13-dm-disk.rules' as rules fileparse_file: reading '/lib/udev/rules.d/40-isdn.rules' as rules fileparse_file: reading '/lib/udev/rules.d/40-multipath.rules' as rules fileparse_file: reading '/lib/udev/rules.d/40-redhat.rules' as rules fileparse_file: reading '/lib/udev/rules.d/42-qemu-usb.rules' as rules fileparse_file: reading '/lib/udev/rules.d/50-firmware.rules' as rules fileparse_file: reading '/lib/udev/rules.d/50-udev-default.rules' as rules fileparse_file: reading '/lib/udev/rules.d/60-alias-kmsg.rules' as rules fileparse_file: reading '/lib/udev/rules.d/60-cdrom_id.rules' as rules fileparse_file: reading '/lib/udev/rules.d/60-net.rules' as rules fileparse_file: reading '/lib/udev/rules.d/60-persistent-alsa.rules' as rules fileparse_file: reading '/lib/udev/rules.d/60-persistent-input.rules' as rules fileparse_file: reading '/lib/udev/rules.d/60-persistent-serial.rules' as rules fileparse_file: reading '/lib/udev/rules.d/60-persistent-storage-tape.rules' as rules fileparse_file: reading '/lib/udev/rules.d/60-persistent-storage.rules' as rules fileparse_file: reading '/lib/udev/rules.d/60-persistent-v4l.rules' as rules fileparse_file: reading '/etc/udev/rules.d/60-raw.rules' as rules fileparse_file: reading '/lib/udev/rules.d/61-mobile-action.rules' as rules fileparse_file: reading '/lib/udev/rules.d/61-option-modem-modeswitch.rules' as rules fileparse_file: reading '/lib/udev/rules.d/61-persistent-storage-edd.rules' as rules fileparse_file: reading '/lib/udev/rules.d/64-device-mapper.rules' as rules fileparse_file: reading '/lib/udev/rules.d/64-md-raid.rules' as rules fileparse_file: reading '/lib/udev/rules.d/65-md-incremental.rules' as rules fileparse_file: reading '/lib/udev/rules.d/69-dm-lvm-metad.rules' as rules fileparse_file: reading '/lib/udev/rules.d/70-acl.rules' as rules fileparse_file: reading '/lib/udev/rules.d/70-hid2hci.rules' as rules fileparse_file: reading '/etc/udev/rules.d/70-persistent-cd.rules' as rules fileparse_file: reading '/etc/udev/rules.d/70-persistent-net.rules' as rules fileparse_file: reading '/lib/udev/rules.d/75-cd-aliases-generator.rules' as rules fileparse_file: reading '/lib/udev/rules.d/75-net-description.rules' as rules fileparse_file: reading '/lib/udev/rules.d/75-persistent-net-generator.rules' as rules fileparse_file: reading '/lib/udev/rules.d/75-tty-description.rules' as rules fileparse_file: reading '/lib/udev/rules.d/78-sound-card.rules' as rules fileparse_file: reading '/lib/udev/rules.d/79-fstab_import.rules' as rules fileparse_file: reading '/lib/udev/rules.d/80-drivers.rules' as rules fileparse_file: reading '/lib/udev/rules.d/80-iosched.rules' as rules fileparse_file: reading '/lib/udev/rules.d/80-mpath-iosched.rules' as rules fileparse_file: reading '/lib/udev/rules.d/81-kvm-rhel.rules' as rules fileparse_file: reading '/lib/udev/rules.d/88-clock.rules' as rules fileparse_file: reading '/etc/udev/rules.d/90-alsa.rules' as rules fileparse_file: reading '/lib/udev/rules.d/91-drm-modeset.rules' as rules fileparse_file: reading '/lib/udev/rules.d/95-dm-notify.rules' as rules fileparse_file: reading '/lib/udev/rules.d/95-keyboard-force-release.rules' as rules fileparse_file: reading '/lib/udev/rules.d/95-keymap.rules' as rules fileparse_file: reading '/lib/udev/rules.d/95-udev-late.rules' as rules fileparse_file: reading '/etc/udev/rules.d/99-fuse.rules' as rules fileparse_file: reading '/dev/.udev/rules.d/99-root.rules' as rules fileparse_file: reading '/etc/udev/rules.d/99-tty.rules' as rules fileudev_rules_new: rules use 30936 bytes tokens (2578 * 12 bytes), 18240 bytes bufferudev_rules_new: temporary index used 18460 bytes (923 * 20 bytes)udev_device_new_from_syspath: device 0x1671c38 has devpath '/devices/pci0000:00/0000:00:11.0/0000:02:02.0/sound/card0/pcmC0D0c'udev_device_new_from_syspath: device 0x16620a8 has devpath '/devices/pci0000:00/0000:00:11.0/0000:02:02.0/sound/card0/pcmC0D0c'udev_device_read_db: device 0x16620a8 filled with db file dataudev_rules_apply_to_event: LINK 'char/116:7' /lib/udev/rules.d/50-udev-default.rules:4udev_rules_apply_to_event: GROUP 63 /lib/udev/rules.d/50-udev-default.rules:46udev_event_execute_rules: no node name set, will use kernel supplied name 'snd/pcmC0D0c'udev_device_update_db: unable to create db file '/dev/.udev/db/sound:pcmC0D0c': Permission deniedudev_node_add: creating device node '/dev/snd/pcmC0D0c', devnum=116:7, mode=0660, uid=0, gid=63udev_node_mknod: preserve file '/dev/snd/pcmC0D0c', because it has correct dev_tudev_node_mknod: preserve permissions /dev/snd/pcmC0D0c, 020660, uid=0, gid=63node_symlink: preserve already existing symlink '/dev/char/116:7' to '../snd/pcmC0D0c'udevadm_test: UDEV_LOG=6udevadm_test: DEVPATH=/devices/pci0000:00/0000:00:11.0/0000:02:02.0/sound/card0/pcmC0D0cudevadm_test: MAJOR=116udevadm_test: MINOR=7udevadm_test: DEVNAME=/dev/snd/pcmC0D0cudevadm_test: ACTION=addudevadm_test: SUBSYSTEM=soundudevadm_test: DEVLINKS=/dev/char/116:7udevadm_test: ACL_MANAGE=1Here is the output from a previous release (6.4) for comparison:dispcentos:mms$ ls -l /dev/sndtotal 0drwxr-xr-x  2 root root      60 Jan  7 07:13 by-path/crw-rw----+ 1 root audio 116, 8 Jan  7 07:13 controlC0crw-rw----+ 1 root audio 116, 4 Jan  7 07:13 midiC0D0crw-rw----+ 1 root audio 116, 7 Jan  7 07:14 pcmC0D0ccrw-rw----+ 1 root audio 116, 6 Jan  7 07:16 pcmC0D0pcrw-rw----+ 1 root audio 116, 5 Jan  7 07:13 pcmC0D1pcrw-rw----+ 1 root audio 116, 3 Jan  7 07:13 seqcrw-rw----+ 1 root audio 116, 2 Jan  7 07:13 timerdispcentos:mms$ getfacl /dev/snd/pcmC0D0c getfacl: Removing leading '/' from absolute path names# file: dev/snd/pcmC0D0c# owner: root# group: audiouser::rw-user:mms:rw-group::rw-mask::rw-other::---dispcentos:mms$ udevadm info --query=all --name=/dev/snd/pcmC0D0cP: /devices/pci0000:00/0000:00:11.0/0000:02:02.0/sound/card0/pcmC0D0cN: snd/pcmC0D0cS: char/116:7E: UDEV_LOG=3E: DEVPATH=/devices/pci0000:00/0000:00:11.0/0000:02:02.0/sound/card0/pcmC0D0cE: MAJOR=116E: MINOR=7E: DEVNAME=/dev/snd/pcmC0D0cE: SUBSYSTEM=soundE: ACL_MANAGE=1E: DEVLINKS=/dev/char/116:7dispcentos:mms$ udevadm test /devices/pci0000:00/0000:00:11.0/0000:02:02.0/sound/card0/pcmC0D0crun_command: calling: testudevadm_test: version 147This program is for debugging only, it does not run any program,specified by a RUN key. It may show incorrect results, becausesome values may be different, or not available at a simulation run.parse_file: reading '/lib/udev/rules.d/10-console.rules' as rules fileparse_file: reading '/lib/udev/rules.d/10-dm.rules' as rules fileparse_file: reading '/lib/udev/rules.d/11-dm-lvm.rules' as rules fileparse_file: reading '/lib/udev/rules.d/13-dm-disk.rules' as rules fileparse_file: reading '/lib/udev/rules.d/40-isdn.rules' as rules fileparse_file: reading '/lib/udev/rules.d/40-libgphoto2.rules' as rules fileparse_file: reading '/lib/udev/rules.d/40-redhat.rules' as rules fileparse_file: reading '/lib/udev/rules.d/40-usb-media-players.rules' as rules fileparse_file: reading '/lib/udev/rules.d/42-qemu-usb.rules' as rules fileparse_file: reading '/lib/udev/rules.d/50-firmware.rules' as rules fileparse_file: reading '/lib/udev/rules.d/50-udev-default.rules' as rules fileparse_file: reading '/lib/udev/rules.d/60-alias-kmsg.rules' as rules fileparse_file: reading '/lib/udev/rules.d/60-cdrom_id.rules' as rules fileparse_file: reading '/etc/udev/rules.d/60-fprint-autosuspend.rules' as rules fileparse_file: reading '/lib/udev/rules.d/60-libmtp.rules' as rules fileparse_file: reading '/lib/udev/rules.d/60-net.rules' as rules fileparse_file: reading '/etc/udev/rules.d/60-pcmcia.rules' as rules fileparse_file: reading '/lib/udev/rules.d/60-persistent-alsa.rules' as rules fileparse_file: reading '/lib/udev/rules.d/60-persistent-input.rules' as rules fileparse_file: reading '/lib/udev/rules.d/60-persistent-serial.rules' as rules fileparse_file: reading '/lib/udev/rules.d/60-persistent-storage-tape.rules' as rules fileparse_file: reading '/lib/udev/rules.d/60-persistent-storage.rules' as rules fileparse_file: reading '/lib/udev/rules.d/60-persistent-v4l.rules' as rules fileparse_file: reading '/etc/udev/rules.d/60-raw.rules' as rules fileparse_file: reading '/lib/udev/rules.d/60-wacom.rules' as rules fileparse_file: reading '/lib/udev/rules.d/61-gnome-bluetooth-rfkill.rules' as rules fileparse_file: reading '/lib/udev/rules.d/61-mobile-action.rules' as rules fileparse_file: reading '/lib/udev/rules.d/61-option-modem-modeswitch.rules' as rules fileparse_file: reading '/lib/udev/rules.d/61-persistent-storage-edd.rules' as rules fileparse_file: reading '/lib/udev/rules.d/61-uinput-stddev.rules' as rules fileparse_file: reading '/lib/udev/rules.d/61-uinput-wacom.rules' as rules fileparse_file: reading '/lib/udev/rules.d/64-device-mapper.rules' as rules fileparse_file: reading '/lib/udev/rules.d/64-md-raid.rules' as rules fileparse_file: reading '/lib/udev/rules.d/65-libsane.rules' as rules fileparse_file: reading '/lib/udev/rules.d/65-libwacom.rules' as rules fileparse_file: reading '/lib/udev/rules.d/65-md-incremental.rules' as rules fileparse_file: reading '/lib/udev/rules.d/69-dm-lvm-metad.rules' as rules fileparse_file: reading '/lib/udev/rules.d/69-pilot-link.rules' as rules fileparse_file: reading '/lib/udev/rules.d/70-acl.rules' as rules fileparse_file: reading '/lib/udev/rules.d/70-cups-libusb.rules' as rules fileparse_file: reading '/lib/udev/rules.d/70-hid2hci.rules' as rules fileparse_file: reading '/etc/udev/rules.d/70-persistent-cd.rules' as rules fileparse_file: reading '/etc/udev/rules.d/70-persistent-net.rules' as rules fileparse_file: reading '/lib/udev/rules.d/70-printers.rules' as rules fileparse_file: reading '/lib/udev/rules.d/71-biosdevname.rules' as rules fileparse_file: reading '/lib/udev/rules.d/75-cd-aliases-generator.rules' as rules fileparse_file: reading '/lib/udev/rules.d/75-net-description.rules' as rules fileparse_file: reading '/lib/udev/rules.d/75-persistent-net-generator.rules' as rules fileparse_file: reading '/lib/udev/rules.d/75-tty-description.rules' as rules fileparse_file: reading '/lib/udev/rules.d/77-mm-ericsson-mbm.rules' as rules fileparse_file: reading '/lib/udev/rules.d/77-mm-longcheer-port-types.rules' as rules fileparse_file: reading '/lib/udev/rules.d/77-mm-pcmcia-device-blacklist.rules' as rules fileparse_file: reading '/lib/udev/rules.d/77-mm-platform-serial-whitelist.rules' as rules fileparse_file: reading '/lib/udev/rules.d/77-mm-simtech-port-types.rules' as rules fileparse_file: reading '/lib/udev/rules.d/77-mm-usb-device-blacklist.rules' as rules fileparse_file: reading '/lib/udev/rules.d/77-mm-zte-port-types.rules' as rules fileparse_file: reading '/lib/udev/rules.d/77-nm-olpc-mesh.rules' as rules fileparse_file: reading '/lib/udev/rules.d/78-sound-card.rules' as rules fileparse_file: reading '/lib/udev/rules.d/79-fstab_import.rules' as rules fileparse_file: reading '/lib/udev/rules.d/80-drivers.rules' as rules fileparse_file: reading '/lib/udev/rules.d/80-iosched.rules' as rules fileparse_file: reading '/lib/udev/rules.d/80-mpath-iosched.rules' as rules fileparse_file: reading '/lib/udev/rules.d/80-udisks.rules' as rules fileparse_file: reading '/lib/udev/rules.d/85-regulatory.rules' as rules fileparse_file: reading '/lib/udev/rules.d/85-usbmuxd.rules' as rules fileparse_file: reading '/lib/udev/rules.d/88-clock.rules' as rules fileparse_file: reading '/lib/udev/rules.d/89-microcode.rules' as rules fileparse_file: reading '/etc/udev/rules.d/90-alsa.rules' as rules fileparse_file: reading '/etc/udev/rules.d/90-hal.rules' as rules fileparse_file: reading '/lib/udev/rules.d/90-pulseaudio.rules' as rules fileparse_file: reading '/lib/udev/rules.d/91-drm-modeset.rules' as rules fileparse_file: reading '/lib/udev/rules.d/95-devkit-power-battery-recall-dell.rules' as rules fileparse_file: reading '/lib/udev/rules.d/95-devkit-power-battery-recall-fujitsu.rules' as rules fileparse_file: reading '/lib/udev/rules.d/95-devkit-power-battery-recall-gateway.rules' as rules fileparse_file: reading '/lib/udev/rules.d/95-devkit-power-battery-recall-ibm.rules' as rules fileparse_file: reading '/lib/udev/rules.d/95-devkit-power-battery-recall-lenovo.rules' as rules fileparse_file: reading '/lib/udev/rules.d/95-devkit-power-battery-recall-toshiba.rules' as rules fileparse_file: reading '/lib/udev/rules.d/95-devkit-power-csr.rules' as rules fileparse_file: reading '/lib/udev/rules.d/95-devkit-power-hid.rules' as rules fileparse_file: reading '/lib/udev/rules.d/95-devkit-power-wup.rules' as rules fileparse_file: reading '/lib/udev/rules.d/95-dm-notify.rules' as rules fileparse_file: reading '/lib/udev/rules.d/95-keyboard-force-release.rules' as rules fileparse_file: reading '/lib/udev/rules.d/95-keymap.rules' as rules fileparse_file: reading '/lib/udev/rules.d/95-udev-late.rules' as rules fileparse_file: reading '/etc/udev/rules.d/97-bluetooth-serial.rules' as rules fileparse_file: reading '/lib/udev/rules.d/97-bluetooth.rules' as rules fileparse_file: reading '/etc/udev/rules.d/98-kexec.rules' as rules fileparse_file: reading '/etc/udev/rules.d/99-fuse.rules' as rules fileparse_file: reading '/dev/.udev/rules.d/99-root.rules' as rules fileparse_file: reading '/etc/udev/rules.d/99-tty.rules' as rules fileparse_file: reading '/etc/udev/rules.d/99-vmware-scsi-udev.rules' as rules fileudev_rules_new: rules use 187884 bytes tokens (15657 * 12 bytes), 39574 bytes bufferudev_rules_new: temporary index used 59740 bytes (2987 * 20 bytes)udev_device_new_from_syspath: device 0x218d3e0 has devpath '/devices/pci0000:00/0000:00:11.0/0000:02:02.0/sound/card0/pcmC0D0c'udev_device_new_from_syspath: device 0x2175148 has devpath '/devices/pci0000:00/0000:00:11.0/0000:02:02.0/sound/card0/pcmC0D0c'udev_device_read_db: device 0x2175148 filled with db file dataudev_rules_apply_to_event: LINK 'char/116:7' /lib/udev/rules.d/50-udev-default.rules:4udev_rules_apply_to_event: GROUP 63 /lib/udev/rules.d/50-udev-default.rules:46udev_device_new_from_syspath: device 0x218d590 has devpath '/devices/pci0000:00/0000:00:11.0/0000:02:02.0/sound/card0'udev_device_new_from_syspath: device 0x218d858 has devpath '/devices/pci0000:00/0000:00:11.0/0000:02:02.0'udev_device_new_from_syspath: device 0x218da30 has devpath '/devices/pci0000:00/0000:00:11.0'udev_device_new_from_syspath: device 0x218dbf0 has devpath '/devices/pci0000:00'udev_rules_apply_to_event: RUN 'udev-acl --action=$env{ACTION} --device=$env{DEVNAME}' /lib/udev/rules.d/70-acl.rules:53udev_rules_apply_to_event: RUN 'socket:@/org/freedesktop/hal/udev_event' /etc/udev/rules.d/90-hal.rules:2udev_event_execute_rules: no node name set, will use kernel supplied name 'snd/pcmC0D0c'udev_device_update_db: unable to create db file '/dev/.udev/db/sound:pcmC0D0c': Permission deniedudev_node_add: creating device node '/dev/snd/pcmC0D0c', devnum=116:7, mode=0660, uid=0, gid=63udev_node_mknod: preserve file '/dev/snd/pcmC0D0c', because it has correct dev_tudev_node_mknod: preserve permissions /dev/snd/pcmC0D0c, 020660, uid=0, gid=63node_symlink: preserve already existing symlink '/dev/char/116:7' to '../snd/pcmC0D0c'udevadm_test: UDEV_LOG=6udevadm_test: DEVPATH=/devices/pci0000:00/0000:00:11.0/0000:02:02.0/sound/card0/pcmC0D0cudevadm_test: MAJOR=116udevadm_test: MINOR=7udevadm_test: DEVNAME=/dev/snd/pcmC0D0cudevadm_test: ACTION=addudevadm_test: SUBSYSTEM=soundudevadm_test: DEVLINKS=/dev/char/116:7udevadm_test: ACL_MANAGE=1udevadm_test: run: 'udev-acl --action=add --device=/dev/snd/pcmC0D0c'udevadm_test: run: 'socket:@/org/freedesktop/hal/udev_event'You will see the following two lines from udevadm test that are missing from the CentOS 6.5 minimal installation:udev_rules_apply_to_event: RUN 'udev-acl --action=$env{ACTION} --device=$env{DEVNAME}' /lib/udev/rules.d/70-acl.rules:53udevadm_test: run: 'udev-acl --action=add --device=/dev/snd/pcmC0D0c'Any ideas why?
CentOS 6.5 sound permissions
centos;permissions;audio;alsa;acl