允许bash脚本以root身份运行,而不是sudo

PK001

我是这里的新手,也是bash / linux的新手。

我的老师给我分配了一个任务,使脚本仅在您是“真正” root时才可以运行,而在您使用sudo时不可以。经过两个小时的搜索和尝试,我开始认为他在欺骗我。只允许root是容易的,但是如何排除使用sudo运行root的用户呢?

这就是我所拥有的:

if [[ $EUID -ne 0 ]]; then
  echo "You must be root to run this script."
  exit
fi
Arkadiusz Drabczyk

我能想到的唯一方法是检查SUDO_*sudo设置环境变量之一

#!/usr/bin/env sh

if [ "$(id -u)" -eq 0 ]
then
    if [ -n "$SUDO_USER" ]
    then
        printf "This script has to run as root (not sudo)\n" >&2
        exit 1
    fi
    printf "OK, script run as root (not sudo)\n"
else
    printf "This script has to run as root\n" >&2
    exit 1
fi

请注意,该解决方案当然不是面向未来的,因为您无法在运行脚本之前阻止任何人设置变量:

$ su
Password:
# SUDO_USER=whatever ./root.sh
This script has to run as root (not sudo)
# ./root.sh
OK, script run as root (not sudo)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何确定是否使用 bash 脚本以 root/sudo 身份运行脚本/命令

如何找出是否使用bash脚本以root / sudo身份运行脚本/命令

为什么脚本以用户身份而不是cron身份运行?

从sudo提升脚本以标准用户身份运行命令

确保bash脚本以脚本指定的用户身份运行

以root用户身份运行bash脚本,该脚本中具有sudo命令

使可执行的bash脚本以sudo特权运行?

从IntelliJ以root身份运行bash脚本

计划自动运行shell脚本而不是以root身份运行

如何检查bash脚本中是否以root身份运行

无法在 PHP Exec 中以 root 身份运行 BASH 脚本

单线bash命令可以以root身份正常运行,但不能以sudo身份运行[语法问题]

使Python脚本以root特权运行

为什么bash脚本中的功能以标准用户身份运行时以root身份(使用sudo)抛出语法错误?

以 root 用户身份以另一个用户身份执行 sudo Bash 脚本

登录时运行脚本,并以用户登录身份(而不是root用户)运行脚本

从bash脚本运行sudo而又无法以特权身份运行脚本的最佳方法是什么?

如何在chroot监狱中以root身份而不是sudo来运行命令?

允许用户以root用户身份运行命令

作为sudo运行bash脚本

允许包含 sudo 的 shell 脚本运行

从python脚本以超级用户身份运行命令

在脚本中运行sudo会将uid设置为当前用户,而不是root uid

Sudo命令以root身份而不是指定用户身份执行

为什么shell脚本中的“ sudo su”不以root用户身份运行脚本的其余部分?

使用sudo运行bash脚本,以普通用户身份使用某些命令

停止在以sudo运行的脚本中间成为root

以root身份运行的Perl脚本(通用)

以root身份运行bash安装脚本-如何处理普通用户的文件?