首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是什么决定了服务启动的用户?

是什么决定了服务启动的用户?
EN

Server Fault用户
提问于 2020-04-01 06:41:04
回答 3查看 135关注 0票数 0

我认为,/lib/systemd/system/下面的服务文件确定了服务的启动用户。但很显然,情况并不总是如此。下面是一个例子:

代码语言:javascript
复制
~# ps faux
...
whoopsie  1445  0.0  0.1 388420 12604 ?        Ssl  08:22   0:00 /usr/bin/whoopsie -f
...

从上面的输出中我们可以看到,进程'whoopsie‘运行在用户'whoopsie’之下。

现在我们来看看startupscript:

代码语言:javascript
复制
~# cat /lib/systemd/system/whoopsie.service

Description=crash report submission daemon
After=network-online.target
Wants=network-online.target

[Service]
Environment="CRASH_DB_URL=https://daisy.ubuntu.com"
ExecStart=/usr/bin/whoopsie -f
Restart=always

[Install]
WantedBy=multi-user.target

在该启动脚本中,没有用户定义。

那么,是什么决定进程作为哪个用户启动的呢?

EN

回答 3

Server Fault用户

回答已采纳

发布于 2020-04-01 18:00:42

附加信息,这个whoopsie进程在启动后将userid从root更改为whoopsie。

源代码:

代码语言:javascript
复制
/* Drop privileges */
if (setgroups (1, &pw->pw_gid) < 0 ||
    setresgid (pw->pw_gid, pw->pw_gid, pw->pw_gid) < 0 ||
    setresuid (pw->pw_uid, pw->pw_uid, pw->pw_uid) < 0) {
    g_set_error (error, g_quark_from_static_string ("whoopsie-quark"), 0,
                 "Failed to become user: %s", username);
    return;
}

来自:https://github.com/pexip/os-whoopsie-daisy/blob/master/src/whoopsie.c#L838

setresuid是更改用户的函数。

参考资料:http://man7.org/linux/man-pages/man2/setresuid.2.html

票数 2
EN

Server Fault用户

发布于 2020-04-01 06:51:22

虽然你的观察是正确的,但这不是系统造成的。Whoopsie作为root运行,只需放弃它的特权。

票数 3
EN

Server Fault用户

发布于 2020-04-01 07:20:25

如果没有指定任何内容,请参考用户或组,一些缺省值是适用的。默认的是"root“。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1010358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档