默认情况下,在 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]*
将允许从给定的虚拟控制台号码进行 root 登录。 - 如果您正在使用
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 显示管理器等)不会受到影响。