Вопрос или проблема
Ситуация до того, как я захожу на рабочий стол CDE (или Gnome)
mplayer Taste\ of\ freedom-A\ man\ sing\ his\ song.mp3
MPlayer 1.1-4.8.2 (C) 2000-2012 MPlayer Team
Воспроизведение Taste of freedom-A man sing his song.mp3
libavformat version 54.6.100 (internal)
Обнаружен формат файла только с аудио.
Загрузка субтитров в ./
==========================================================================
Открытие аудиодекодера: [mpg123] MPEG 1.0/2.0/2.5 слои I, II, III
АУДИО: 48000 Гц, 2 канала, s16le, 320.0 кбит/20.83% (соотношение: 40000->192000)
Выбран аудиокодек: [mpg123] afm: mpg123 (MPEG 1.0/2.0/2.5 слои I, II, III)
==========================================================================
ao2: 48000 Гц 2 канала s16le [0x9]
[AO SUN] Не удается открыть аудиоустройство /dev/audio, отказано в доступе -> без звука.
[AO ESD] esd_open_sound не удался: Нет такого файла или каталога
Я вхожу в CDE, захожу удаленно на машину Solaris (или локально) и вуаля
mplayer Taste\ of\ freedom-A\ man\ sing\ his\ song.mp3
MPlayer 1.1-4.8.2 (C) 2000-2012 MPlayer Team
Воспроизведение Taste of freedom-A man sing his song.mp3
libavformat version 54.6.100 (internal)
Обнаружен формат файла только с аудио.
Загрузка субтитров в ./
==========================================================================
Открытие аудиодекодера: [mpg123] MPEG 1.0/2.0/2.5 слои I, II, III
АУДИО: 48000 Гц, 2 канала, s16le, 320.0 кбит/20.83% (соотношение: 40000->192000)
Выбран аудиокодек: [mpg123] afm: mpg123 (MPEG 1.0/2.0/2.5 слои I, II, III)
==========================================================================
ao2: 48000 Гц 2 канала s16le [0x9]
AO: [sun] 48000Гц 2канала s16le (2 байта на образец)
Видео: нет видео
Начало воспроизведения...
A: 0.9 (00.8) из 198.0 (03:18.0) 0.6%
MPlayer прерван сигналом 2 в модуле: play_audio
A: 0.9 (00.9) из 198.0 (03:18.0) 0.6%
Мой вопрос: кто изменяет разрешение? Какой файл надо изменить, чтобы сделать эти разрешения постоянными даже без входа в cde или gnome?
Я вижу, что устройства, которые меняют разрешения, это:
143130628 1 crw------- 1 myuser other 273, 0 Jan 15 00:14 /devices/pseudo/oss_sadasupport@0:sound,audio
143130630 1 crw------- 1 myuser other 273, 1 Jan 15 00:14 /devices/pseudo/oss_sadasupport@0:sound,audioctl
На самом деле в качестве обходного решения я использую старый добрый скрипт в стиле SysV
vim /etc/rc3.d/S80rclocal
#!/opt/csw/bin/bash
case "$1" in
'start')
PATH=$PATH:/opt/csw/bin
export PATH
for file in /devices/pseudo/oss_sada*;do sudo gfind $file -not -type d -exec gchown -c mysuser {} \;; done
;;
'stop')
true
;;
*)
echo "Usage: $0 { start | stop }"
exit 1
;;
esac
exit 0
.
Ответ или решение
Вопрос, затронутый в описании, касается управления и настройки аудиоустройств в операционной системе Solaris 10, с акцентом на обеспечение постоянного доступа пользователя к аудиоустройствам без необходимости входа в CDE (Common Desktop Environment) или Gnome. Давайте разберём этот вопрос подробно.
Теория
В Unix-подобных системах, таких как Solaris, устройства обычно представлены как специальные файлы в файловой системе, находящиеся в каталоге /dev
. Управление доступом к этим устройствам осуществляется через настройки разрешений, которые определяют, какие пользователи или группы могут читать из них или записывать в них. Если пользователю отказывается в доступе, это может быть вызвано неадекватными правами на нужный файл устройства.
Файлы устройств для аудиоаппаратуры в вашем случае находятся по следующим путям:
/devices/pseudo/oss_sadasupport@0:sound,audio
/devices/pseudo/oss_sadasupport@0:sound,audioctl
Ваша задача заключается в том, чтобы установить постоянные права доступа таким образом, чтобы пользователь "myuser" мог взаимодействовать с устройствами без входа в графическую среду.
Пример
На основании приведённых вами логов mplayer
, мы видим, что после входа в систему через CDE пользователю автоматически предоставляются необходимые разрешения на доступ к аудиоустройствам. Однако без входа в графическую систему доступ ограничен, что видно по ошибке "Permission denied" при попытке воспроизведения аудио.
Чтобы решить эту проблему, вы предложили использовать сценарий инициализации старого стиля SysV. Этот сценарий автоматически меняет владельца на нужные файлы устройств при старте системы, что обходит необходимость вручную менять права каждый раз.
Применение
-
Понимание текущих разрешений: Проверьте текущие разрешения на файловом уровне для устройств, используя команду
ls -l /devices/pseudo/oss_sada*
. Убедитесь, что права чтения и записи установлены на уровне пользователя (обычноcrw-------
указывает на доступ только для владельца). -
Автоматизация через сценарий: Ваш сценарий в
/etc/rc3.d/S80rclocal
выполняет команду изменения владельца файла устройства с помощью командыgchown
, внутри циклаfor
. Здесь выгода вашей стратегии заключается в автоматизации процесса, чтобы не нужно было вручную вмешиваться при каждом запуске системы.gchown -c mysuser {} \;
в сценарии гарантирует, что каждый файл, описывающий устройство аудиосистемы, изменит своего владельца наmyuser
, давая тем самым этому пользователю соответствующие права доступа.
-
Алгоритм модификации: Для того чтобы изменения применялись на постоянной основе без вмешательства пользователя, следует:
- Рассмотреть возможность добавления
myuser
в ту группу, которая обладает правами доступа к нужным устройствам, или создать отдельную группу владельцев устройств. - Изменить политику доступов через
chmod
, если необходимо только расширение прав для групп. Например,chmod 664 /devices/pseudo/oss_sadasupport@0:sound,audio
.
- Рассмотреть возможность добавления
-
Установка и отладка: Убедитесь, что скрипт имеет права на выполнение и находится в правильном порядке запуска, чтобы применяться в нужный момент цикла загрузки системы:
- Проверьте порядок запуска через
ls /etc/rc3.d/
и при необходимости измените последовательность.
- Проверьте порядок запуска через
-
Тестирование: После изменения и автоматизации, перезагрузите систему и попытайтесь воспроизвести аудиофайл без входа в графическую оболочку, что подтвердит правильность установленных разрешений.
Диагностика
Если несмотря на вводимые вами изменения ошибка всё ещё воспроизводится, рекомендуется проверить логи системы для диагностики ошибок загрузки скрипта или некорректной работы команд. Логами могут быть системные файлы, такие как /var/adm/messages
.
Задокументируйте изменения
После успешной настройки рекомендую задокументировать вносимые изменения и поддерживать их актуальный журнал. Это поможет в будущем при обновлениях системы или смене конфигурации оборудования.
Таким образом, следуя вышеуказанным шагам и учитывая специфику работы с аудиоустройствами в Solaris, вы обеспечите стабильную и постоянную возможность воспроизведения аудио для пользователей даже при работе вне графической оболочки.