Linux 终端在重启后仅自动登录一次

Linux 终端在重启后仅自动登录一次

我试图让我的计算机在 Arch Linux 计算机上重新启动后自动以特定用户身份登录。我跟着来自 Arch Linux Wiki 的指南,运行# systemctl edit getty@tty1并粘贴以下行:

[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin username --noclear %I $TERM

这有效,我会自动登录以及一切。但是,当我因为想以其他人的身份登录而按 CTRL+D 注销时,会触发自动登录,并且我会立即重新登录。如何将自动登录配置为仅在启动后第一次自动登录,并且当我手动注销时什么都不做?

答案1

这是我目前使用的:

  1. # systemctl edit getty@tty1,但改为运行自定义脚本:

    [Service]
    Type=simple
    ExecStart=
    ExecStart=/home/[USER]/.tty1
    
  2. 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

相关内容