Debian

Debian 上預設 /etc/securetty 設置的目的是什麼?

  • May 12, 2017

我創建了一個 Debian 不穩定容器debootstrap並使用systemd-nspawn.service.

我可以使用 以 root 身份登錄machinectl login,但同時不能超過一次。當我執行第二次登錄時,它一進入就拒絕root;它不會提示輸入密碼。

如您所料,如果我查看系統日誌,它會顯示訪問被拒絕,pam_securetty因為 tty /dev/pts/2“不安全”。這提出了幾個問題。

  1. 第一次登錄如何被/dev/pts/0認為是安全的?
  2. 為什麼/dev/pts/1沒有在第二次登錄時使用?
  3. 預設的 /etc/securetty 似乎列出了每種類型的 tty - 包括可以連接到調製解調器的串列線?我可以想像排除偽終端的原因。但是,如果你要允許所有類型的物理終端,那麼這個練習有什麼意義呢?!為什麼不使用一組(短)不允許以 root 身份登錄的 tty 類型?除了偽終端之外,是否有任何故意從列表中省略的內容,需要預設阻止?如果有故意遺漏,那為什麼不評論呢?

我能夠回答 Q1。無法形容的可怕答案是,在 Debian 拉伸(9-testing,login-4.4-4)中,/etc/securetty 包含 /dev/pts/0 和 /dev/pts/1 但不包含 /dev/pts/2。可以猜到這是專門為支持添加的systemd-nspawn。一個是正確的。但這只會讓我對這些設置應該完成什麼感到更加困惑!

這意味著設置沒有任何意義。

顯然,支持串列安裝的發行版希望能夠允許第一個串列控制台。您的問題是為什麼最初的 Debian 開發人員認為啟用 pam_securetty 很有用,但將其配置為允許每種類型的 tty。因此,什麼會阻止分發使用更簡單的設置。

Poettering 提出了一個答案:基於securetty 使用的分類系統已經過時,發行版應該使用更簡單的設置。

https://github.com/systemd/systemd/issues/852#issuecomment-127759667

它來自一個 tty 命名為 static 的時代。但是今天最少的 tty 是真正的舊主機板串列埠。幾乎所有這些都是通過 USB 插入的,或者是偽 tty。無論哪種方式,它們的名稱都不像 /etc/securetty 所期望的那樣固定,因此整個概念已經過時了。

因此:請讓您的發行版在預設啟用 pam_securetty 的情況下停止發貨,這確實已成為過去。同時,從 /etc/pam.d/* 中的所有文件中手動刪除它,或者將所有潛在的目前和未來 pty 添加到 /etc/securetty。


https://github.com/systemd/systemd/issues/852#issuecomment-128564307

您可以從容器中刪除 /etc/securetty,這將允許 root 登錄所有 tty。

引用自:https://unix.stackexchange.com/questions/364667