clock_settime을 사용하여 루트 액세스 없이 시간을 설정하세요.

clock_settime을 사용하여 루트 액세스 없이 시간을 설정하세요.

GPS 수신기의 시간과 시간을 동기화하는 C 프로그램을 작성했습니다. 컴퓨터에서 Ubuntu 16.04 LTS를 실행 중입니다. 프로그램은 clock_settime(CLOCK_REALTIME, ×pec)을 사용하여 시간을 설정합니다. 프로그램은 bash 스크립트에서 실행되는데 데스크톱 파일을 사용하여 스크립트를 시작하기 때문에 sudo를 사용할 수 없습니다. 누구든지 아이디어가 있나요?

참고: 이 스크립트는 여러 프로그램을 실행하고 있으며 루트로 실행하고 싶지 않습니다.

답변1

역량이 해결책이 될 수 있습니다.

프로그램을 실행하기 전에 아래와 같이 프로그램에 CAP_SYS_TIME 기능을 추가할 수 있습니다.

sudo setcap CAP_SYS_TIME+ep  /path/to/program

도커의 예

sys@2a2618c145ed:~$ ./a_pr.out
clock_gettime : 1534915500.689625314
clock_gettime : 1534916100.690310388
clock_gettime : 1534915500.690651299
sys@2a2618c145ed:~$ ./test.run
clock_gettime : 1534915504.139181778
Error : clock_settime -1
clock_gettime : 1534915504.139337010
Error : clock_settime -1
clock_gettime : 1534915504.139341290
sys@2a2618c145ed:~$ filecap $(pwd)
file                 capabilities
/jeremy/a_pr.out     sys_time
sys@2a2618c145ed:~$

또한 다음 페이지를 추천하고 싶습니다.특정 사용자 또는 그룹이 비밀번호 없이 /bin/date에 대한 루트 액세스 권한을 갖도록 허용

다음 편이 더 나을 수도 있어요. sudo setcap CAP_SYS_TIME+ei /경로/to/프로그램

관련 정보