bash在su sudo之前找到最初启动脚本的用户

时间:2014-03-02 16:09:24

标签: linux bash shell sudo su

我有一个必须以root身份运行的bash shell脚本。如果用户启动它,则会要求他们输入root密码,并在子shell中重新运行脚本。 ./$0&

假设名为“John”的用户启动该脚本。在他提供root密码之后,脚本以root用户身份重新运行,但是如何从脚本本身告诉谁最初启动脚本(John)?目前我正在使用原始启动器转储文件,我稍后可以参考,但这很难看。

我考虑的其他选项正在使用流程列表,但同样,必须有一个更优雅的解决方案。

GNU bash,版本4.2.45(2)-release(x86_64-slackware-linux-gnu)

3 个答案:

答案 0 :(得分:4)

您可以使用$SUDO_USER变量。

#!/bin/bash

echo $SUDO_USER

输出

[use1r@host]$ ./sudo-print.sh

[user1@host]$ sudo ./sudo-print.sh
user1

答案 1 :(得分:0)

尝试使用SUID设置文件用于执行的权限。如果你幸运的话,这可能会在执行期间保留你的UID,那么你可以更容易地刮掉你的UID。

答案 2 :(得分:-1)

检查脚本的父进程ID ...父进程的所有者应该是执行该文件的用户。

要获得ppid,您可以使用

echo $$

或者您可以尝试在yoru bash脚本中包含以下代码以返回原始用户

who am i