gpt4 book ai didi

c++ - 以非 root 用户身份运行 ntpdate

转载 作者:行者123 更新时间:2023-11-28 05:18:28 25 4
gpt4 key购买 nike

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

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

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

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

您知道我可以在不影响安全性的情况下以 root 权限运行 C++ 代码的任何方法吗?

最佳答案

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

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

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

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

    然后您可以编辑 /etc/sudoers允许该帐户以 root 身份运行 ntpdate 并且只运行 ntpdate 而无需密码。

关于c++ - 以非 root 用户身份运行 ntpdate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42054168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com