注销后,为什么有我的用户名的进程?

分享于 

6分钟阅读

电脑

  繁體 雙語

问题:

我在一个相当标准的Debian Sid系统上。

退出后,即使在停止( LightDM,如果有问题) 之后,仍然会看到许多运行在我的名字中的进程。

我知道我可以处理"分离"和 HANGUP,但我没有明确地做任何事情。

我看到的一些过程是: tracker-magentevolutiongvfsdapplet.py

我无法看到它们,因为它们在我注销之后应该继续运行。

我应该关注系统安全性?

谁能解释?


回答 1:

首先:你应该始终关注系统安全性。 所以,不管你剩下的问题是什么,答案是正确的。

关于用户注销时是否应该终止用户所有进程的讨论已经过了相当多的讨论。 Systemd开发人员认为这是一个好主意,它的余的世界没有( 简单的简化,但是。"。"。)

现在解释一下。当交互式 shell 死时,它通常将一个 SIGHUP ( 信号挂断) 发送到它所有的子进程。 除非进程有不同的处理方法,否则SIGHUP会终止子进程。

因这里,如果流程有处理tmodel的处理程序,它可能会有它的他的事情。 它的父进程通常会变成 1个( Slackware上的init )。

另一个选择是进程中止执行实际工作的第二个进程。 主进程随后死亡。 这就是有多少守护进程工作。 父进程不是已经死了,因这里一个tmodel永远不会转到分叉的,守护进程。

在你注销后,为什么一个进程应该保持运行的原因很多。 例如:邮件客户机可以在你的名称中继续轮询邮件服务器,因这里你的邮箱不需要等待。 文件系统守护进程可能以你的名义挂载设备。 当仍然使用该 文件系统 时,文件系统守护进程可能会保持挂载,即使该守护进程在你的名称下运行。

对于特定的进程: 我不知道 tracker-mpplet.py 还是 agent。 就我所知,可能是什么。 可能是一些侏儒的东西。

evolution 可能是你的邮件客户端。 甚至难以在登出时运行,它会降低邮件客户机的启动时间,如果它保持运行。

gvfsd 是运行的Gnome虚拟 文件系统 daemon.Keeping,例如,你的名称下安装了安装的USB磁盘。

因此,一般情况下,在注销后,你会看到名称中的进程正在运行。 没有问题,但作为安全知识人员,你应该调查正在运行的内容。


回答 2:

你列出的特定进程是正常的- 通常是GNOME组件,例如文件索引器,或者邮件/日历存储守护进程。 他们可能已经退出了,但是帖子没有包含足够的信息来回答系统是否应该主动终止他们的工作。

我知道我可以处理"分离"和 resistant HANGUP,但是我没有明确地做任何事情。

只有当流程被连接到终端时,才会应用"正在分离"的整个概念。 你的图形会话流程没有开始,它们从来没有控制终端,输入/输出只到日志文件。 当控制tty消失时,会产生挂起信号( 比如。 是"挂断"),没有控制的tty意味着不会生成任何。

( 即使你从终端启动了一个进程,这不会阻止它从终端( 什么叫'daemonization') 中自动的"正在分离"。 在集成服务管理器( 如。或者 systemd ) 之前,。或者inetd等所有后台服务都将从终端启动并分离。

对于大多数图形会话进程来说,近似等效性可以能是X 服务器( Xorg )。 他们可以能支持一个显式的"请退出"信号,但通常,它们只是退出时,它的出口和连接丢失。 但它不是信号;它是在程序的一部分自愿的,有时因为它忙于做别的事情。

列出的大部分进程实际上是守护进程/服务,它们甚至不使用 X11. 例如gvfsd是GNOME虚拟 文件系统 守护进程,通常只使用图形程序( 通常是 ),但是它本身不是。 同样,tracker miner是文件索引服务- 它根本不使用 X11. ( 但两者都是d 服务,因此当守护进程退出并且总线连接丢失时,它们将相同。

除了:Linux以前一直没有一个系统的广泛概念,直到- -。 在 systemd logind开始使用cgroups封装会话进程之前。 在这之前,有一个杂乱的过程或者两次退出后是一个常见的发生。 now configure configure logind configure在注销时配置所有用户进程,它将终止所有用户进程logout退出 logout。

然而,在相同的用户会话之间共享相同的守护进程( 在图形会话和SSH登录之间共享) 并不少见- 所以以后的版本将焦点从单个会话转移到用户。 ( 实际上,systemd甚至通过'systemctl --user'引入了新的"用户服务"概念)。 ( 这尤其影响前面提到的d 总线服务: 总线不再特定于图形会话,但现在为整个用户帐户共享。

最后一点是,如果通过直接作为 root ( 或者其他用户) 登录的连接进行进程检查,你将只得到有用的结果。



USE  PROC  用户  log  processes  Userid