我正在尝试编写一个可以监听消息的代码,每次收到消息时都会强制执行ntp sync(使用ntpdate命令)。
代码用c ++编写,在Ubuntu 14.04上运行,运行正常。但系统命令每次都失败,因为它没有root权限。
此代码假设在系统启动时自动启动,因此我无法使用" sudo"运行可执行文件。 在搜索互联网之后,我找到的唯一解决方案是以root用户身份登录,但这会危及安全性。
我知道ntp守护程序进程以root权限运行,但我不确定它是如何实现的。
您是否知道我可以在不影响安全性的情况下以root权限运行c ++代码?
答案 0 :(得分:1)
NTP守护程序以root权限运行,因为它是在root帐户下启动的。
通常,作为守护进程运行的程序在root帐户下启动;其中一些人通过致电setuid()
,seteuid()
等自愿放弃root权限。
您可以随时为该计划创建一个专用帐户,并在该帐户下运行
sudo
-u
,systemd
单元文件启动守护程序,则在单元描述文件中指定user=
and group=
。然后,您可以修改/etc/sudoers
以允许该帐户在没有密码的情况下以root身份运行ntpdate
和ntpdate
。