socat изо всех сил пытается создать последовательные порты

В целях тестирования я хочу использовать socat для создания виртуальных последовательных портов для использования в моей программе Python.

У меня ограниченный успех, но я снова и снова борюсь со многими вариантами в сокат. Я использую эту команду в Ubuntu Linux:

sudo socat -d -d  pty,b9600,raw,echo=0,link=/dev/ttyS90    pty,b9600,raw,echo=0,link=/dev/ttyS91 

Как и должно быть, он создает виртуальные порты, такие как /dev/pts/2 и 4, и связывает их с /dev/ttyS90 и *91. Без sudo не работает (не работает отвязка для портов *90, *91, хотя обычный пользователь находится в группе дозвона).

введите здесь описание изображения

Но, как вы видите, разрешения «lrwxrwxrwx» выглядят как чтение/запись для всех. Однако это НЕ соответствует действительности: я НЕ МОГУ использовать эти устройства, если я не являюсь пользователем root. Файловый менеджер (=Nemo) дает такой результат:

введите здесь описание изображения

Разрешения существенно отличаются. Хм?

После выдачи «sudo chmod 777 /dev/ttyS90» (и то же самое для *91) в выводе терминала ничего не меняется, потому что он уже, но неправильно, показывает разрешения 777, но вывод Nemo меняется на

введите здесь описание изображения

И теперь я могу использовать порты как обычный пользователь! Как идет? Я делаю что-то неправильно?

И еще одна проблема с socat: приведенная выше команда socat дает 8-битное соединение без контроля четности, но мне действительно нужно 7-битное соединение с контролем четности. Все мои попытки реализовать это путем манипулирования некоторыми из множества опций не увенчались успехом. Я потерян; любое понимание?


person ullix    schedule 07.09.2019    source источник


Ответы (1)


Попробуйте изменить разрешение на /dev/pts/2 и /dev/pts/4 вместо ссылки

person Apeiron    schedule 06.11.2019
comment
к сожалению это не помогает. Прежде чем я выполню команду socat, pts/2 и 4 не существуют. Так что, очевидно, я ничего не могу изменить в них. И я не могу их создать, не используя sudo. После создания ttyS9X перечисляются, как показано выше. у 2 и 4 есть пользователь root и группа tty (и я нахожусь в tty). Но мне интересно, может ли более серьезной проблемой быть неправильный список, сделанный командой ls? Это так просто - разве это не должно получиться правильно? - person ullix; 08.11.2019
comment
Исправьте, что pts не существует до socat, я изменил разрешения позже. при создании я думаю, что они выглядят примерно так: crw--w---- 1 root tty 136, 0 Nov 6 15:12 /dev/pts/0 Мой пользователь является частью группы tty, поэтому я запустил sudo chmod g+r /dev/pts/?, чтобы добавить чтение в группу. Именно тогда я смог прочитать их без sudo. О, я не думаю, что есть ошибка с ls, потому что это разрешения программной ссылки, а не pts. - person Apeiron; 08.11.2019
comment
Команда ls дает lrwxrwxrwx для /dev/ttyS90 и crw—w---- для /dev/pts/, с которым связан S90. Мой файловый менеджер (Nemo) дает xrw-w---- для обоих. Последнее имеет смысл, потому что команда ls делает вид, что видит все разрешения для всех, что неверно! Предложение по изменению прав доступа к очкам может пригодиться, спасибо. - person ullix; 10.11.2019