루트없이 직렬 포트에 읽기 / 쓰기?
On 2월 12, 2021 by adminFedora14의 직렬 포트에서 읽고 쓰기위한 응용 프로그램을 작성하고 있으며 루트로 실행하면 잘 작동합니다. 일반 사용자로 실행합니다. 장치 (/ dev / ttySx)에 액세스하는 데 필요한 권한을 얻을 수 없습니다. 지금은 Eclipse를 사용하여 실제로 디버깅 할 수 없기 때문에 일종의 엉터리입니다.
저는 이클립스를 sudo로 실행하려고 시도했지만 작업 공간이 손상되고 프로젝트를 열 수도 없습니다. 따라서 일반 사용자가 액세스 할 수 있도록 / dev / ttySx에 쓰기위한 액세스 요구 사항을 낮출 수 있는지 알고 싶습니다. 이것이 가능합니까?
답변
직렬 포트에 대한 액세스 권한은 장치 파일의 권한 (예 : /dev/ttyS0
). 따라서 당신이해야 할 일은 당신이 장치를 소유 할 수 있도록 준비하거나 (더 나은) 당신 자신을 장치를 소유 한 그룹에 포함 시키거나, (Fedora가 지원한다면, 제 생각에는) 장치를 준비하는 것입니다. 콘솔에 로그인 한 사용자에게 속합니다.
예를 들어 내 시스템 (Fedora가 아님)에서 /dev/ttyS0
는 사용자 root
및 그룹 dialout
. 직렬 장치에 액세스 할 수 있도록 자신을 dialout
그룹 :
usermod -a -G dialout MY_USER_NAME
댓글
답변
많은 배포가 그룹 멤버십을 사용하여 직렬 포트에 액세스 할 수 있습니다. 그래도 Fedora에 대한 자세한 내용은 알 수 없습니다.
Answer
당신은 sudoers 파일에 자신을 추가 할 수 있습니다. 암호없이 실행할 수있는 명령 별칭으로 일련의 명령을 지정할 수 있습니다. sudoers 파일에 대한 훌륭한 자습서는 Ubuntu 문서 에서 찾을 수 있습니다.
그런 다음 eclipse를 정상적으로 실행할 수 있으며 “루트 권한없이 특정 명령을 실행할 수 있습니다.
Answer
이것은 오래된 질문이지만 문제를 해결하기 위해 추가 단계가 있었기 때문에 기여할 수 있다고 생각합니다. Debian 10을 사용하여 포트 / dev / ttyACM0에서 micro : bit에 연결하려고 할 때이 질문에 답했습니다.
ls -al /dev/ttyACM0
표시 :
crw-rw-rw- 1 root dialout 166, 0 Jan 5 16:13 /dev/ttyACM0
이것은 루트가 소유 한 sudo를 사용하여 포트에 액세스 할 수있는 이유를 나타냅니다. 또한 root가 아닌 사용자를 dialout 그룹에 추가하면 root가 아니어도 액세스가 허용되는 이유도 보여줍니다. 다음을 사용하여 / etc / group의 다이얼 아웃 그룹에 사용자 계정을 추가했습니다.
sudo usermod -a -G dialout <user>
아직 마이크로 비트에 연결할 수 없습니다. 루트가 아닌 직렬 포트 모니터를 사용합니다.
micro : bit는 / media 아래에 마운트됩니다.
ls -al /media/<user> drwxr-x---+ 2 root root 4096 Jan 5 12:44 <user>
이것은 디렉토리가 마이크로 비트가 마운트 된 것은 루트 소유입니다. 이 디렉토리의 소유자와 그룹을 다음으로 변경해야합니다.
“” “sudo chowner / media / sudo chgrp / media /” “”
이제 마이크로에 연결할 수 있습니다. : 비트는 sudo를 사용하지 않고 직렬 포트 모니터를 사용합니다.
답변
이 문제는 과거에도 다이얼 아웃 그룹에 사용자를 추가하려면 해당 사용자에게 / dev에 액세스 할 수있는 권한도 부여해야합니다. 간단히 su -> 루트 비밀번호 입력-> chmod -R 777 / dev -R, 재귀 모드를 의미합니다. 해당 폴더 내의 모든 항목은 동일한 권한을 갖습니다.
문제는이 작업을 재부팅 할 때마다 수행해야한다는 것입니다. 컴퓨터를 사용하거나 기기를 연결하고 뽑으세요 !!!
댓글
-
chmod -R 777 /dev
는 아주 나쁜 생각입니다. - 예, 이에 대한 다른 제안이 있으면 좋습니다.
- 다음과 같이 로그 아웃했다가 다시 로그인해야하는지 궁금합니다. 수락 된 답변에 댓글 ? 이것은 종종 사람들을 괴롭 힙니다.
- 모든 사용자에게 / dev / 내부의 모든 것에 대한 무료 액세스 권한을 부여하는 것은 매우 안전하지 않습니다. 이 작업을 수행하지 마십시오 '.
sudo usermod -a -G dialout $USER
🙂