以非root用户身份运行ntpdate

时间:2017-02-05 16:02:38

标签: c++ ubuntu-14.04 root ntp

我正在尝试编写一个可以监听消息的代码,每次收到消息时都会强制执行ntp sync(使用ntpdate命令)。

代码用c ++编写,在Ubuntu 14.04上运行,运行正常。但系统命令每次都失败,因为它没有root权限。

此代码假设在系统启动时自动启动,因此我无法使用" sudo"运行可执行文件。 在搜索互联网之后,我找到的唯一解决方案是以root用户身份登录,但这会危及安全性。

我知道ntp守护程序进程以root权限运行,但我不确定它是如何实现的。

您是否知道我可以在不影响安全性的情况下以root权限运行c ++代码?

1 个答案:

答案 0 :(得分:1)

  • NTP守护程序以root权限运行,因为它是在root帐户下启动的。

  • 通常,作为守护进程运行的程序在root帐户下启动;其中一些人通过致电setuid()seteuid()等自愿放弃root权限。

  • 您可以随时为该计划创建一个专用帐户,并在该帐户下运行

    • 将其设置为该帐户,
    • 或使用sudo -u
    • 或者,如果从systemd单元文件启动守护程序,则在单元描述文件中指定user= and group=

    然后,您可以修改/etc/sudoers以允许该帐户在没有密码的情况下以root身份运行ntpdatentpdate