특정 그룹 권한으로 애플리케이션을 실행하는 방법은 무엇입니까?

특정 그룹 권한으로 애플리케이션을 실행하는 방법은 무엇입니까?

내 컴퓨터가 통신할 수 있는 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 프로그래밍 래퍼를 작성하는 것을 고려할 수 있습니다.repetierHostrepetierHost.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

이것은 매우 잘 작동합니다.

관련 정보