GUI에서 루트 서비스를 시작하는 방법

GUI에서 루트 서비스를 시작하는 방법

그래서 Linux 환경에서 GUI 애플리케이션을 루트로 실행하는 것은 나쁜 생각이라는 것을 알고 있으며, 이러한 서비스는 별도의 프로세스(GUI 인터페이스 프로세스와 백그라운드, 루트 권한을 가진 데몬 프로세스)를 통해 실행하는 것이 더 낫다는 것이 일반적인 의견인 것 같습니다. 그것이 실제 작업을 수행합니다.

나는프로그램기술에 익숙하지 않은 Linux 환경의 데스크톱 사용자를 대상으로 합니다. 나는 그들에게 명령줄을 열고 명령을 실행하여 내 프로그램을 시작하도록 요구하고 싶지 않습니다. 메뉴 항목(또는 .desktop 파일)을 클릭하고 프로그램을 실행할 수 있어야 합니다. 따라서 GUI 프로그램은 루트 프로세스를 시작해야 하며 그 반대의 경우도 마찬가지입니다. 물론 관리자 비밀번호를 입력해야 하지만 배포에 구애받지 않는 안전한 방식으로 이를 허용하는 방법을 잘 모르겠습니다.

백업 프로그램이므로 원본 드라이브의 파티션을 복사하려면 대상 드라이브를 파티션해야 하며, 이는 루트 권한이 필요합니다. 이 단계를 완료한 후에는 파티션을 마운트 및 마운트 해제하여 원본 드라이브에서 대상 드라이브로 파일을 복사하면 됩니다. 프로그램은 패키지 관리자를 통해 설치되며, 아마도 최소한 초기 설치 시 관리 권한이 있을 것입니다.

GUI 프로그램이 루트 권한이 있는 데몬을 안전하게 실행하도록 허용하는 방법은 무엇입니까?

참고: 중요한 경우 제가 사용하는 언어는 Python 3입니다.

답변1

간단합니다. 프로그램을 완전히 두 부분으로 나누면 됩니다.

첫 번째는 서버/서비스와 해당 데몬입니다. 이는 독립적으로 설치 가능해야 하며 호스트가 사용하는 모든 프로세스 관리자(systemd, upstart, initd 등)에 통합되어야 합니다.

그런 다음 GUI 프로그램이 있습니다. 로컬 컴퓨터(루프백 사용) 또는 데몬을 실행하는 원격 호스트의 네트워크를 통해 연결하도록 설정합니다.

이에 대한 예를 보려면 mysql 서버와 mysql-workbench를 확인하세요. 두 개의 완전히 독립적인 애플리케이션, 즉 루트가 필요하지 않은 GUI와 루트가 필요할 수 있는 서비스입니다.

답변2

루트 권한으로 작업을 시작해야 하는 경우 "sudo"를 사용할 수 있습니다. GUI 프로세스를 실행하는 특정 사용자 ID가 이러한 매개변수를 사용하여 특정 루트 명령을 실행할 수 있도록 구성할 수 있습니다.

관련 정보