运行 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 没有密码。
我正在尝试编写一个代码来监听消息,并在每次收到消息时强制执行 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=
andgroup=
。
然后您可以编辑
/etc/sudoers
以允许该帐户 运行ntpdate
并且仅ntpdate
作为 root 没有密码。