我试图让我的计算机在 Arch Linux 计算机上重新启动后自动以特定用户身份登录。我跟着来自 Arch Linux Wiki 的指南,运行# systemctl edit getty@tty1
并粘贴以下行:
[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin username --noclear %I $TERM
这有效,我会自动登录以及一切。但是,当我因为想以其他人的身份登录而按 CTRL+D 注销时,会触发自动登录,并且我会立即重新登录。如何将自动登录配置为仅在启动后第一次自动登录,并且当我手动注销时什么都不做?
答案1
这是我目前使用的:
# systemctl edit getty@tty1
,但改为运行自定义脚本:[Service] Type=simple ExecStart= ExecStart=/home/[USER]/.tty1
cat /home/[USER]/.tty1
:#!/usr/bin/bash if [ -f /run/user/1000/tty1started ] ; then /usr/bin/agetty --noclear tty1 $TERM else date &> /run/user/1000/tty1started /usr/bin/agetty --autologin [USER] --noclear tty1 $TERM fi
(确保
chmod +x
你的脚本)
这date
是因为我也将其用于其他内容,但检查实际上仅验证文件存在(touch
就足够了)。该文件被写入 RAM(在/run
)中,因此会自动删除。
笔记:
- 更改
1000
您的用户 ID (id -u
) - 我确实收到一些
pam
警告ioctl
,但一切正常
答案2
据我所知agetty还没有这个功能。因此,您必须自己完成此操作,例如使用 bash/perl/whatever 脚本保存状态,如果有此启动的预览登录(目录在重新启动后以某种方式重新启动),然后启动匹配的 getty。
问题是,如果您确实需要完成这项工作,您也可以更改为 tty2(使用 alt+F2)并照常登录。
问候
答案3
横向回答:除了切换到另一个tty(如中所述特雷基的回答),您可以用新用户替换当前用户
su otherusername
当您退出其他用户的 shell 时,您将返回到您的会话。
(有些人认为su
是为了切换到超级用户帐户。实际上,它是“替代用户”,允许以不同用户身份发出命令。如果您没有以 root 身份登录,当您发出命令时su otherusername
,系统会提示您提供其他用户的请注意,它su
不会运行普通脚本.profile
或 shell 资源脚本;它会将当前工作目录和环境变量保留在由其他用户运行的新 shell 中,如果您需要完整的登录会话,请使用连字符选项su
:
su - otherusername
)