
GPS受信機の時刻と時刻を同期させるCプログラムを作成しました。コンピュータでUbuntu 16.04 LTSを実行しています。プログラムは clock_settime(CLOCK_REALTIME, ×pec) を使用して時間を設定します。プログラムはbashスクリプトで実行されますが、デスクトップファイルを使用してスクリプトを起動するため、sudoは使用できません。誰にもアイデアがありますか?
注:このスクリプトは複数のプログラムを実行しており、rootとして実行したくありません。
答え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へのrootアクセス権を持つことを許可する
次の方が良いかもしれません。 sudo setcap CAP_SYS_TIME+ei /パス/to/プログラム