Есть VirtualBox, создаю гостевую ОС с прямым доступом к одному из разделов диска:
$ VBoxManage internalcommands createrawvmdk -filename ~/.VirtualBox/winxp.vmdk -rawdisk /dev/sda -partitions 4 -mbr ~/.VirtualBox/mbr.mbr -relative
Запускаю виртуальную машину - ошибка, не может получить доступ к диску, VERR_ACCESS_DENIED, NS_ERROR_FAILURE (0x80004005)
Если virtualbox запущен из-под рута - все работает нормально. Но хочется под юзером.
Права на доступ стоят такие:
brw-rw---- 1 root disk /dev/sda
brw-rw---- 1 root disk /dev/sda4
brw-rw---- 1 root disk /dev/sda
brw-rw-rw- 1 root disk /dev/sda4
Значит дело таки в правах, причем только на этот раздел (от прав на общий /dev/sda никак не зависит).
Дальше начинаются странности. Вернул права обратно на 660:
brw-rw---- 1 root disk /dev/sda4
добавил себя в группу disk, перезапустил virtualbox - не работает, нет доступа. Перегрузился - не помогло, по-прежнему virtualbox не может получить доступ к устройству.
На самом /usr/bin/virtualbox стоит suid-бит, так что теоретически он может обращаться к /dev/sda4 не обязательно с правами текущего юзера, а от какого-нибудь nobody или vboxuser. Видимо, поэтому если права rw для other стоят - он читает, а если только для group - то нет, хотя сам юзер в группе disk. Копаем дальше.
Попробовал определить, с какими правами происходит собственно попытка обращения. Через strace virtualbox работать отказался, пришлось настраивать auditd:
$ sudo aureport -f
File Report
===============================================
# date time file syscall success exe auid event
===============================================
1. 11/17/2013 01:22:25 /dev/sda4 2 no /usr/lib/virtualbox/VBoxSVC -1 564
2. 11/17/2013 01:25:57 /dev/sda4 2 no /usr/lib/virtualbox/VBoxSVC -1 583
$ sudo ausearch -a 583
----
time->Sun Nov 17 01:25:57 2013
type=PATH msg=audit(1384644357.833:583): item=0 name="/dev/sda4" inode=6478 dev=00:05 mode=060660 ouid=0 ogid=6 rdev=08:04
type=CWD msg=audit(1384644357.833:583): cwd="/home/virturov"
type=SYSCALL msg=audit(1384644357.833:583): arch=c000003e syscall=2 success=no exit=-13 a0=7f6f440011a0 a1=80000 a2=180 a3=2 items=1 ppid=1 pid=6102 auid=4294967295 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 ses=4294967295 tty=(none) comm="nspr-5" exe="/usr/lib/virtualbox/VBoxSVC" key=(null)
.
1000:1000 - это мой юзерский uid:gid. То есть обращается таки из-под юзера. В группу disk этот юзер добавлен. Права на /dev/sda4 для группы disk стоят. В чем тогда дело? Почему если менять права на 666, то все работает, а с 660 не хочет?
Система Debian, но на последней Ubuntu тоже попробовал - результат один-в-один.