其他论坛以不同的方式提出了这一问题。但是还没有一个很好的解释为什么你不能在bash中做下面的事情。
#!/bin/bash
command1
SWITCH_USER_TO rag
command2
command3通常,建议的方法是
#!/bin/bash
command1
sudo -u rag command2
sudo -u rag command3但是,为什么在bash中无法在bash脚本执行过程中更改为不同的用户,并以不同用户的身份执行其余的命令?
发布于 2013-08-14 20:56:07
内核提供man 2 setuid和朋友。
现在,它可以用于调用进程。更重要的是,你不能提升你的特权。这就是为什么su和sudo设置了SETUID位,因此它们总是以最高权限(root)运行,并相应地降至所需的用户。
这种组合意味着您不能通过运行其他程序来更改shell UID (这就是为什么您不能期望sudo或任何其他程序这样做),并且您不能(作为shell)自己执行它,除非您愿意以root用户或您想要切换的同一个用户的身份运行,这是没有意义的。而且,一旦你放弃特权,就没有办法回去了。
发布于 2013-08-15 04:29:16
通过执行"sh“或-u命令,可以使用"sudo -u ram sh”命令更改为"ram“用户。“退出”命令将使您返回到原始用户。
https://unix.stackexchange.com/questions/86778
复制相似问题