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