IRQ/루트 프로세스 우선순위를 변경할 수 있는 사용자 권한을 부여합니다.

IRQ/루트 프로세스 우선순위를 변경할 수 있는 사용자 권한을 부여합니다.

Linux에서는 루트가 소유한 프로세스의 우선순위를 사용자가 변경하도록 허용할 수 있습니까? 더 구체적으로 IRQ 프로세스는 무엇입니까?

임베디드 실시간 애플리케이션의 경우 더 나은 결과를 얻을 수 있도록 GPIO IRQ의 우선순위를 높이고 싶습니다. 그러나 이들은 루트가 소유합니다. 루트 권한을 사용하지 않고도 루트 프로세스의 우선순위를 높일 수 있다면 좋을 것 같습니다.

답변1

내가 하고 싶은 일은 나를 위해 이 작업을 수행하는 특정 도구를 작성하는 것입니다.

int main(int argc, char * argv[])
{
    setuid(0);
    system("renice <params>");
}

에서 컴파일하고 설치했습니다 /usr/bin.

소유자가 루트로 설정되지 않은 경우:

chown root /usr/bin/my-renice

그런 다음 다음을 사용하여 권한을 변경했습니다.

chmod 4755 /usr/bin/my-renice

첫 번째 비트는 누가 호출하든 상관없이 4소유자의 권한(위에서 설정한 대로)으로 실행하도록 바이너리에 지시합니다 . 자세한 내용은 을 root참조하세요 man setuid.

컴퓨터에 액세스할 수 있는 사용자가 renice를 실행해서는 안 된다면 이것이 100% 안전하지 않다는 점에 유의하십시오.

특히:system()호출 에 명령줄 인수를 전달하지 마세요 .

system(argv[1]);   // <-- definitely a total security breach!

저는 이 솔루션이 소수의 프로세스와 소수의 신뢰할 수 있는 사용자만 있는 컴퓨터에서 가장 쉽다고 생각합니다.

관련 정보