기본이 아닌 사용자가 직렬 장치 ttyUSB0을 사용하도록하려면 어떻게합니까?


34

2 명의 사용자가있는 Ubuntu 11.10 시스템이 있습니다.

  • 첫 번째는 설치 중 작성되었습니다
  • 두 번째는 대신에 만들어졌습니다. sudoers 그룹에 속합니다.

이제 문제는 두 번째 장치를 사용하려고 할 때 ttyUSB0다음 오류가 반환 된다는 것입니다 .

"Could not open serial port /dev/ttyUSB0"

다음을 사용하여 문제를 해결할 수있었습니다.

sudo chown :second_user /dev/ttyUSB0

그러나 장치를 분리했다가 다시 연결하면 문제가 다시 발생합니다.

다른 사용자가 장치에 액세스 할 수있는 방법이 있습니까? 특정 그룹에 사용자를 추가해야한다고 가정합니다. 현재 소유자는 root이고 그룹은 dialout입니다. 그러나 그룹에 대해 잘 모르고 사용자를 추가하는 방법을 모르겠습니다.

감사!

답변:


47

알다시피, /dev/ttyUSB0장치 그룹은 dialout입니다. 두 번째 사용자를 dialout그룹에 추가하기 만하면됩니다.

sudo adduser second_user dialout

second_user가 로그 아웃했다가 다시 로그인해야 적용됩니다.


고마워 제레미! 이것은 ssh 액세스에도 적용됩니까? ssh를 통해 PC에 액세스하면 동일한 이름을 가진 두 명의 사용자가 보입니다. 하나는 로컬 사용자이고 다른 하나는 ssh라고 가정합니다. ssh 사용자에게 소유권을 어떻게 부여 할 수 있습니까?
Maverik

1
그러면 second_user가 모든 로그인, ssh 또는 로컬에서 직렬 포트에 액세스 할 수 있습니다. 해당 사용자의 특정 로그인에 소유권을 할당 할 필요가 없습니다.
Jeremy Kerr

2
그래 네가 맞아. 액세스 vis ssh를 갖도록 로그 아웃 한 다음 다시 로그인해야했습니다.
Maverik

자동으로 로그인 한 사용자 세션의 경우 X Window System에 다시 로그인 할뿐만 아니라 컴퓨터를 재부팅해야합니다. 우분투 19.04에서 관찰.
tanius

12

쉬운 방법 :

sudoedit /etc/udev/rules.d/50-myusb.rules

이 텍스트를 저장하십시오 :

KERNEL=="ttyUSB[0-9]*",MODE="0666"
KERNEL=="ttyACM[0-9]*",MODE="0666"

장치를 분리했다가 다시 연결하면 모든 사용자가 읽고 쓸 수 있습니다!


ttyACM 소켓의 집에서 만든 장치에 대해 14.04에서 작동합니다. 감사. +1
비표준 모델

규칙을 다시로드하기 위해 다시 연결하기 전에이 작업을 수행 할 필요가 없습니까? sudo udevadm control --reload?
Alexis Paques

/ etc / udev를 저장하는 파일 시스템과 사용중인 udev 버전에 따라 실제로 다시로드해야 할 수도 있습니다. 그러나 내가 사용한 대부분의 컴퓨터에서 udev는 자동으로 알아내는 것 같습니다 (ototify 사용).
Orion Lawlor

그것은 실제로 어떻게해야하는지가 아닙니다. USB 직렬 장치는 전화 걸기 그룹 또는 이와 유사한 장치에 속해야하며 사용자를 추가해야합니다. 그러나 제안한 내용은 다른 유형의 USB 장치에 적합합니다.
Chris Stratton

7

UDEV를 사용할 수 있습니다. 장치를 꽂거나 뽑을 때마다 트리거하는 시스템입니다 (다른 것들 중에서). 이를 통해 권한 설정을 포함하여 발생하는 다양한 작업을 스크립팅합니다.

sudoedit /etc/udev/rules.d/50-ttyusb.rules이것을 실행 하고 거기에 붙입니다.

KERNEL=="ttyUSB[0-9]*",NAME="tts/USB%n",SYMLINK+="%k",GROUP="uucp",MODE="0666"

저장, 종료 및 다시 연결하면 작동해야합니다. 권한을 666으로 설정하면 누구나 장치에 쓸 수 있습니다.

나는 몇 년 전의이 페이지 를 기반으로하고 있지만 Jeremy의 솔루션 이 그렇지 않으면 이와 같은 것이 작동해야합니다 .


1
이것은 나를 위해 일했습니다. 즉, udev 규칙을 사용했지만 구문을 자신의 경우와 일치하도록 변경했습니다. linux.m2osw.com/sane-cannot-find-any-scanners-MODE = "0666"을 사용하면 GROUP이 필요하지 않습니다. 하나만 사용할 수 있습니다.
Alexis Wilke

5

환상적인-여기에 제공된 UDEV 솔루션은 저에게 딱 맞는 티켓이었습니다.

Wine을 통해 Icom의 CS-F3020_F5010_F5020 프로그램을 설치하고 다음과 같이 Com 포트에 대한 링크를 작성했습니다.

ln -s /dev/ttyUSB0 ~/.wine/dosdevices/com1 but nothing. 

그런 다음 액세스 할 수 있도록 / dev / ttyUSB0에 대한 권한을 변경해야한다는 것을 깨달았습니다. USB를 연결 해제했다가 다시 꽂을 때까지 권한을 변경해야합니다.

전화 걸기 그룹에 사용자를 추가하려고 시도했지만 어떤 이유로 문제가 해결되지 않았습니다.

UDEV를 사용하면 퍼즐의 마지막 조각이 해결됩니다. 이제 Linux를 사용하여 Icom 라디오를 프로그래밍하고 더 이상 번거 로움없이 USB / 직렬 장치를 연결 및 분리 할 수 ​​있습니다. 우후 감사.


3

udev 규칙은 작동하지만 서면 ttyUSB*으로 모든 사람이 모든 장치에 액세스 할 수있게하는 부작용이 있습니다. 이는 시스템에 무엇이 있는지에 따라 보안 위험이있을 수 있으므로 좋지 않습니다.

대신 더 선택적 udev 규칙을 사용하십시오. 예를 들어 스위치 세트를 작동시키는 USB 장치가 있습니다. dmesg가 연결되면 제조업체의 ID와 제품 코드 (이 경우 장치의 일련 번호)를 볼 수 있습니다. 추가 할 수 있습니다 :

ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001"

위의 커널 라인에 규칙이 해당 장치에만 적용됩니다. MODE변수에만 할당하는 것보다 그룹을 설정 하는 것이 더 좋습니다 .

GROUP="whatever", MODE="0660"

' whatever' 그룹의 사람들 만 쓰기 권한을 갖습니다.

존 볼러

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.