eject: как разрешить юзеру umount ?

Раньше собственно была ветка для правил udev - /etc/polkit-1/localauthority/50-local.d/ .
[Storage Permissions]
 Identity=unix-group:storage;unix-group:optical
 Action=org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.luks-unlock;org.freedesktop.udisks.inhibit-polling;org.freedesktop.udisks.drive-set-spindown;org.freedesktop.udisks.filesystem-mount-system-internal;org.freedesktop.udisks2.filesystem-unmount-others
 ResultAny=yes
 ResultActive=yes
 ResultInactive=yes

Теперь её нет, этой ветки правил, и игнорируется созданная вручную. Как админить доступ к cd и usb ? И что пришло этим правилам на смену ? Конфиг в xml с вики не помогает, всё тож самое:
eject: CD-ROM eject command failed: Устройство или ресурс занято
Что говорит?
cat /etc/group | grep optical
kotnaton
Раньше собственно была ветка для правил udev - /etc/polkit-1/localauthority/50-local.d/
Английским по белому написано – это правила polkit, а не udev.
Правила polkit работают с udisks, и НЕ работают с umount, который вызывает eject.

Если диск смонтирован через udisks, то и отмонтировать его надо через udisks, а не eject.
Если он смонтирован через mount, то никакие правила не нужны.

Чтобы извлечь диск с помощью eject, нужно входить в группу optical, и чтобы сам диск ей принадлежал.
Natrio, доброго вечера вам. Прошу прощения, я просто некорректно поставил вопрос: я просто запамятовал что мне нужна постоянная точка монтирования по адресу /media/cdrom , и для этого я ввёл в fstab такое:
/dev/sr0  /media/cdrom  iso9660,udf  ro,users,noauto,nofail,norock,mode=0644,dmode=0755,exec 0 0

И в этом случае eject требуют именно права суперпользователя, и никакое участие пользователя в optical не помогает:

$groups
disk lp wheel games video audio optical storage scanner power users

Natrio
группу optical, и чтобы сам диск ей принадлежал.

А вот это как раз и делал раньше polkit (по крайней мере в убунту) а теперь непойми кто... По крайней мере я попытался, безтолку, сделать в /etc/polkit-1/rules.d/50-udisks.rules

polkit.addRule(function(action, subject) {
  var YES = polkit.Result.YES;
  var permission = {
    // only required for udisks1:
    "org.freedesktop.udisks.filesystem-mount": YES,
    "org.freedesktop.udisks.filesystem-mount-system-internal": YES,
    "org.freedesktop.udisks.luks-unlock": YES,
    "org.freedesktop.udisks.drive-eject": YES,
    "org.freedesktop.udisks.drive-detach": YES,
    // only required for udisks2:
    "org.freedesktop.udisks2.filesystem-mount": YES,
    "org.freedesktop.udisks2.filesystem-mount-system": YES,
    "org.freedesktop.udisks2.encrypted-unlock": YES,
    "org.freedesktop.udisks2.eject-media": YES,
    "org.freedesktop.udisks2.power-off-drive": YES,
    // required for udisks2 if using udiskie from another seat (e.g. systemd):
    "org.freedesktop.udisks2.filesystem-mount-other-seat": YES,
    "org.freedesktop.udisks2.encrypted-unlock-other-seat": YES,
    "org.freedesktop.udisks2.eject-media-other-seat": YES,
    "org.freedesktop.udisks2.power-off-drive-other-seat": YES
  };
  if (subject.isInGroup("storage")) {
    return permission[action.id];
  }
});
kotnaton
А вот это как раз и делал раньше polkit (по крайней мере в убунту) а теперь непойми кто...
Никогда этого не делал polkit. Он определяет псевдоправа доступа для udisks, но не для mount.

Группы устройствам назначаются как раз через правила udev:
$ grep -r optical /usr/lib/udev/rules.d/
/usr/lib/udev/rules.d/50-udev-default.rules:SUBSYSTEM=="block", KERNEL=="sr[0-9]*", GROUP="optical"
/usr/lib/udev/rules.d/50-udev-default.rules:SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="4|5", GROUP="optical"
/usr/lib/udev/rules.d/50-udev-default.rules:KERNEL=="sch[0-9]*", GROUP="optical"
/usr/lib/udev/rules.d/50-udev-default.rules:KERNEL=="pktcdvd[0-9]*", GROUP="optical"
/usr/lib/udev/rules.d/50-udev-default.rules:KERNEL=="pktcdvd", GROUP="optical"
/usr/lib/udev/rules.d/60-persistent-storage.rules:# probe filesystem metadata of optical drives which have a media inserted
/usr/lib/udev/rules.d/70-uaccess.rules:# optical drives

Если диск монтируется командой mount /media/cdrom , и отмонтируется командой umount /media/cdrom , то и команда eject должна его отмонтировать.
Если eject пишет, что устройство занято, значит это должен писать и umount.

Если устройство занято, значит дело не в правах доступа, а в каком-то работающем процессе, который "держит" ФС на нём, нее закрыв открытые файлы.
Такое часто бывает, к примеру, с демоном tumbler, который имеет моду кэшировать миниатюры картинок с диском и флешек в самое неподходящее время :)
kotnaton
eject: CD-ROM eject command failed: Устройство или ресурс занято
Попробуй чтобы узнать какой процесс держит файл (Resource busy)
использовать утилиту fuser - $ fuser -v -m /usr
Можно дополнительно запустить $ strace eject
Ошибки не исчезают с опытом - они просто умнеют
vasek
Попробуй чтобы узнать какой процесс держит файл
$ lsof | grep /dev/sr0
?
Aivar
$ lsof | grep /dev/sr0
?
Если честно не пришло в голову - наверное, можно. Но не уверен на все 100 - просто никогда не использовал lsof в таких случаях, не представился случай. И разумеется пробовать нужно все.
А вот если eject заблокирован на каком то системном вызове, например, flock (блокировка файла), то лучше смотреть strace — определить по дескриптеру файл и дальше используя lsof выйти на блокирующий процесс.....
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.