Я пишу службы systemd, которые запускаются с привилегиями суперпользователя и отказываются от привилегий для системной учетной записи (называемой mxdaemon). Для этих служб требуется доступ к физическому последовательному порту (/dev/ttyS0
) на ПК. Последовательный порт ls -l
:
Serial port: crw-rw---- 1 root dialout 4, 64 Jun 13 22:00 /dev/ttyS0
При запуске от имени пользователя root служба без проблем обменивается данными через последовательный порт. Когда служба настроена на лишение привилегий mxdaemon, я получаю сообщение об отказе в доступе при попытке доступа к /dev/ttyS0
.
mxdaemon является членом обеих групп dialout
и tty
:
mxdaemon : mxdaemon dialout tty
Даже после выхода из системы и/или перезагрузки ПК я все еще получаю отказ в разрешении для ЛЮБОГО пользователя, кроме root.
Многочасовые рыскания по интернету говорят о том, что все настроено правильно.
Любая помощь будет оценена по достоинству!
-Роб
@sawdust: Спасибо за ответ! Вот информация...
/etc/group
: dialout:x:20:mxdaemon,mxadmin
/etc/gshadow
: dialout:*::mxdaemon,mxadmin
Спасибо за подсказку @sawdust - вот что выдала команда...
ps -o user= -o group= -p 15150
mxdaemon root
Итак, пользователю mxdaemon
, но видно, что он входит в группу root
?
dialout
в файлах /etc/group и /etc/gshadow? - person sawdust   schedule 14.06.2018ps -A
, чтобы получить pid вашего демона. Затем получите отчет о его владельце и группе сps -o user= -o group= -p <pid>
- person sawdust   schedule 15.06.2018dialout
? - person sawdust   schedule 19.06.2018