У меня есть система Ubuntu 11.10 с 2 пользователями:
Первый был создан во время установки
Второй вместо этого был создан после. Он принадлежит к группе sudoers.
Теперь проблема в том, что когда второй пытается использовать устройство ttyUSB0 возвращается следующая ошибка:
"Could not open serial port /dev/ttyUSB0"
Я смог исправить это, используя:
sudo chown :second_user /dev/ttyUSB0
Однако, когда я отключаю устройство и снова подключаю его, проблема возвращается.
Есть ли способ разрешить разным пользователям доступ к устройствам?Я полагаю, мне нужно добавить пользователя в определенную группу. В настоящее время владельцем является root и группа - это dialout. Однако я не уверен насчет группы и не знаю, как добавить пользователя.
Вы могли бы использовать UDEV. Это система, которая срабатывает каждый раз, когда вы подключаете или отключаете устройство (среди прочего). С его помощью вы создаете сценарии различных событий, включая настройку разрешений.
Бежать sudoedit /etc/udev/rules.d/50-ttyusb.rules и засунь это туда:
Сохраните, выйдите и повторно подключите, и вы должны быть готовы к работе. Установка разрешения на 666 позволяет любому пользователю выполнять запись на устройство.
Я основываю это на эта страница который был сделан несколько лет назад, но что-то вроде этого должно сработать, если Джереми решение не.
Фантастика - решение UDEV, приведенное здесь, было билетом для меня.
Я установил программу Icom CS-F3020_F5010_F5020 через Wine, создал ссылку для Com-порта следующим образом:
ln -s /dev/ttyUSB0 ~/.wine/dosdevices/com1 but nothing.
Затем я понял, что мне нужно изменить разрешения на / dev / ttyUSB0, чтобы я мог получить к нему доступ. Это отлично работает до тех пор, пока вы не отключите / не подключите USB, затем вам нужно повторно изменить разрешения.
Я попытался добавить своего пользователя в группу удаленного доступа, но по какой-то причине это не решило проблему.
Использование UDEV решает последнюю часть головоломки. Теперь я могу запрограммировать свое радио Icom с помощью Linux, подключать и отключать USB / последовательное устройство без лишней суеты. У-у-у. Спасибо.
Правила udev работают, но, как написано, у них есть очень неприятный побочный эффект, заключающийся в том, что все ttyUSB* устройства, доступные для всех. Это нехорошо, потому что это может представлять угрозу безопасности в зависимости от того, что еще находится в системе.
Вместо этого используйте более избирательное правило udev. Например, у меня есть USB-устройство, которое управляет набором переключателей. Из dmesg, когда он подключен, я вижу идентификатор производителя и код продукта (плюс, даже, в данном случае, серийный номер устройства). Я могу добавить:
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001"
к приведенным выше строкам ядра, и правило будет применяться только к этому устройству. Даже лучше, чем назначать на MODE переменная сама по себе тоже задает группу:
GROUP="whatever", MODE="0660"
тогда только люди в группе 'whatever' получит доступ на запись.
Вы также можете использовать chmod (Я сделал это на Raspberry linux).
В моем случае, sudo adduser pi dialout не сработало ("Пользователь "pi" уже является участником "dialout"", но некорневое приложение по-прежнему не имело доступа к serial).
Смотрите его связь (/dev/serial0 -> /dev/ttyS0):
pi@raspberrypi:~ $ ls -al /dev/serial*lrwxrwxrwx 1 root root 5 Dec 30 18:03 /dev/serial0 -> ttyS0lrwxrwxrwx 1 root root 7 Dec 30 18:03 /dev/serial1 -> ttyAMA0pi@raspberrypi:~ $ ls -al /dev/ttyS*crw--w---- 1 root tty 4, 64 Jan 7 16:07 /dev/ttyS0
И обновите разрешение на чтение / запись для всех пользователей:
pi@raspberrypi:~ $ sudo chmod ugo+rw /dev/ttyS0
Теперь пользовательский код (например, 'пи' пользователь dotnet core application) может получить доступ /dev/serial0.