不使用 sudo 模拟用户初始登录

不使用 sudo 模拟用户初始登录

我正在编写一个脚本来连接 2 个第三方程序。 (Datadog 和 AWS)

数据挖掘脚本用于sudo -u运行我的脚本。

如果未模拟初始登录,我需要从中检索数据的脚本将出现段错误。

数据挖掘脚本没有权限sudo

我可以像这样重现错误:

[me] ~$ sudo -u dd-agent aws
[me] ~$ echo $?
139

当然,如果我执行sudo -iu并运行该命令,它就可以正常工作。

是否可以模拟初始登录而不通过sudo

答案1

对于登录模拟(无需通过“sudo -i”),您必须使用“su”命令。

检查手册页中的参数“-”:

-, -l, --login
          Starts the shell as login shell with an environment similar to a real login:

             o      clears all environment variables except for TERM

             o      initializes the environment variables HOME, SHELL, USER, LOGNAME, PATH

             o      changes to the target user's home directory

             o      sets argv[0] of the shell to '-' in order to make the shell a login shell

另外,你必须使用这里-文档

例如,您可以使用“id”命令检查此打印登录用户的 ID:

#\bin\bash

id

su - user <<EOF
userPassword
id
#here you can execute your script

EOF

id

另外,如果您的程序出现分段错误......它会尝试访问不属于该程序的另一个内存段。

相关内容