직렬 포트에 대한 권한 변경


54

우분투에서 Arduino IDE를 사용하고 있으며 직렬 포트에 문제가 있습니다. 과거에는 효과가 있었지만, 불필요한 이유로 인해 일부 파일의 소유권을 루트 소유권에서 사용자 소유권으로 변경해야 할 필요성을 느꼈습니다.

이로 인해 IDE가 올바르게 작동했지만 올바른 직렬 포트를 사용할 수 없었습니다. dev 폴더에서 필요한 포트는 권한 166으로 표시됩니다. 더 이상 나를 도와 줄 영역에없는 사람이 권한을 666으로 바꾸어 영광스럽게 작동했습니다.

그러나 컴퓨터를 다시 시작하자마자 되돌아 가서 지금 명령을 사용하려고하면 다음과 같이 돌아갑니다.

sudo chmod 666 ttyACM0

아무 반응이 없습니다. 오류 메시지는 없지만 권한 변경도 없습니다.

변경하는 방법과 영구적으로 변경하는 방법

이 질문이 지나치게 단순하거나 불분명 한 경우 죄송합니다. 우분투 멍청한 사람이며 피드백을 원망하지 않습니다!


1
sudo chmod 666 / dev / ttyACM0 이것은 14.04 beta2 라이브 환경에서 작동 한이 페이지의 유일한 제안이었습니다. 감사!

답변:


76

권한을 가진 문제 /dev/ttyACM0dialout그룹에 자신을 추가하여 영구적으로 해결할 수 있습니다 . 그룹 변경이 인식되기 전에 로그 아웃 한 후 다시 로그인해야합니다.

당신은 이것을 할 수 있습니다 sudo usermod -a -G dialout $USER


Arduino IDE가 "Dailout 그룹"에 자신을 추가하기 위해 루트에 제공하도록 요청할 때 이것에 대해 배웠습니다. 이제 나는 그것이 무엇인지 안다.
Ufoguy

방금 새 TV와 함께 사용할 Pulse-Eight USB-CEC 어댑터를 구입했는데 우분투에서 Kodi와 작동하지 않는 것으로 나타났습니다. 충돌 로그를 확인하고 "오류 : CecLogMessage-직렬 포트 '/ dev / ttyACM0'을 여는 동안 오류 발생 : 권한이 거부되었습니다"라는 오류 메시지를 인터넷 검색 한 결과이 페이지가 나타납니다. 덕분에 (아래의 돈 커크비도 마찬가지입니다), 나는 즉시 문제를 해결할 수있었습니다.
Rich.T.

또한 "user247020"의 대답은 또 다른 해결책을 제공했습니다. GUI 도구 "사용자 및 그룹"을 열고 자신을 "관리자"로 만드십시오. 이렇게하면 다른 사람과 함께 "전화 걸기"그룹 (예 : "사용 모뎀")에 추가됩니다.
Rich.T.

usermod -a -G dialout pi는 sudo chgrp dialout / dev / ttyS0 후에 정상적으로 작동하지만 제대로 작동하지만 재부팅하면 모든 구성이 손실됩니다. 저는 라즈베리 파이 3에 있습니다
J261

시작 스크립트에 다시 실행해야하는 명령을 추가하십시오. bash 또는 / etc / profile 또는 init.
Rinzwind

20

Rinzwind의 제안받아 들일 수 없었습니다 . 사용자 계정이 이미 있다고 불평했기 때문입니다. 대신이 명령을 사용 하여 Ubuntu Help Wiki 에 설명 된대로 기존 사용자 ( terrik)를 기존 그룹 ( dialout) 에 추가했습니다 .

sudo adduser terrik dialout

Rinzwind가 말했듯이 직렬 포트가 사용자를 허용하기 전에 로그 아웃하고 로그인해야하지만 현재 그룹을 나열하는데도이 명령이 유용합니다.

groups terrik

10

Terrik의 답변을 얻을 수 없었지만의 경로를 약간 조정하면 가능합니다 ttyACM0.

sudo chmod 666 /dev/ttyACM0

코멘트로 게시하고 싶지만 아직 권한이 없습니다 ...


1
Arduino를 연결 해제했다가 다시 연결하면 권한이 재설정되는 것 같습니다.
user1063287

작동하지 않습니다. :(
Freddy

잘 작동합니다. repplugging에 다시 udev 규칙을 다시 허용해야합니다
pylover

시도했지만 sudo chmod 666 /dev/ttyACM0다시 시작할 때 작동하지 않습니다. 누구든지 해결책이 있습니까?
user1063287

흠 peepz이 작동합니다 .... 시작 스크립트에 명령을 추가하십시오. (/ Dev는 부팅 할 때 다시 생성되므로 부팅 할 때
마다이

10

또 다른 가능성은 /etc/udev/rules.d/디렉토리에 규칙 파일을 만드는 것 입니다. 비슷한 문제가 있었고 50-myusb.rules위의 디렉토리 에이 내용으로 파일을 만들었습니다 .

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

이렇게하면 ttyACM 소켓에 연결된 모든 장치에 읽기 / 쓰기 권한이 부여됩니다. 읽기 / 쓰기 권한을 얻기 위해 특정 장치 만 필요한 경우 idVendor및 을 확인해야합니다 idProduct. lsusb장치를 연결하지 않고 한 번 연결하면 명령을 두 번 실행하여 명령을 찾은 다음 출력에서 ​​추가 라인을 관찰 할 수 있습니다. 거기서 당신은 같은 것을 보게 될 것 Bus 003 Device 005: ID ffff:0005입니다. 이 경우 idVendor = ffffidProduct = 0005. 당신은 다를 것입니다. rules 파일을 수정하여 다음보다 :

ACTION=="add", KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="ffff", ATTRS{idProduct}=="0005", MODE="0666"

이제이 장치 만 권한을 얻습니다. udev 규칙 작성에 대해 자세히 알려면 이 내용읽으십시오 .


2

시스템 / 사용자 및 그룹으로 이동하여 TTY 그룹의 사용자 이름 상자를 선택하십시오.


[Errno 13] Permission denied: '/dev/ttyACM0'. tty그룹 뿐만 아니라 사용자도 dialout그룹에 있습니다. 리눅스 민트 17.1.
user1063287

1
@ user1063287 시험해보세요sudo chmod a+rw /dev/ttyACM0
Vladimir S.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.