我最近更新了服务器上的屏幕,出于某种原因,当以普通用户身份登录时,我无法再创建屏幕会话。如果我运行 sudo screen 就可以了。
这可能是某个地方的权限错误,但我不知道在哪里可以找到它。
任何帮助将不胜感激。
更新:
我在 Ubuntu Server 9.04 中使用 apt-get upgrade 升级了屏幕,我刚刚删除并清除了它,然后重新安装。它仍然允许我以 root 身份创建屏幕,但以普通用户身份创建屏幕时屏幕会变成空白。我尝试从源代码构建,在执行 make 时出现大量错误(太多了,无法在此发布)。有趣的是,我可以创建一个屏幕,但当我在屏幕上创建另一个屏幕(shell?)时,它是空白的。尝试在 4.0.3 上从源代码构建
答案1
Screen 通常以 setuid-root 方式安装 - 如果它丢失了 setuid 位,它可能会以有趣的方式崩溃。
您是如何更新屏幕的?供应商可能发送了一个错误的软件包,但从源代码构建/安装不应该有这个问题。
如果屏幕突然丢失了它的 setuid 位,我的偏执感就会很强烈,除非我确定屏幕二进制文件是原始的且未受干扰,否则我会非常谨慎地重置它。Screen 运行很多次,给可能被破坏的二进制文件 setuid-root 权限真的会毁了你的一天……
答案2
运行的用户需要他正在处理的控制台的screen
访问权限。/dev/pts
如果您以 root 身份登录到控制台,然后su
以普通帐户身份登录,通常会失去对pts
正在处理的事务的访问权限。
作为普通用户,请运行ps
并查看进程的第二个字段 (TTY)。它应该显示“pts/N”(N 为数字)。然后,执行ls -l /dev/pts/N
并验证普通用户是否有权访问该文件。
如果他无权访问,您可以考虑扩大 /dev/pts/N 的访问权限(即使用登录控制台的帐户)。正如 voretaq7 指出的那样,请记住这样做的安全隐患:权限设置是有原因的。