登录 shell 是否需要创建 utmp 条目?

登录 shell 是否需要创建 utmp 条目?

我的观察:

  1. 如果我打开一个新终端(侏儒/lx)

    • 新的/dev/pts/X用来
    • who没有列出这些
    • 第一个字符echo $0不是-,因此它不是登录 shell。
  2. 如果我ssh使用同一用户进入同一台机器

    • 新的/dev/pts/X用来
    • who列出这些
    • 第一个字符echo $0-,所以它是一个登录 shell。
  3. 如果我打开一个新的终端 (ctrl-alt-Fxx)

    • 新的/dev/ttyXX用来
    • who列出这些
    • 第一个字符echo $0-,所以它是一个登录 shell。
  4. 如果我跑su -

    • 相同的/dev/pts/X用来(在哪里su -发行)
    • who没有列出这些
    • 第一个字符echo $0-,所以它是一个登录 shell。

结论:

  1. 创建新的 pty 不会自动在 utmp 中创建条目(?)

问题:

  1. 如果who显示当前登录用户的列表,那么它应该显示每个登录 shell 的条目(?)。但它不显示root用户登录的条目su -,为什么?

编辑:此时我可以得出的另一件事是:“它必须是一个新的 pty/tty 和一个登录 shell,然后才在 utmp 中创建一个新条目”

答案1

首先,who不关心登录 shell 或类似的东西。它只是转储utmp条目。非登录终端可以有入口;对于图形会话;用于 FTP 连接(具有完全虚构的 tty“线路”名称);几乎任何事情。

二、创建utmp条目手动– 只有当处理您的登录的程序调用 时,您才会获得一个条目pututline(…)。例如,sshd 总是这样做,终端模拟器经常这样做(但并非总是如此),并且su从不这样做。

(请记住,它su不会分配新的 pty,因此它也无法添加 utmp 条目 - 否则您最终会得到同一个 tty 的多个条目,这可能会混淆一些程序。)

相关内容