나는 작은 리눅스 박스를 가지고 있다가능한휴대용 장치가 장치에 연결되면 장치와 시간을 동기화하도록 선택합니다. 내 프로그램은 항상 루트로 실행되며 저는 단지 date --set
명령을 사용합니다. 하지만 해당 프로그램을 권한이 낮은 사용자에게 옮기려고 합니다. 지금 사용하고 있으니 직접 날짜 대신 시간을 맞춰서 systemd
사용하면 될 것 같습니다 . timedatectl
나는 이것을 수행하는 방법을 스스로 증명했습니다. 하지만 루트가 아닌 곳에서 구동하는 방법을 모르겠습니다.
특정 sudo 항목을 사용할 수 있지만 내 프로그램이 sudo를 실행하지 않게 하고 싶습니다. 이것이 유일한 방법이라면 나는 무엇을 해야 할지 압니다. 이것이 유일한 방법이라면 질문에 대답하십시오 :)
내 사용자를 그룹의 구성원으로 만들면 그렇게 systemd-timesync
할 수 있기를 바랐지만 그룹이 있든 없든 다음 오류가 발생합니다.
> timedatectl set-time "2017-3-2 01:40:30"
Failed to set time: The name org.freedesktop.PolicyKit1 was not provided by any .service files
이것이 무엇을 의미하는지, 어떻게 고칠 수 있는지, 이 작업을 수행해야 하는지, 또는 이것이 가능한지조차 모르겠습니다.
답변1
나는 을 사용하겠습니다 sudo
. 귀하는 이 접근 방식을 꺼린다고 밝혔지만 사용자에게 단일 명령을 실행할 수 있는 루트 액세스 권한만 부여했습니다 timedatectl
.
이것~해야 한다이 문제는 PolicyKit을 사용하여 해결할 수도 있지만 실제로는 사용자가 루트로 단일 명령을 실행하도록 허용하는 것과 동일한 결과를 생성합니다. 따라서 위험은 비슷하며 문제 해결 방법을 이미 알고 있습니다 sudo
.