預設情況下,在 RHEL 5.5 上我有
[deuberger@saleen trunk]$ sudo cat /etc/securetty
console
vc/1
vc/2
vc/3
vc/4
vc/5
vc/6
vc/7
vc/8
vc/9
vc/10
vc/11
tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8
tty9
tty10
tty11
console
每種條目類型( 、vc/*
和)之間有什麼區別tty*
?具體來說,新增和刪除每個條目類型的最終結果是什麼?
我的理解是它們會影響您登入的方式和時間,但是還有其他影響嗎?什麼時候可以登錄,什麼時候不能登錄,取決於有哪些條目?
編輯1
我所知道的是,這對應於您是否可以使用- -到- -tty1-6
從您到達的前 6 個控制台登入。我一直以為那些是虛擬控制台,所以我有點困惑。而對應的又是什麼呢?CtrlAltF1CtrlAltF6console
謝謝。
編輯2
在單一使用者模式下有什麼影響(如果有的話)?
答案1
/etc/securetty
由模組諮詢pam_securetty
來決定允許從哪些虛擬終端 ( tty*
)root
登入。
過去,/etc/securetty
由程序直接諮詢login
,但現在由 PAM 處理。因此,對 的更改/etc/securetty
將影響使用 PAM 以及使用pam_securetty.so
.因此,login
預設情況下只有程式受到影響。
/etc/pam.d/login
用於本機登錄,/etc/pam.d/remote
用於遠端登入(如telnet)。
主要條目類型及其影響如下:
- 如果
/etc/securetty
不存在,root
則允許從任何登錄tty
- 如果
/etc/securetty
存在且為空,root
則存取將被限制為單一使用者模式或不受pam_securetty
(即su
、sudo
、ssh
、scp
、sftp
)限制的程式 - 如果您正在使用
devfs
(用於處理的已棄用的檔案系統/dev
),則新增表單條目vc/[0-9]*
將允許從給定的虛擬控制台號碼進行根登入。 - 如果您正在使用
udev
(用於動態裝置管理和替換devfs
),則新增表單項目tty[0-9]*
將允許 root 從給定的虛擬控制台號碼登入。 - 列出
console
通常/etc/securetty
沒有任何效果,因為/dev/console
指向當前控制台,並且通常僅在單用戶模式下用作tty
文件名,不受/etc/securetty
- 添加類似的條目
pts/[0-9]*
將允許使用偽終端 (pty
) 的程式並pam_securetty
登錄,root
假設已分配的終端pty
是列出的終端之一;這通常是個好主意不是包含這些條目,因為它有安全風險;例如,它將允許某人透過 telnet 登入 root,這會以明文形式發送密碼(請注意,這pts/[0-9]*
是 RHEL 5.5 中使用的格式;如果使用或其他形式的裝置管理,udev
則會有所不同)。devfs
對於單用戶模式,/etc/securetty
不參考,因為sulogin
使用的是而不是login
(sulogin
有關更多信息,請參閱手冊頁)。您也可以變更/etc/inittab
每個運行等級所使用的登入程序。
請注意,您不應使用/etc/securetty
來控制root
登入ssh
。為此,請更改PermitRootLogin
in的值/etc/ssh/sshd_config
。預設/etc/pam.d/sshd
未配置為諮詢pam_securetty
(因此/etc/securetty
)。您可以新增一行來執行此操作,但直到階段結束後的某個時間才ssh
設定實際值,因此它無法按預期工作。在和階段 - 至少對於- ( ) 被硬編碼為。tty
auth
auth
account
openssh
tty
PAM_TTY
ssh
以上答案是根據RHEL 5.5。其中大部分內容與其他 *nix 系統的當前發行版有關,但也存在差異,我注意到了其中一些,但不是全部。
我自己回答了這個問題,因為其他答案不完整和/或不準確。許多其他線上論壇、部落格等在這個主題上也有不準確和不完整的信息,所以我做了廣泛的研究和測試,試圖獲得正確的細節。如果我說的話有什麼不對的地方,請告訴我。
資料來源:
- http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5/html/Deployment_Guide/ch-sec-network.html#s1-wstation-privileges
- http://www.mathematik.uni-marburg.de/local-doc/centos5/pam-0.99.6.2/html/sag-pam_securetty.html
- http://linux.die.net/man/1/login
- http://www.tldp.org/HOWTO/html_single/Text-Terminal-HOWTO/
- http://www.kernel.org/doc/Documentation/devices.txt
- http://en.wikipedia.org/wiki/Virtual_console
- http://en.wikipedia.org/wiki/Linux_console
- http://www.kernel.org/doc/man-pages/online/pages/man4/console.4.html
- http://www.unix.com/security/8527-restricting-root-login.html
- http://www.redhat.com/mirrors/LDP/HOWTO/Serial-HOWTO-11.html#ss11.3
- http://www.mathematik.uni-marburg.de/local-doc/centos5/udev-095/udev_vs_devfs
答案2
vc/X
和ttyX
是同義詞:相同設備的不同路徑。冗餘的目的是為了抓住各種情況,以免將你拒之門外。
傳統上,login
(可能getty
,我記不清了)會檢查/etc/securetty
並拒絕root
未列出終端上的登入。在現代系統上,還有其他方法可以做到這一點,也有其他安全措施。查看 的內容/etc/login.defs
(其中還涵蓋了securetty
的功能,並由線上securetty(5)
幫助頁推薦),還/etc/pam.d/login
可以在其中控制此功能的行為。
由於securetty
僅由 進行檢查login
,因此不使用的登入方式login
(例如使用 SSH use_login=no
、X 顯示管理器等)不會受到影響。