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/프로그램