我有一个有趣的情况,用户的帐户已被暂时删除(文书工作不及时更新)。 但是,由于“屏幕”的魔力,他的程序仍在运行。
我希望能够重新连接到这些旧的屏幕会话,并保存一些数据。 那可能吗? 我有sudo的权力,但不知道如何在这种情况下适用他们。
通常我会这样做:
chmod 777 `tty` sudo su <user> screen -x 但在这种情况下用户不再存在。 天真的插入旧的用户ID不起作用(不是我真正期待它)。
这是RedHat Enteprise Linux 5:(2.6.18-53.1.14.el5)
你不能只是暂时使用相同的UID创build用户帐户?
好的,这就是为什么用户应该被禁用,而不是被删除。 有一些内置的选项可以用于这种事情(并且我知道每个集中式用户pipe理软件中都有设置)。
但是你不是来这里大吼大叫的。
用户的文件是否仍然存在,或者用户是否被删除? 屏幕使用locking文件重新连接,如果他们走了,我真的不知道如何回收会议。
如果可能,请尝试Keiran的重新创buildUID的build议。 有时候这是不可行的,特别是在ID从其他用户信息中被散列的集中authentication中,但是如果可以的话,那将是膨胀的。
假设你不能,你需要find一个方法来接pipeterminal。 我猜测你的系统上没有configurationTTYSnoop。 在这种情况下,它会变得毛茸茸的。
假设你的屏幕会话像我的一样给你一个pts /#terminal,可能(可能)是一个机会。 pt代表伪terminal,它是基于客户端/服务器的。 有pt奴隶,这是您input的terminal,并有接收input的ptmaster。 有一个主站(/ dev / ptmx)有许多从站(/ dev / pts / *)。 从手册页到ptmx:
Before opening the pseudo-terminal slave, you must pass the master's file descriptor to grantpt(3) and unlockpt(3). Once both the pseudo-terminal master and slave are open, the slave pro‐ vides processes with an interface that is identical to that of a real terminal.
可能(可能)使用一个自定义的书面程序来假设你想要假设的terminal的身份(当然,也可能只是在这一点上说劫持),方便地忽略了某些安全措施,存在你想要的文件描述符。
只是承认失败并丢失数据,可能在这一点上要less得多。
你有没有尝试,作为根连接,指定正在运行的屏幕的套接字名称屏幕? (我没有亲自尝试过。)