Есть ли у вашей учетной записи пользователя eric
разрешение на использование /dev/ttyUSB0
? Чтобы узнать это, запустите ls -l /dev/ttyUSB0
. Вывод может выглядеть следующим образом:
$ ls -l /dev/ttyUSB0
crw-rw----+ 1 root dialout 166, 0 Jul 9 08:55 /dev/ttyUSB0
Символы в левом -самом столбце представляют собой информацию о типе файла и разрешениях:
c
, указывающий на устройство на основе символа -. +
, указывающий, что на этом узле устройства существует список управления доступом (ACL для краткости ), определяющий дополнительные правила доступа. Это важно, потому что это меняет интерпретацию других разрешений. rw-
, указывающую разрешения для владельца файла, то есть root
, как указано в третьем столбце. rw-
снова )классически указывает разрешения, применимые к группе пользователей, которым назначен файл. В данном случае это группа dialout
, как указано в четвертом столбце. Но поскольку у этого файла есть ACL, смысл другой:при действующем ACL, он просто указывает наивысшие разрешения, предоставленные конкретному пользователю или группе, которые не являются владельцем файла -, но вы не можете знать какой это пользователь или группа. ---
)указывает права доступа для всех остальных -если все тире, это означает, что доступ запрещен. +
, указывающий, что на этом узле устройства существует список управления доступом (ACL для краткости ), определяющий дополнительные правила доступа.Наконец, список ACL можно просмотреть с помощью getfacl /dev/ttyUSB0
. Вывод может выглядеть примерно так:
$ getfacl /dev/ttyUSB0
getfacl: Removing leading '/' from absolute path names
# file: dev/ttyUSB0
# owner: root
# group: dialout
user::rw-
user:sddm:rw-
group::rw-
mask::rw-
other::---
По сути, он повторяет традиционные разрешения для файлов ACL, отличные от -, и позволяет указать дополнительные разрешения для любого количества пользователей и групп. В этом случае имеется дополнительная строка user:sddm:rw-
, указывающая доступ как для чтения, так и для записи для пользователя sddm
, который является учетной записью пользователя, под которым в настоящее время работает процесс диспетчера входа в систему GUI sddm
. А также есть строка group::rw-
, которая подтверждает, что классическая группа dialout
имеет полный доступ для чтения/записи к этому файлу -. Эта информация была скрыта от классического вывода ls -l
, когда к этому узлу устройства был применен ACL.
Тот факт, что ACL предоставляет разрешения для sddm
, указывает на то, что эта ОС, вероятно, настроена на автоматическое предоставление доступа к локальным последовательным портам, если вы входите локально с помощью диалогового окна входа в систему с графическим интерфейсом. ACL будет автоматически изменен, чтобы соответствовать вошедшему в систему пользователю -, и вернуться к sddm
, когда пользователь выйдет из системы. Если такого ACL нет, то ваш дистрибутив может не использовать такой автоматический механизм разрешений.
Имя группы dialout
является историческим, поскольку последовательные порты использовались с модемами. Но если устройство назначено в специальную группу, подобную этой, это указывает на то, что дистрибутив, вероятно, настроен для управления доступом к последовательным портам с помощью группы dialout
. Итак, в этом примере вы можете добавить свою учетную запись пользователя в группу dialout
. Для этого вам понадобится доступ root/superuser:
# usermod -a -G dialout eric
Новое членство в группе вступает в силу при следующем входе в систему, поэтому вам нужно будет выйти из системы и вернуться снова.
Поскольку файловая система /dev
является виртуальной файловой системой на основе ОЗУ -, все узлы устройств создаются с нуля при каждой загрузке системы. Из-за этого попытка изменить разрешения реальных узлов устройства будет бесполезной; ваши изменения будут забыты, когда вы закроете систему. Вместо,разрешения по умолчанию для устройств используют определенные группы с явной целью разрешить администраторам использовать членство в группах для предоставления определенным пользователям доступа к определенным типам устройств :использование этих групп по назначению, вероятно, является самым простым способом решить вашу проблему.