Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Странная ситуация с доступом в каталог /sys  (Прочитано 658 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Virkom

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Здравствуйте.
Пишу свое приложение, которое занимается захватом звука с звуковых карт. Приходится делать привязку звуковой карты к PCI-шине, так как их три совершенно одинаковых и после загрузки системы карты тусуются как хотят. Мне же нужен железный порядок.
Сначала делал по этому туториалу: http://alsa.opensrc.org/Udev#Writing_udev_rules и все было хорошо. Создал правила udev и оно работает.
Потом я подумал, зачем мне udev и на каждой клиентской машине все настраивать вручную, если я то же самое могу сделать из своей программы. Суть решения - найти каталог звуковой карточки в /sys/devices/..../card[0-9]/. Создать в этом каталоге файл "id" и прописать в него всего одну строчку (сам id карты). А потом просто обращаться к звуковой карте используя этот id. То же самое делает и udev.

Все бы хорошо, но ни программа, ни я не имеем прав на изменение/удаление.
Владелец файла - root:root. Права меняю как хочу. Поставил 755. Но при попытке отредактировать получаю "Ошибка записи. Файл существует". При попытке удалить:
Цитировать
sudo rm /sys/devices/pci0000:00/0000:00:1c.1/0000:04:00.0/0000:05:04.0/sound/card0/id
rm: невозможно удалить '/sys/devices/pci0000:00/0000:00:1c.1/0000:04:00.0/0000:05:04.0/sound/card0/id': Операция не позволена

Но я же вроде от рута пытаюсь удалить. И права 755. Почему?
Причем один раз (первый после загрузки компа) удалось записать в этот файл. Все последующие попытки провалились. Где искать проблему?
Помогите, пожалуйста, а то уже мозг кипит.

P.S.: Да, lsof показывает, что файл не занят.
« Последнее редактирование: 09 Августа 2017, 11:09:29 от Virkom »

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6733
  • 20% Cooler
    • Просмотр профиля
Re: Странная ситуация с доступом в каталог /sys
« Ответ #1 : 09 Августа 2017, 11:54:14 »
Это не обычные файлы. Нельзя напрямую изменять информацию о подключенных устройствах. И права зря изменяли - есть риск сделать систему неработоспособной.
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Virkom

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Странная ситуация с доступом в каталог /sys
« Ответ #2 : 09 Августа 2017, 11:59:40 »
Да, но в том же туториале от ALSA:

Цитировать
In the sysfs directory of this device is a file "id" that can be used to change the ALSA sound card ID:

# echo -n UA1A_B > /sys/devices/pci0000:00/0000:00:13.2/usb2/2-6/2-6.3/2-6.3:1.0/sound/card4/id

И все отлично работало. Я не знаю, почему перестало изменять.
« Последнее редактирование: 09 Августа 2017, 12:10:11 от Virkom »

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6733
  • 20% Cooler
    • Просмотр профиля
Re: Странная ситуация с доступом в каталог /sys
« Ответ #3 : 09 Августа 2017, 12:04:39 »
stat /sys/devices/pci0000:00/0000:00:13.2/usb2/2-6/2-6.3/2-6.3:1.0/sound/card4/id
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Virkom

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Странная ситуация с доступом в каталог /sys
« Ответ #4 : 09 Августа 2017, 12:09:52 »
stat /sys/devices/pci0000:00/0000:00:1c.1/0000:04:00.0/0000:05:04.0/sound/card0/id

  Файл: '/sys/devices/pci0000:00/0000:00:1c.1/0000:04:00.0/0000:05:04.0/sound/card0/id'
  Размер: 4096      Блоков: 0          Блок В/В: 4096   обычный файл
Устройство: 12h/18d Inode: 26549       Ссылки: 1
Доступ: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Доступ: 2017-08-03 10:10:59.835696746 +0300
Модифицирован: 2017-08-09 11:43:30.913894609 +0300
Изменён: 2017-08-09 11:43:30.913894609 +0300
 Создан: -


 

Страница сгенерирована за 0.045 секунд. Запросов: 25.