以非root用户身份运行ntpdate

问题描述:

我试图编写一个代码来监听消息,并且每次获取消息时都会强制执行ntp sync(使用ntpdate命令)。以非root用户身份运行ntpdate

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

此代码假设系统启动时自动启动,所以我不能只用“sudo”运行可执行文件。 搜索到互联网后,我发现的唯一解决方案是以root用户身份登录,但这会危及安全。

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

你知不知道我能用root权限运行C++代码而不危及安全性?

+0

编写一个守护进程并让它在启动时运行,默认情况下它将以root权限运行。 – rustyx

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

  • 通常,在守护进程下运行的程序在root帐户下启动;他们中的一些通过使setuid为的是放弃root特权主动致电setuid()seteuid()

  • 你总是可以做一个专门的帐户的程序和该帐户下运行它,

    • 要么帐户,
    • 或使用​​-u
    • 或者,如果你开始从systemd单元文件守护进程,通过在单位的说明文件中指定user= and group=

    然后,您可以编辑/etc/sudoers以允许该帐户来运行ntpdate只有ntpdate作为根没有密码。