我想在 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
}