我正在尝试做的事情:
我有一台被视为设备的机器,它打开了多个图形应用程序,并且这些应用程序在任何时候都不能关闭。
HumanA 可能会打开系统、启动应用程序,然后锁定屏幕。
轮班发生了变化,HumanB 现在承担起机器的责任。
HumanB 现在需要登录系统,并查看 HumanA 启动的相同图形应用程序。
我今天是如何做的
今天我们通过一个用户帐户(UserX)实现了这一点,并且 HumanA 和 HumanB 都知道 UserX 的密码。
问题在于该系统的审计。如果我们确定周末发生了一些非常糟糕的事情,日志文件只会告诉我们 UserX 登录了。这不符合我们的规定。
我需要它做什么
我需要 HumanA 和 HumanB 不知道彼此的密码或共享密码。
我需要 HumanA 和 HumanB 能够登录并看到相同的图形用户环境。
从审计的角度来说,我需要能够确定哪个人在什么时候登录。
** 澄清 **
这是计算机/显示器/键盘设置,无需担心远程或 ssh 会话。
人类不会同时使用该系统。
任何涉及“移动”应用程序的技巧都不能导致高性能计算任务的任何中断,即使是1毫秒的中断也是不可接受的。
我们目前使用 yocto 和 XFCE。
该应用程序不能被重写或重新设计,它必须保持图形化。
答案1
您可以继续让 UserX 打开图形会话,但添加另一个在图形应用程序上执行截屏的应用程序。HumanA 可以通过该截屏应用程序“登录”。该应用程序将记录 HumanA 现在正在操作系统。
在轮班结束时,HumanA 通过重新启动截屏应用程序(通过长期运行的图形应用程序)来“注销”,因此当 HumanB 到达时,她必须通过截屏“登录”,并且可以记录用户的变化。
答案2
这有点黑客行为,但我认为你可以通过使用具有相同 uid 的多个用户来管理它。你可以这样做/etc/passwd
:
Appliance:x:1000:1000::/home/machine:/bin/bash
HumanA:x:1000:1000::/home/machine:/bin/bash
HumanB:x:1000:1000::/home/machine:/bin/bash
(加上 上的相应条目/etc/shadow
,您可以passwd HumanA
)
系统实际上是通过用户的 uid 来识别用户的。因此,通过这样的设置,您可以同时输入 HumanA(使用 HumanA 的密码)或 HumanN(使用 HumanB 的密码),最终会进入同一个会话。但是,系统会记录提供的用户登录信息。
当系统想要将 uid 1000 解析为一个名称时,它会找到第一个结果并返回“Appliance”。
当然,其他 nss 提供商也可以使用同样的技巧。