运行 ntpdate 作为非 root 用户

Running ntpdate as non root user

我正在尝试编写一个代码来监听消息,并在每次收到消息时强制执行 ntp 同步(使用 ntpdate 命令)。

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

这段代码假设在系统启动时自动启动,所以我不能只 运行 带有 "sudo" 的可执行文件。 在网上搜索后,我找到的唯一解决方案是以root用户身份登录,但这会危及安全。

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

你知道我有什么方法可以 运行 具有 root 权限的 c++ 代码而不影响安全性吗?

  • NTP守护进程运行具有root权限,因为它是在root账户下启动的。

  • 一般情况下,运行作为守护进程的程序都是在root账户下启动的;他们中的一些人通过调用 setuid(), seteuid()

  • 自愿放弃 root 权限
  • 您可以随时为该程序创建一个专用帐户,并运行它在该帐户下,

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

    然后您可以编辑 /etc/sudoers 以允许该帐户 运行 ntpdate 并且仅 ntpdate 作为 root 没有密码。