
내 PC가 다음을 통해 통신할 수 있는 3D 프린터가 있습니다 /dev/ttyACM0
.
crw-rw---- 1 root uucp 166, 0 16 nov 14:58 ttyACM0
3D 인쇄 애플리케이션이 repetierHost
작동하려면 이 장치에 대한 읽기/쓰기 액세스 권한이 필요합니다. 아무 준비 없이 '순진하게' 애플리케이션을 시작하면 애플리케이션이 작동하지 않습니다.
응용 프로그램을 루트로 실행하면 작동합니다.
(보조) group 을 사용하여 일반 사용자로 애플리케이션을 실행해도 uucp
여전히 작동하지 않습니다.
/dev/ttyACM0
권한 플래그를 지정 rw-rw-rw-
하고 일반 사용자로 실행하면 작동합니다.
(왜) 그룹을 통한 허락이 uucp
신청에 전달되지 않나요?
단순히 파일 권한을 부여하는 것에 반대하지는 않지만 rw-rw-rw-
장치 연결이 끊어졌다가 다시 연결되면 재설정됩니다. 그룹 을 통해 이 작업을 수행할 수 없는 경우 uucp
권한 플래그를 지속적으로 변경하려면 어떻게 해야 합니까?
답변1
repetierHost
응용 프로그램 그룹을 설정 uucp
한 다음 SGID 비트를 설정합니다(스크립트가 아닌 실제 바이너리인 경우).
chgrp uucp repetierHost
chmod g+s repetierHost
repetierHost가 스크립트인 경우 이를 이동하여 호출하는 repetierHost.sh
작은 C 프로그래밍 래퍼를 작성할 수 있습니다.repetierHost
repetierHost.sh
예:
#include <stdlib.h>
int
main(int argc, char *argv[])
{
system("/path/to/repetierHost.sh");
}
답변2
나는 찾았다sg
내가 필요로 했던 바로 그 명령인 것 같습니다.
sg- 다른 그룹 ID로 명령을 실행합니다.
그래서 다음과 같이 최소한의 래퍼를 작성합니다.
#!/bin/bash
sg uucp /usr/bin/repetierHost.sh
이것은 완벽하게 작동합니다.