问题:有谁知道有什么方法可以在不使用 su 的情况下执行“第二次”登录,或者使用 su 要求用户在发出 su 命令后输入用户名?
情况:我们有多种类型的设备登录到 Linux 服务器。然后,用户可以从菜单上的选项中进行选择来执行。设备自动使用每个设备的不同帐户登录系统。我们这样做的原因是为了将设备上要维护的设置帐户数量限制为每台设备一个。我们可以使用的 ssh 客户端都将自动登录名与正在使用的设备帐户绑定在一起(请参阅 Android 上的 Juice ssh 示例)。对于我们来说,在每个设备上维护每个应用程序 40 多个帐户的开销太大了。
目标:设备登录(主要登录)后为用户提供辅助登录,允许他们输入用户 ID 和密码。
我的第一反应是“su”,但“su”需要命令提供的用户名,否则默认为 root 帐户。为了简单起见,我尝试避免在发出“su - $username”等命令来完成此操作之前编写更多的 shell 代码来提示输入用户名。
当然,他们登录的任何应用程序都已经要求输入用户名和密码,但进入 shell 和其他自制功能依赖于登录来提供身份验证。
答案1
su - username
如果用户必须以任何方式输入用户名和密码,那么让用户在 shell 中输入又有什么意义呢?仅输入 5 个额外字符:)。
如果用户不接受并且你又懒得不想再写单个脚本,只需在服务器上安装 和 并将以下别名telnet
放入.telnetd
/etc/bash.bashrc
alias x='telnet localhost'
更新: 不要忘记限制对 telnetd 端口 (tcp/23) 的远程访问。您可以设置防火墙 ( iptables
) 或传统的 TCP 包装器(/etc/hosts.allow
, /etc/hosts.deny
- 请参阅hosts_access(5) 手册页)。