首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么直接从bash调用agetty似乎没有任何效果?

为什么直接从bash调用agetty似乎没有任何效果?
EN

Unix & Linux用户
提问于 2018-12-30 04:46:06
回答 1查看 628关注 0票数 1

我尝试在终端模拟器(基于X和基于内核的)中从bash调用/usr/bin/agetty -,然后它要求我输入用户名,但是在输入用户名之后,它只是“冻结”了一会儿,然后把我放回原来的bash推广中。

我开始怀疑,agetty是由systemd使用ttyx设备和execve(/usr/bin/login)作为服务启动的,因此它将为我提供登录促进,因为登录是用pam_systemd配置的,因此将创建一个systemd会话。但是,正如我前面提到的,当我直接运行agetty -时,这不是我得到的结果,当我检查systemctl status时,没有创建任何新的会话。

然后我想,如果是因为agetty作为普通用户运行,它可能会检查自己的EUID或其他东西,但这只会导致我的bash在输入用户名后退出。

好的,我再次检查了systemctl status,它告诉我系统以/sbin/agetty -o -p -- \u --noclear tty2 linux的身份运行这个程序,好吧,我以根用户身份登录tty2,然后运行agetty -o -p -- \u --noclear - linux,我得到了与最初完全相同的情况--我又回到了bash。

我需要了解这些实验结果。

我使用的是ArchLinux、/usr/bin/login/usr/bin/agetty,它们都来自util-linux 2.33-2包。

EN

回答 1

Unix & Linux用户

发布于 2018-12-31 11:59:44

显然,“递归login”曾经做过一些有用的事情,但现在已经有一段时间没有在Linux上工作了。

我建议坚持使用更常用的技术,如非递归login,或susudo,因为对于当前系统,这些技术有更好的理解和文档化等。

在可能的情况下,尽量避免使用su,以支持su -l,因为这将为您提供一组干净的环境变量。

我不知道你为什么看到你描述的具体结果。但是,如果您确实需要理解“递归login”的行为,我可以想到两点,您需要理解,关于它可能出错的地方。

BUGS -不支持无文档的BSD -r选项。这可能是一些rlogind(8)程序所需要的。递归登录(在过去的好时光中是可能的)已不再起作用;在大多数情况下,su(1)是令人满意的替代品。实际上,出于安全考虑,登录会执行一个vhangup()系统调用,以删除tty上任何可能的侦听进程。这是为了避免密码嗅探。如果一个人使用命令登录,那么周围的shell就会被vhangup()杀死,因为它不再是tty的真正所有者。-- man login

如果您使用的是systemd,它会跟踪登录会话,但不允许嵌套它们。这是一个关于系统登录会话应该如何与"audit会话“交互的D11su / sudo不能逃避当前的"audit会话“。

目前,每当我运行sudo时,我也可以看到系统对此设计进行了大量的记录。别问我为什么这被认为是可取的..。

代码语言:javascript
复制
sudo[1079]: pam_systemd(sudo:session): Cannot create session: Already running in a session

完全披露:来自man login的引用继续:

如果一个人使用命令登录,那么周围的shell就会被vhangup()杀死,因为它不再是tty的真正所有者。可以通过在顶级shell或xterm中使用exec login来避免这种情况。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/491543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档