Mik*_*.K. 16 su debian bash terminal debian-squeeze
注意:请阅读本文中点附近以“EDIT”开头的更新信息 - 此问题的环境和背景已更改
我在这里安装了一个沼泽标准的 Debian 6.0,我决定将其转移到 Debian 测试存储库。我通过在我的 sources.list 中交换对 Squeeze 存储库的引用来使用测试存储库来做到这一点。
安装软件包并重新启动后,尝试向另一个用户执行 su - 时出现以下错误:
root@skaia:~# su joebloggs -
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
Run Code Online (Sandbox Code Playgroud)
如果我省略 -,则不会发生这种情况。
请注意,用户可以正确地成为 root,这似乎只有在从 root 切换到其他人并使用 - 获取该用户的环境时才会发生。
谷歌在这里基本没用。我能找到的唯一的东西是 2011 年关于sux包的参考文献,这些参考文献似乎同时得到了修复。
这看起来和闻起来很像升级错误,可以通过以正确的方式调整正确的包来修复。我只是不知道从哪里开始 - 除此之外,我的系统完全正常并按预期工作。
编辑
如上所述,这现在发生在我的 Debian稳定机器上。这次没有升级或任何东西,只是直接稳定。
是的,一年后。仍然不知道问题是什么。
这是现在的样子(变化不大):
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
terraria@skaianet:~$ tty
/dev/pts/0
terraria@skaianet:~$ ls -l /dev/pts/0
crw--w---- 1 root root 136, 0 Oct 10 19:21 /dev/pts/0
terraria@skaianet:~$ ls -l /dev/pts/
crw--w---- 1 root root 136, 0 Oct 10 19:21 0
crw--w---- 1 root root 136, 2 Sep 22 17:47 2
crw--w---- 1 root root 136, 3 Sep 26 19:30 3
c--------- 1 root root 5, 2 Sep 7 10:50 ptmx
Run Code Online (Sandbox Code Playgroud)
像这样生成的strace:
root@skaianet:~$ strace -f -o tracelog su terraria -
Run Code Online (Sandbox Code Playgroud)
..也出现了一些令人困惑的行为。这些消息相当混乱。一些选择的线路:
readlink("/proc/self/fd/0", "/dev/pts/0", 4095) = 10
#Error code 10?
15503 open("/dev/tty", O_RDWR|O_NONBLOCK) = -1 ENXIO (No such device or address)
#Yes there is, and I can interact with it normally
15503 ioctl(255, TIOCGPGRP, [32561]) = -1 ENOTTY (Inappropriate ioctl for device)
Run Code Online (Sandbox Code Playgroud)
我已经链接了这个 strace 会话的完整输出- 我所做的只是运行 su 命令,然后立即 ctrl+d 退出终端。
Zak*_*akW 34
su - username被您解释su为“将username的 shell 作为交互式登录 shell 运行”su username -被您解释su为“以用户名运行以下非交互式命令(-)”su将尾随参数传递sh给解析sh需要-表示“运行作为登录shell(读取/etc/profile...)”但您真正感兴趣的是:为什么非交互式?在有特权的父级和无特权的子级之间共享控制终端会使您容易受到“ TTY 推回特权升级”(即TIOCSTI错误)的影响,因此除非您真的需要它,否则请与它su 分离。当您使用su username -表单时,su 推断您不需要控制终端。
只有具有控制终端的进程才能拥有操作进程组(进行作业控制)的会话领导者;您提供的跟踪bash检测到它不能是会话领导者。
你提到:
奇怪的是,这两种形式在 Ubuntu 和 CentOS 6 上都可以正常工作,但是在 vanilla Debian 上,只有第一种形式可以正常工作。
忽略变种喜欢sux和sudo有至少三种[1]版本的suLinux上:coreutils,util-linux以及shadow-utils从Debian的来了。后者的联机帮助页指出:
这个版本的 su 有许多编译选项,只有其中一些可能在任何特定站点使用。
Debian 带有标志old_debian_behavior;其他版本可能有类似的编译时/运行时选项。可变性的另一个原因可能是关于是否应该使用这种方式放弃特权以及该 错误是否因此是一个错误(Redhat 最初将其关闭为“WONTFIX”)存在一些争论[2]。suTIOCSTI
[1]:编辑:添加SimplePAMApps和hardened-shadow。
[2]:Solar Designer 有一些我认为值得一读的(旧)观点。
| 归档时间: |
|
| 查看次数: |
32425 次 |
| 最近记录: |