切换用户并使用 sudo 从 bash 脚本运行命令

切换用户并使用 sudo 从 bash 脚本运行命令

我有一个需要使用 sudo 运行的命令,但首先我需要脚本来 su 到管理员帐户并请求密码。

目前,只有当我以新用户身份调用第二个脚本时,我才能使其正常工作,如下所示:

启动.sh

#!/bin/bash

# how can we just put the script here instead of a separate file?
su -c "sudo -S ./.launchStage2.sh" -m admin_user

.launchStage2.sh

#!/bin/bash
source /root/pyusb/bin/activate
cd /root/pyusb
python stormLauncher.py
deactivate
cd ~

有没有办法删除第二个脚本并从第一个脚本中运行它?额外的:)目前它要求输入密码两次,一次用于 su,一次用于 sudo,有没有办法只要求一次?

编辑:我不希望我的常规用户帐户位于 中sudo,而是希望使用需要时使用的单独管理员帐户。主要原因是我是课堂实验室的老师,如果学生以某种方式访问​​我的常规帐户,他们仍然不会有 sudo。不确定这是否合理,但这是我的组织的 IT 部门向我推荐的,而不是这个问题的一部分。

答案1

该脚本可以调用自身:

if ! [ admin_user = "$USER" ] && ! [ root = "$USER" ]; then
    su -c "$0" -m admin_user
elif ! [ root = "$USER" ]; then
    sudo "$0"
else
    source /root/pyusb/bin/activate
    # [...]
fi

相关内容