sudo作为其环境的另一个用户

用户名

$ whoami
admin
$ sudo -S -u otheruser whoami
otheruser
$ sudo -S -u otheruser /bin/bash -l -c 'echo $HOME'
/home/admin

为什么即使将bash作为登录shell调用也没有$HOME设置为/home/otheruser

具体来说,/home/otheruser/.bashrc不是来源。此外,/home/otheruser/.profile不是来源。-(/home/otheruser/.bash_profile不存在)

帕维尔·西默达(PavelŠimerda)

sudo只需使用即可调用登录shell -i如果未指定命令,则将显示登录shell提示,否则,将获得命令的输出。

示例(登录shell):

sudo -i

示例(具有指定的用户):

sudo -i -u user

示例(带有命令):

sudo -i -u user whoami

示例(打印用户的$HOME):

sudo -i -u user echo \$HOME

注意:反斜杠字符可确保美元符号到达目标用户的外壳,并且不会在调用用户的外壳中解释。

我刚刚检查了最后一个带有strace的示例,它可以告诉您确切的情况。如下所示,输出显示出正在使用shell--loginshell命令来调用shell ,就像您对bash的显式调用一样,但是sudo可以做自己的工作,例如设置$HOME

# strace -f -e process sudo -S -i -u user echo \$HOME
execve("/usr/bin/sudo", ["sudo", "-S", "-i", "-u", "user", "echo", "$HOME"], [/* 42 vars */]) = 0
...
[pid 12270] execve("/bin/bash", ["-bash", "--login", "-c", "echo \\$HOME"], [/* 16 vars */]) = 0
...

我注意到您正在使用-S,但我认为这通常不是一种好方法。如果要以其他用户身份运行命令而不通过键盘执行身份验证,则可能要改用SSH。它适用于localhost其他主机,并提供无需任何交互式输入即可工作的公钥身份验证。

ssh user@localhost echo \$HOME

注意:SSH不需要任何特殊选项,因为SSH服务器始终创建一个登录外壳程序,以供SSH客户端访问。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

以sudo身份作为另一个用户运行cd时出现问题

来自分类Dev

获取另一个用户的环境变量?

来自分类Dev

sudo访问另一个用户的帐户

来自分类Dev

rsync作为另一个用户

来自分类Dev

Ansible SSH(一个用户)和Sudo(另一个)

来自分类Dev

如何使用我的sudo权限确认另一个用户的sudo权限?

来自分类Dev

以 root 用户身份以另一个用户身份执行 sudo Bash 脚本

来自分类Dev

将对象作为参数从用户窗体传递到另一个用户窗体

来自分类Dev

如何在 Linux 的主文件夹中将命令作为另一个用途运行 + 使用用户的环境/配置变量?

来自分类Dev

将python子进程用作另一个用户时的错误环境

来自分类Dev

如何将环境变量导出为另一个用户

来自分类Dev

如何sudo git clone并安全地更改对另一个用户的权限

来自分类Dev

将文件移动到另一个用户的主目录(没有sudo)?

来自分类Dev

以另一个无密码用户身份运行命令-sudo失败?

来自分类Dev

创建目录和子目录作为另一个用户

来自分类Dev

如何将用户输入作为变量返回,以供另一个脚本调用?

来自分类Dev

用户表单输入一个值,被转换并自动进入另一个表单输入作为值

来自分类Dev

在模型上的find()在一个环境中将id作为字符串给出,在另一个环境中将int给出

来自分类Dev

从另一个VM(Virtualbox)访问开发环境

来自分类Dev

在另一个环境上调用capistrano任务

来自分类Dev

调用函数传递另一个结构作为参数后,结构的元素会失去其值

来自分类Dev

如何在将C ++宏作为参数传递给另一个宏之前对其进行扩展

来自分类Dev

如何通过使用其第一列作为新的第一行从另一个矩阵创建一个新矩阵?

来自分类Dev

如何拥有一个可以“ su”到另一个用户但不允许其“ su”的用户

来自分类Dev

无密码sudo适用于一个用户,但不适用于另一个用户

来自分类Dev

一个非root用户如何将sudo转换为另一个没有密码的非root用户?

来自分类Dev

Ansible:如何使用“ sudo su -c <COMMAND> <USER>”以另一个用户身份执行命令?

来自分类Dev

嵌入另一个窗口作为QWidget

来自分类Dev

ICollection与另一个接口作为类型的接口

Related 相关文章

  1. 1

    以sudo身份作为另一个用户运行cd时出现问题

  2. 2

    获取另一个用户的环境变量?

  3. 3

    sudo访问另一个用户的帐户

  4. 4

    rsync作为另一个用户

  5. 5

    Ansible SSH(一个用户)和Sudo(另一个)

  6. 6

    如何使用我的sudo权限确认另一个用户的sudo权限?

  7. 7

    以 root 用户身份以另一个用户身份执行 sudo Bash 脚本

  8. 8

    将对象作为参数从用户窗体传递到另一个用户窗体

  9. 9

    如何在 Linux 的主文件夹中将命令作为另一个用途运行 + 使用用户的环境/配置变量?

  10. 10

    将python子进程用作另一个用户时的错误环境

  11. 11

    如何将环境变量导出为另一个用户

  12. 12

    如何sudo git clone并安全地更改对另一个用户的权限

  13. 13

    将文件移动到另一个用户的主目录(没有sudo)?

  14. 14

    以另一个无密码用户身份运行命令-sudo失败?

  15. 15

    创建目录和子目录作为另一个用户

  16. 16

    如何将用户输入作为变量返回,以供另一个脚本调用?

  17. 17

    用户表单输入一个值,被转换并自动进入另一个表单输入作为值

  18. 18

    在模型上的find()在一个环境中将id作为字符串给出,在另一个环境中将int给出

  19. 19

    从另一个VM(Virtualbox)访问开发环境

  20. 20

    在另一个环境上调用capistrano任务

  21. 21

    调用函数传递另一个结构作为参数后,结构的元素会失去其值

  22. 22

    如何在将C ++宏作为参数传递给另一个宏之前对其进行扩展

  23. 23

    如何通过使用其第一列作为新的第一行从另一个矩阵创建一个新矩阵?

  24. 24

    如何拥有一个可以“ su”到另一个用户但不允许其“ su”的用户

  25. 25

    无密码sudo适用于一个用户,但不适用于另一个用户

  26. 26

    一个非root用户如何将sudo转换为另一个没有密码的非root用户?

  27. 27

    Ansible:如何使用“ sudo su -c <COMMAND> <USER>”以另一个用户身份执行命令?

  28. 28

    嵌入另一个窗口作为QWidget

  29. 29

    ICollection与另一个接口作为类型的接口

热门标签

归档