【问题标题】:Can i restrict my service from running as root? [closed]我可以限制我的服务以 root 身份运行吗? [关闭]
【发布时间】:2020-02-14 08:30:31
【问题描述】:

我以用户身份运行我的服务(给予正确的权限并添加到适当的组),但如果我愿意,我也可以以 root 身份运行它。 如何禁用此系统范围而不是单个应用程序?

【问题讨论】:

  • 使用哪种编程语言?
  • 我们不能防止 root 运行程序,但我们可以在到达用户代码后添加代码来纠正这种情况。 C 语言中最简单的方法是调用 setuid() 系列调用之一来更改(例如)“nobody”用户。如果进程没有足够的特权,setuid 将失败(我们可以忽略它返回的错误),但如果它以 root 身份运行,它将不再这样做。
  • 是否有任何设置可以在系统上全局设置而不是在应用程序本身上进行编程?
  • 那将是Server FaultUnix & Linux 问题(但我认为答案是否定的)。

标签: linux root systemd user-permissions


【解决方案1】:

假设它是用 bash 编写的。你可以这样做:

if [[ $EUID -eq 0 ]]; then
  echo "Cant run this as root" 1>&2
  exit 1
fi

另一种检测哪个用户正在运行脚本的方法是

id -u
$UID

我目前在我的 Mac Box 中,并在终端中以 root 身份登录,这是输出

  ~# id -u
0
~# echo $UID
0
~# echo $EUID
0
~#
~#

所以你基本上是说如果我对用户 ID 的检查是 0,那么它的根。所以只需打印一条消息并退出

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-16
    • 2013-08-31
    • 2018-11-06
    • 2012-08-28
    • 2010-09-08
    • 2016-07-12
    • 1970-01-01
    相关资源
    最近更新 更多