From: Sergey Vlasov <vsu@altlinux.ru> To: sisyphus@lists.altlinux.org Subject: Re: [sisyphus] /dev/sg* permissions Date: Tue, 25 Nov 2008 17:22:40 +0300 Message-ID: <20081125142240.GT30445@newmaster.mivlgu.local> (raw) In-Reply-To: <20081125123612.GF18148@wo.int.altlinux.org> [-- Attachment #1: Type: text/plain, Size: 4405 bytes --] On Tue, Nov 25, 2008 at 03:36:12PM +0300, Dmitry V. Levin wrote: > On Tue, Nov 25, 2008 at 03:28:29PM +0300, Rafael Malikov wrote: > > Dmitry V. Levin wrote: [...] > > > На файлы /dev/sg* должны быть другие права. > > > У меня там сейчас группа cdwriter. > > > Наверное, у вас udev создаёт эти файлы с неправильными правами. > > > > > получается у меня тоже с неправильными? > > > > [raf@raflinux ~]$ ls -all /dev/sg* > > crw-r----- 1 root disk 21, 0 Ноя 24 11:15 /dev/sg0 > > crw-r----- 1 root disk 21, 1 Ноя 24 11:15 /dev/sg1 > > crw-r----- 1 root disk 21, 2 Ноя 24 11:15 /dev/sg2 > > Если устройства /dev/sg* имеют такие права, то к ним имеет доступ только > root (и привилегированные программы). > > > [raf@raflinux ~]$ uname -a > > Linux raflinux.ancor.ru 2.6.27-std-pae-alt2 #1 SMP Mon Nov 10 19:20:48 > > UTC 2008 i686 GNU/Linux > > [raf@raflinux ~]$ rpm -qa | grep udev > > udev-rules-130-alt6 > > udev-130-alt6 > > udev_static-addon-0.2-alt1 > > udev-initramfs-130-alt6 > > > > и кто виноват? куда копать? > > Хороший вопрос. Между прочим, /dev/sg* могут использоваться не только с > целью чтения audio cd. И не только с целью их записи. На самом деле передача SCSI-команд возможна и через обычные устройства /dev/sr*, /dev/sd* - с использованием ioctl SG_IO. Однако совсем произвольные команды обычным пользователям выполнять запрещено (чтобы, например, предотвратить возможность изменения прошивки привода). Причём в различных версиях ядер условия фильтрации команд различаются: - В ядрах до 2.6.27 разрешённые коды команд жёстко прописаны в коде ядра, причём отдельно для доступа через SG_IO и /dev/sg*: - Список разрешённых команд для SG_IO (доступ через основной файл устройства) можно посмотреть в block/scsi_ioctl.c в исходниках ядра; он достаточно длинный, общий подход - при открытии только для чтения разрешены команды, использующиеся при чтении CD/DVD (в том числе работа с Audio-CD), при открытии на запись также разрешены команды, использующиеся при записи CD/DVD на стандартных устройствах (но для доступа к нестандартным возможностям некоторых устройств этих команд может быть недостаточно - именно по этому поводу в своё время возмущался автор cdrecord). Для процессов, имеющих CAP_SYS_RAWIO, разрешено всё. - Фильтр для доступа через /dev/sg* реализован в drivers/scsi/sg.c (функция sg_allow_access()) и работает следующим образом: - Для SCSI-сканеров разрешены любые команды. - При открытии устройства только для чтения разрешён некоторый набор команд чтения (отличающийся от набора для чтения, используемого при фильтрации SG_IO). - При открытии устройства для записи разрешены любые команды. - Начиная с версии 2.6.27, в ядре используется общий фильтр команд для доступа через /dev/sg* и SG_IO, причём теперь этот фильтр может настраиваться через атрибуты устройства read_table и write_table в sysfs - для любой команды можно разрешить использование её при открытии устройства только для чтения, для записи, или запретить её использование без CAP_SYS_RAWIO (тем самым решается проблема с устройствами, требующими использования нестандартных команд в cdrecord или других утилитах - можно разрешить нужные команды, например, через правила udev в зависимости от модели устройства). Теперь доступ через обычный файл устройства и /dev/sg* будет давать одинаковые права на использование SCSI-команд (за единственным исключением - для SCSI-сканеров сохранено разрешение на использование любых команд через /dev/sg*, чтобы не ломать совместимость). Таким образом, расширение прав доступа к /dev/sg* при использовании ядер старее 2.6.27 приведёт к тому, что пользователи, имеющие право записи в /dev/sg*, получат возможность передавать в устройство произвольные команды (а не только ограниченный набор, доступный при разрешении записи в /dev/sr*). С другой стороны, для большинства программ должно быть достаточно доступа через /dev/sr* - хотя, возможно, какие-то старые программы до сих пор не умеют использовать этот интерфейс. Кстати, в новых ядрах (>= 2.6.23) есть ещё /dev/bsg/* - ещё один интерфейс для передачи произвольных команд, замена /dev/sg* с более широкими возможностями (теоретически там может использоваться не только SCSI). [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 189 bytes --]
next prev parent reply other threads:[~2008-11-25 14:22 UTC|newest] Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top 2008-11-24 9:50 [sisyphus] audio cd riping Alexey Morsov 2008-11-25 8:19 ` Alexey Morsov 2008-11-25 11:28 ` Dmitry V. Levin 2008-11-25 11:36 ` Alexey Morsov 2008-11-25 11:42 ` [sisyphus] usev /dev/sg* permissions Dmitry V. Levin 2008-11-25 11:56 ` Alexey Morsov 2008-11-25 12:28 ` Rafael Malikov 2008-11-25 12:36 ` [sisyphus] " Dmitry V. Levin 2008-11-25 12:52 ` Alexey Morsov 2008-11-25 13:01 ` Valery V. Inozemtsev 2008-11-25 13:07 ` Alexey Morsov 2008-11-25 13:23 ` Valery V. Inozemtsev 2008-11-25 16:56 ` Andrey Rahmatullin 2008-11-25 17:05 ` Valery V. Inozemtsev 2008-11-25 20:42 ` Alexey Morsov 2008-11-25 14:22 ` Sergey Vlasov [this message] 2008-11-25 13:12 ` Dmitry V. Levin 2008-11-25 13:26 ` Valery V. Inozemtsev 2008-11-25 13:40 ` Alexey Morsov 2008-11-25 13:46 ` Valery V. Inozemtsev 2008-11-25 13:51 ` Alexey Morsov 2008-11-25 13:58 ` Valery V. Inozemtsev 2008-11-25 14:17 ` Alexey Morsov 2008-11-25 14:25 ` Sergey Vlasov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20081125142240.GT30445@newmaster.mivlgu.local \ --to=vsu@altlinux.ru \ --cc=sisyphus@lists.altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
ALT Linux Sisyphus discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \ sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru public-inbox-index sisyphus Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.sisyphus AGPL code for this site: git clone https://public-inbox.org/public-inbox.git