允许用户以 sudo 身份运行脚本,并在脚本中使用 sudo 命令

允许用户以 sudo 身份运行脚本,并在脚本中使用 sudo 命令

因此,我创建了一个名为 Linux-Permissions 的脚本,位于 /usr/local/bin 中。脚本中有一些 sudo cp 命令。我需要一个用户能够以 sudo 身份运行该命令,我可以通过将其添加到 sudoers 文件中来实现:username ALL=(root) /usr/local/bin/Linux-Permissions。但是,在他输入密码以运行该命令后,它会再次要求他输入密码以运行脚本中的 sudo cp。由于他没有权限以 sudo 身份运行 cp,因此此操作失败。如果这很重要的话,脚本中的 sudo 命令位于选择菜单中。

答案1

因此,您已成功识别问题;将这样的条目添加到sudoers 仅有的能够/usr/local/bin/Linux-Permissions使用 sudo 运行,因此所有其他 sudo 命令都将失败,因为即使脚本以 root 权限运行,sudo 仍然会认为它是由普通用户执行的。

解决这个问题可能有几种不同的方法,但我会修改脚本,使其仅sudo在以非 root 用户身份运行时才使用该命令。这是一个非常简单的脚本示例:

#!/usr/bin/env bash
  
if [ "$USER" != "root" ]; then
  SUDO_CMD="sudo "
fi

$SUDO_CMD ls

在该示例中,如果以普通用户身份运行脚本,ls则将使用 运行命令,但如果环境变量设置为,sudo则不会使用,如果您使用 运行脚本,就会出现这种情况。sudo$USERrootsudo

相关内容