В начало → Руководство по файловой системе для устройств → Вопросы, относящиеся к правам доступа |
Хотя вы можете установить права доступа в /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
Первое поле — это проверка терминала. На большинстве систем это console-group. PAM будет проверять это поле при каждом входе в систему. Если вход произошёл на устройстве, содержащемся в console-group, PAM проверит и возможно сменит права на некоторые файлы устройств.
Второе поле содержит права, которые установятся на файл устройства после удачного входа в систему. Когда человек вошел в систему, а файлы устройств принадлежат пользователю и группе по умолчанию, PAM сменит владельца на вошедшего пользователя и установит на них права из второго поля. В данном случае используется 0600 (пользователь имеет право на чтение/запись, все остальные нет).
В третьем поле содержатся группы устройств, чьи права будут изменены. В данном случае, вторая группа (все устройства, относящиеся к звуку) будут изменены.
Четвёртое поле определяет права, которые будут установлены на файлы устройств после возврата в состояние по умолчанию. Другими словами, если человек, который владеет правами на все файлы устройств, выйдет из системы, PAM установит права обратно в состояние по умолчанию, описанному в этом четвёртом поле.
Пятое поле определяет собственника (с группой если вам надо) к которому будут установлены атрибуты устройства после возврата в состояние по умолчанию Другими словами, если человек, владеющий правами на все файлы устройств, выйдет из системы, PAM установит собственника обратно в состояние по умолчанию, описанному в пятом поле.
Если вы действительно хотите установить права, используя /etc/devfsd.conf
, тогда используйте синтаксис приведённый в этом примере:
Второе поле — это группа устройств, начиная с /dev
. Это регулярное выражение, означающее, что вы можете выбрать несколько файлов устройств с одним правилом.
Четвёртое поле — это владелец файла устройства. В отличие от PAM, он не изменяется (если он не упоминается в console.perms
, так как PAM главнее).
Пятое поле содержит права на файлы устройств.
Это обычная ситуация для 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
В начало → Руководство по файловой системе для устройств → Вопросы, относящиеся к правам доступа |