root 用户是否能够为其他用户管理屏幕?

Pet*_*ner 2 cleanup root gnu-screen

我们正在尝试为那些离开屏幕会话时间过长并且以某种方式或其他方式绕过我们的会话超时的用户重写一个严酷的屏幕会话杀手。

当前的方法是找到屏幕的pid并杀死它,看起来屏幕程序的编写方式可以挂钩其他用户会话,但是当我尝试以root身份执行任何操作时,屏幕目录是不同的目录。猜测这是出于安全原因,但无论如何要故意覆盖它,以便我可以做类似的事情screen -r somedude/33333 -d -X quit?作为根?

mfo*_*tti 5

标准screen实例是singleuser,即每个实例只能由创建它的用户访问。

要允许多用户screen实例,您可能需要添加以下命令:

multiuser on
addacl root,<user1>,<user2>,...
Run Code Online (Sandbox Code Playgroud)

到您的全局screen配置,即/etc/screenrc.

screen此后的每个实例都应该是多用户的screen,即可以由 中指定的其他用户附加addacl;除非被用户特定的命令覆盖。

您可以列出用户屏幕

multiuser on
addacl root,<user1>,<user2>,...
Run Code Online (Sandbox Code Playgroud)

并附加到另一个用户的屏幕

$ find /var/run/screen -type s
/var/run/screen/S-<user>/<pid>.<tty>.<host>
Run Code Online (Sandbox Code Playgroud)

检查man screen自定义部分以获取更多信息screenrc

请注意,每个用户还可以screenrc$HOME/.screenrc文件中添加他们自己的用户特定命令,从而为他们的用户禁用多用户屏幕。

  • 请注意,用户可以通过在运行 screen 之前设置 env var `SCREENDIR=/some/dir` 将套接字移动到任何位置。要找到它们,您可以执行 `ss -l -A unix_stream`,然后通过 `sudo lsof` 传递每个找到的文件名以检查使用它们的命令是 screen。 (2认同)