2017-02-05 192 views
0

我試圖編寫一個代碼來監聽消息,並且每次獲取消息時都會強制執行ntp sync(使用ntpdate命令)。以非root用戶身份運行ntpdate

該代碼是用Ubuntu 14.04上的C++編寫的,並運行OK。但是系統命令每次都會失敗,因爲它沒有root權限。

此代碼假設系統啓動時自動啓動,所以我不能只用「sudo」運行可執行文件。 搜索到互聯網後,我發現的唯一解決方案是以root用戶身份登錄,但這會危及安全。

我知道ntp守護進程以root權限運行,但我不確定它是如何實現的。

你知不知道我能用root權限運行C++代碼而不危及安全性?

+0

編寫一個守護進程並讓它在啓動時運行,默認情況下它將以root權限運行。 – rustyx

回答

0
  • NTP守護程序以root權限運行,因爲它在root帳戶下啓動。

  • 通常,在守護進程下運行的程序在root帳戶下啓動;他們中的一些通過使setuid爲的是放棄root特權主動致電setuid()seteuid()

  • 你總是可以做一個專門的帳戶的程序和該帳戶下運行它,

    • 要麼帳戶,
    • 或使用​​-u
    • 或者,如果你開始從systemd單元文件守護進程,通過在單位的說明文件中指定user= and group=

    然後,您可以編輯/etc/sudoers以允許該帳戶來運行ntpdate只有ntpdate作爲根沒有密碼。

相關問題