在 shell 函数中更改用户?

在 shell 函数中更改用户?

我想在 shell 函数中更改用户。我猜在这种封闭的函数中更改用户是不可能的,但是还有其他方法可以实现这样的功能吗?:

myFunction() {
    user=$1
    echo "Changing user to $user"
    su - $user
    whoami
    [do my stuff here for this user]
    return 0
}

答案1

您需要将想要由“用户”运行的命令放在脚本中,然后使用 运行该脚本sudo,您应该使用它而不是su

例如:

myFunction() {
    user="$1"
    tmpfile=$(mktemp)
    echo "date" >> $tmpfile
    # ... put other stuff in tmpfile
    sudo -u $user $tmpfile
    rm $tmpfile
}

相关内容