【问题标题】:Running ntpdate as non root user以非 root 用户身份运行 ntpdate
【发布时间】:2017-06-22 14:11:05
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 写一个守护进程,让它在启动时运行,默认以root权限运行。

标签: c++ ubuntu-14.04 root ntp


【解决方案1】:
  • NTP 守护程序以 root 权限运行,因为它是在 root 帐户下启动的。

  • 一般情况下,作为守护进程运行的程序是在 root 帐户下启动的;他们中的一些人通过调用setuid()seteuid()等自愿放弃root权限。

  • 您始终可以为该程序创建一个专用帐户并在该帐户下运行它,

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

    然后,您可以编辑 /etc/sudoers 以允许该帐户以 root 身份运行 ntpdate 和仅 ntpdate,无需密码。

【讨论】:

    猜你喜欢
    • 2017-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-01
    • 2013-07-02
    • 2017-02-06
    • 2021-06-22
    相关资源
    最近更新 更多