LINUX.ORG.RU

Права доступа на /dev/sda1 для юзера из группы disk

 , , , ,


0

2

Есть 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
Если сделать sudo chmod 666 /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 тоже попробовал - результат один-в-один.

вот знаешь, тоже было интересно на тему доступа к дискам: дабы попробовать абстрагироваться от virtualbox попробуй сделать

dd if=/dev/sda4 of=/dev/null count=1

от пользователя, у которого по-идее должен быть доступ на чтение.

если не работает - значит надо выяснять, почему тебя отфутболили. если работает - выяснять, почему виртуалбокс не хочет кушать.

billic ★★ ()
Последнее исправление: billic (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.