我正在尝试设置我的计算机,以便我可以使用连接到 python 脚本的外部设备对自己进行身份验证。我首先用我自己的程序替换了这个login
程序inittab
,并且我已经能够进入一个 bash shell。问题是它没有像(我认为)用login
. 我知道我有办法弄乱环境,但我还没有看到一种方法给它一个“默认”配置,即使这样的事情也是有意义的。
问问题
367 次
2 回答
1
一些想法:
首先,在大多数情况下,使用可插入登录架构 PAM 会更好。这将确保所有启用 PAM 的应用程序和服务都可以使用身份验证方法(例如 ssh),并且无法使用常规服务绕过它。
如果您真的想替换login
我建议您自己使用unsetenv
每个环境变量集来清除环境(您可以使用environ
来确定已经设置的变量)。清理环境后,您可以使用exec
-like 调用将程序替换为bash
,在此上下文中环境将保持不变。您可能想要添加命令行参数-l
来启动 bash,因为它会被 .bashrc 调用login
。
Bash 在启动时运行一些初始化脚本。您可以检查/etc/profile
,/etc/bashrc
和类似文件以查找您不想设置的环境变量。
如果你想依赖env
(不是那么糟糕,因为它应该存在于那里的每个 linux 系统上)你可以使用env -i bash
在干净的环境中调用 bash。
于 2013-08-08T20:09:40.700 回答
0
当操作系统调用 main(int argc, char *argv[], char *envp[]) 时,第三个参数包含环境。因此,只需保存它的副本,直到您需要调用 bash。
于 2013-08-09T03:57:07.323 回答