В началоРуководство по файловой системе для устройств → Вопросы, относящиеся к правам доступа
Gentoo-doc HOME Пред.: Администрирование дерева устройствВ началоУровень выше: Руководство по файловой системе для устройств

4. Вопросы, относящиеся к правам доступа

4.1. Установка/изменение прав доступа при помощи PAM

Хотя вы можете установить права доступа в /etc/devfsd.conf, мы советуем использовать PAM (Pluggable Authentification Modules). Так как PAM имеет решающий голос при установке прав доступа, и может проигнорировать изменения, которые вы сделали в /etc/devfsd.conf.

PAM использует /etc/security/console.perms для установки прав доступа. Файл состоит из двух частей: в первой описываются группы, а во второй права.

Давайте сначала взглянем на часть с группами. Как пример мы рассмотрим sound-group:

Листинг 7. Sound group в /etc/security/console.perms

<sound>=/dev/dsp* /dev/audio* /dev/midi* \
    /dev/mixer* /dev/sequencer* \
    /dev/sound/* /dev/snd/* /dev/beep \
    /dev/admm* \
    /dev/adsp* /dev/aload* /dev/amidi* /dev/dmfm* \
    /dev/dmmidi* /dev/sndstat


Синтаксис достаточно прост: вы начинаете с имени группы, и заканчиваете списком устройств, принадлежащих этой группе.

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

Листинг 8. Права доступа для sound group в /etc/security/console.perms

<console>  0600 <sound>      0600 root.audio


  1. Первое поле — это проверка терминала. На большинстве систем это console-group. PAM будет проверять это поле при каждом входе в систему. Если вход произошёл на устройстве, содержащемся в console-group, PAM проверит и возможно сменит права на некоторые файлы устройств.

  2. Второе поле содержит права, которые установятся на файл устройства после удачного входа в систему. Когда человек вошел в систему, а файлы устройств принадлежат пользователю и группе по умолчанию, PAM сменит владельца на вошедшего пользователя и установит на них права из второго поля. В данном случае используется 0600 (пользователь имеет право на чтение/запись, все остальные нет).

  3. В третьем поле содержатся группы устройств, чьи права будут изменены. В данном случае, вторая группа (все устройства, относящиеся к звуку) будут изменены.

  4. Четвёртое поле определяет права, которые будут установлены на файлы устройств после возврата в состояние по умолчанию. Другими словами, если человек, который владеет правами на все файлы устройств, выйдет из системы, PAM установит права обратно в состояние по умолчанию, описанному в этом четвёртом поле.

  5. Пятое поле определяет собственника (с группой если вам надо) к которому будут установлены атрибуты устройства после возврата в состояние по умолчанию Другими словами, если человек, владеющий правами на все файлы устройств, выйдет из системы, PAM установит собственника обратно в состояние по умолчанию, описанному в пятом поле.

4.2. Установка/изменение прав доступа при помощи devfsd

Если вы действительно хотите установить права, используя /etc/devfsd.conf, тогда используйте синтаксис приведённый в этом примере:

Листинг 9. Права в /etc/devfsd.conf

REGISTER    ^cdroms/.*  PERMISSIONS root.cdrom 0660


Второе поле — это группа устройств, начиная с /dev. Это регулярное выражение, означающее, что вы можете выбрать несколько файлов устройств с одним правилом.

Четвёртое поле — это владелец файла устройства. В отличие от PAM, он не изменяется (если он не упоминается в console.perms, так как PAM главнее).

Пятое поле содержит права на файлы устройств.

4.3. Ручная установка прав и их сохранение devfsd

Это обычная ситуация для Gentoo: если вы делаете chown и chmod некоторым файлам устройств, то devfsd сохраняют информацию, когда вы вы выключаете систему. Это происходит из-за того, что файл /etc/devfsd.conf содержит следующие строчки:

Листинг 10. /etc/devfsd.conf для сохранения прав доступа

REGISTER        ^pt[sy]/.*   IGNORE
CHANGE          ^pt[sy]/.*   IGNORE
CREATE          ^pt[sy]/.*   IGNORE
DELETE          ^pt[sy]      IGNORE
REGISTER        ^log         IGNORE
CHANGE          ^log         IGNORE
CREATE          ^log         IGNORE
DELETE          ^log         IGNORE
REGISTER        .*           COPY    /lib/dev-state/$devname $devpath
CHANGE          .*           COPY    $devpath /lib/dev-state/$devname
CREATE          .*           COPY    $devpath /lib/dev-state/$devname
DELETE          .*           CFUNCTION GLOBAL unlink
/lib/dev-state/$devname
RESTORE         /lib/dev-state


Другими словами, изменённые файлы устройств копируются в /lib/dev-state, когда выключается система, и копируются в /dev, когда система грузится.

Другая возможность - монтировать /lib/dev-state в /dev во время загрузки. Чтобы это сделать, вы должны быть уверены, что devfs не монтируется автоматически (это значит, что вы должны перекомпилировать ядро), и что /dev/console существует. Затем, где-то в начале bootscripts (загрузочных скриптов) вашей системы, вы должны разместить:

Листинг 11. Монтирование /lib/dev-state в /dev

mount --bind /dev /lib/dev-state
mount -t devfs none /dev
devfsd /dev


Пред.: Администрирование дерева устройствВ началоУровень выше: Руководство по файловой системе для устройств
В началоРуководство по файловой системе для устройств → Вопросы, относящиеся к правам доступа