clock_settimeを使用してrootアクセスなしで時間を設定します。

clock_settimeを使用してrootアクセスなしで時間を設定します。

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/プログラム

おすすめ記事