检查脚本是否在 Linux 中以 root 用户身份运行

2023-10-31

有时,shell 脚本需要以 root 用户身份运行才能以管理员权限执行某些任务。通常,可以使用 Sudo 命令来完成该任务。如果在某些情况下您仍然需要强制用户以 root 用户身份运行脚本,您可以向脚本添加代码来检查脚本是否以 root 用户身份运行。

检查 shell 脚本是否以 root 用户身份运行

在 shell 脚本的开头添加以下代码以检查脚本是否以 root 用户身份运行。如果该脚本作为非 root 帐户执行,它将以状态码 1 退出。

1
2
3
4
5
6
#!/usr/bin/env bash
 
if [ "$EUID" -ne 0 ];then
    echo “请以 root 用户身份运行此脚本”
    exit 1
fi

这里的EUID是存储当前登录用户的用户 ID (UID) 的系统变量。 “root”用户的 UID 始终是0在 Linux 系统上。

除了使用 UID 之外,您还可以匹配登录的用户名。这whoami命令提供当前登录的用户名。下面的脚本将检查脚本是否以 root 用户身份运行。

1
2
3
4
5
6
#!/usr/bin/env bash
 
if [ `whoami` != 'root' ];then
    echo “请以 root 用户身份运行此脚本”
    exit 1
fi

检查 shell 脚本是否以非 root 用户身份运行

有时,脚本需要以非 root 帐户运行。在这种情况下,您可以添加以下代码片段来检查用户帐户,并且仅当脚本以普通用户身份运行时才继续。

1
2
3
4
5
6
#!/usr/bin/env bash
 
if [ "$EUID" -eq 0 ];then
    echo “请以非 root 用户身份运行此脚本”
    exit 1
fi

结论

在本快速操作指南中,您了解了如何在 shell 脚本中添加限制以 root 用户或非 root 用户身份运行。如果它正在运行不同的用户,脚本将立即退出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查脚本是否在 Linux 中以 root 用户身份运行 的相关文章

  • 如何使用 root 在 Android 4.2 及更高版本上切换飞行模式?

    众所周知 在 Android 4 2 上 只有系统应用程序可以切换飞行模式 但我认为它必须适用于 root 设备 我想在我的应用程序中将其实现为具有 Build VERSION SDK INT gt 17 的 root 设备 如何在 And
  • 如何向我的 OSX 应用程序添加 Root 权限?

    我以 root 用户身份创建了一个应用程序 它运行良好 在 root 用户中 当我与标准用户尝试相同的应用程序时 它没有成功 然后我知道我需要 root 权限才能运行该应用程序 我谷歌了几天但没有得到它 我读过一些问题和苹果文档 哪个是 h
  • 检查用户是否是 root

    如何在 PHP 脚本中验证用户是否是 root 命令是什么 我尝试过类似的事情 exec su l login lt echo password 但是su命令无法接收密码 请注意 该机器与互联网隔离 因此如果需要 我可以以 root 身份运
  • Android 无需 root 即可访问 ARP 表

    最近在做一个Android项目 需要访问ARP表 要求之一是避免任何需要 root 设备的方法 所以 我的问题是 有没有办法在不root设备的情况下访问android中的ARP表 目前我发现大多数方法都使用 proc net arp 来访问
  • mysql root权限更新information_schema错误

    当我尝试从 information schema 数据库更新一张表 GLOBAL VARIABLES 时 我收到错误 Access denied for user root localhost to database information
  • adb pull -> 未找到设备

    我有一个 root 的手机并在 root 模式下运行 adb 我使用adb shell成功访问手机 我可以浏览目录 甚至是那些需要 root 的目录 当我尝试使用时 adb pull data data my app path databa
  • 权限如何在 mac 上运行 sbin 命令?

    我正在使用 mac os x 并且我正在尝试运行shutdown命令但它说我不是超级用户 不过 我可以跑ifconfig无需成为超级用户 这两个命令都在 sbin 中 我的 PATH 环境变量包括 sbin 这就是为什么我可以运行 ifco
  • Xcode 9.2 中出现“警告:无法为签名者构建到自签名根的链”警告

    我正在尝试将 Xcode 项目迁移到另一台计算机 它向我发出警告 警告 无法为签名者构建到自签名根的链 并且当它运行时 它会立即崩溃 类似于此堆栈溢出中显示的内容 应用程序在模拟器上运行 但在 iPhone 上不起作用 dyld abort
  • 如何在 python 中创建非 root 记录器

    我正在尝试使用logging getLogger child 在子python模块中创建一个非根记录器 但我收到错误 找不到记录器 child 的处理程序 我正在尝试将父模块日志记录到父日志文件中 父模块将创建子模块的实例 我希望子模块写入
  • Android:以编程方式将 apk 复制到 /system/app

    我正在尝试从我的 java 代码安装系统应用程序 但到目前为止 我还没有取得任何成功 以下是我到目前为止所做的 我的设备已植根 我的 安装程序 应用程序作为系统应用程序安装 手动将其复制到 system app 我已经使用平台密钥签署了安装
  • findViewById(R.id.content) 和 getRootView() 之间的区别[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions findViewById R id
  • 如何知道节点是 Virtual TreeView 中的根节点?

    我正在使用虚拟树视图 有没有可靠的方法来知道节点是否是根节点 我尝试使用 if not Assigned Node Parent then Output This is root else Output This is not root 但
  • adb shell su 可以工作,但 adb root 不能

    我对解锁的 Galaxy S3 SGH T999 进行了 root 操作 现在 我正在努力奔跑adb root从 Windows命令提示符 但是 我得到了adbd cannot run as root in production build
  • 如何在 sudo 上运行 Anaconda Python

    目前正在使用 AWS 对机器学习项目运行一些测试 我想在没有互联网的情况下运行Python脚本 通过root 因为互联网带宽极其有限 我尝试通过执行以下操作来运行 convnets py 脚本 sudo python convnets py
  • 如何使用BetterAuthorizationSample? - 可可

    我正在尝试使用 BetterAuthorizationSample 而不是采用所谓的 恶意 方式使用 setuid 来获取 root 权限 目前我正在使用 AuthorizationCreate 使用 BLAuthentication 获得
  • 如何重定向到 root - public/index.html?

    我希望重定向到我的 application public 文件夹中的index html def get current user current user current user if current user nil redirect
  • PHP 文档根目录

    只是为了确认 正在使用 SERVER DOCUMENT ROOT 与使用相同 in HTML 例如 如果当前文档是 folder folder folder index php 我可以使用 在 HTML 中 从根开始 somedoc htm
  • 使用 PHP 显示外部 Web 根文件夹中的所有图像

    我想显示存储在我的网络根文件夹之外的所有图像 请帮我 我只能重复显示一张图像 例如 如果我的文件夹中有 5 张图像 则只有一张图像在我的浏览器上显示 5 次 请帮我解决这个问题 我已经研究这个问题一个多月了 我是新手 帮助 谢谢 这是我正在
  • android中无法绕过的Root检测方法

    我知道在 root 设备上运行拥有敏感信息的应用程序根本不安全 因此 开发人员通常在这种情况下进行 root 检测 如果发现设备已 root 则该应用程序将不会安装 一切都好 开发者在root检测中使用的主要技术是检查superuser a
  • 放弃root权限

    我有一个以 root 身份启动的守护进程 因此它可以绑定到低端口 出于安全原因 初始化后我非常希望它放弃 root 权限 谁能指点我已知正确C 中的一段代码可以做到这一点 我阅读了手册页 研究了不同应用程序中的各种实现 它们都是不同的 其中

随机推荐

  • SRCNN以DIV2K数据集进行训练时,.h5文件、PSNR评价指标、运行结果

    由于是从Word文档直接复制过来 其中格式如果乱码或者不通顺 请评论区告知我 1 对于 h5文件的大小计算 输入图片后 由于大小不同 无法从图片直接计算 但整合后数组有两个 一个arrlabel 一个arrdata 1 其中 arrlabe
  • java 对象属性复制,将一个对象的属性值赋值给另一个对象, 属性名需要相同

    java 对象属性复制 将一个对象的属性值赋值给另一个对象 属性名需要相同 关键代码 import org springframework beans BeanUtils BeanUtils copyProperties a b demo
  • 微信小程序--实现分享功能

    本篇文章的目标是实现分享小程序中的单张页面给其他用户 并且打开分享后的页面拥有返回按钮 最终的效果 1 封装一个分享的组件
  • 文件的名字带有特殊符号下载报错问题

    在这里插入图片描述 其中encodeURI 主要用于整个URI 例如 http www jxbh cn illegal value htm 而encodeURIComponent 主要用于对URI中的某一段 例如前面URI中的illegal
  • 六级(2020/12-2) Text1

    Vegetarians would prefer not to be compelled to eat meat Yet the reverse compulsion 强迫 is hidden in the proposals for a
  • char与wchar_t(TCHAR)之间的相互转换

    char与wchar t TCHAR 之间的相互转换 vc 2005以后 Visual studio 编译器默认的字符集为Unicode VC中很多字符处理默认为宽字符wchar t L Holle 如CString的getBuffer 而
  • 玩转Openwrt(二) — 配合Android手机打造无线音乐播放器

    前一篇文章大概介绍了刷入带ADSL驱动的openwrt以及简单的配置 这次就总结下一个好玩的应用 使用android手机 mpd打造一台无线音乐播放器 所需装备 DB120或者RG100A或者其它BCM6358芯片的路由一台 USB声卡一件
  • 09.语义分割和数据集

    语义分割 PDF part 2 13 pdf d2l ai 视频 46 语义分割和数据集 动手学深度学习v2 哔哩哔哩 bilibili 语义分割 semantic segmentation 问题重点关注于如何将图像分割成属于不同语义类别的
  • 第13章Stata Logistic回归分析

    目录 13 1二元Logistic回归分析 案例延伸 延伸1 设定模型预测概率得具体值 延伸2 使用Probit模型对二分类因变量进行拟合 13 2多元Logistic回归分析 案例延伸 延伸 根据模型预测每个样本视力低下程度的可能性 13
  • Java输入流之BufferReader和Scanner的用法!

    在Java中 我们都知道Java的标准输入串是System in 但是我们却很少在Java中看到谁使用它 这是因为我们平时输入的都是一个字符串或者是一个数字等等 而System in提供的read方法是通过字节来读取数据的 所以对我们来说太
  • react hooks的用法

    一 页面初始化的结构 export const SearchPanel gt 二 声明字段的类型 请求字段类型 const param setParam useState name personId 四 写请求接口的代码 useEffect
  • java随机选人,实现对文本文件操作

    理解 全程无报错 IDEA全绿通过 每步都有注解 因为防止 main主代码 太长 将很多方法都封装了 编程小白 有不足的地方希望能指正出来吧 好的处理点 我觉得自己比较好的地方是 将页面方法返回值 设置为集合 这样打印页面的时候 能返回路径
  • CTF-Crypto题目分析__1

    CTF Crypto题目分析 1 以下所有题目提交flag的格式为SeBaFi 第一题 考察base36编码 下载附件后可得 597142166468670232704404065453992639482284357949191392729
  • Java 敏感词过滤工具类及文本

    最主要最主要的文本在此 链接 https pan baidu com s 163mWeLecBdV1tA1WstXnuw pwd yyds 提取码 yyds 复制这段内容后打开百度网盘手机App 操作更方便哦 工具类代码 就是解析文本进行过
  • 基于PyQT5的学生成绩管理系统(运行简单,简单有文档,带注释,含源码)

    自己做的项目 全CSDN唯一 禁止转载 基于pyqt5的学生成绩管理 带登录注册 基本的学生信息的增加 修改 删除 查询和选课 课程信息的增加 修改 删除 查询 成绩的添加 修改 查询等功能 用pycharm导入 安装依赖包 配置好数据库就
  • Java运算符、流程控制

    Java运算符 流程控制 运算符 算术运算符 public class Demo1 public static void main String args 算术运算符 int x 2046 x x 100 100 System out pr
  • 如何检查 MacOS 版本(GUI+CLI)

    macOS 12 是 Apple 团队的最新版本 它的代号是蒙特雷 源自蒙特雷南部海岸的一片未绘制地图的荒野地区 这是最先进的桌面操作系统 功能和美观达到了新的水平 本教程将介绍如何从桌面和命令行界面检查 macOS 版本 检查 MacOS
  • 如何在 Linux 中编译和安装最新的 Redis

    Redis 是一种开源内存数据结构存储 可用作数据库 缓存和消息代理 它以其高性能 可扩展性和易用性而闻名 在本文中 我们将指导您完成在 Linux 上编译和安装最新 Redis 版本的过程 在开始之前 请确保您拥有 Linux 服务器的管
  • 如何计算 Linux 中文件的行数

    有时您可能需要计算 Unix Linux 系统中文件的总行数 本教程帮助您通过命令行使用多种方法来统计 Linux 系统中文件的行数 计算行数wc Command The wc命令是 Unix Linux 系统的 字计数器 这是 Linux
  • 检查脚本是否在 Linux 中以 root 用户身份运行

    有时 shell 脚本需要以 root 用户身份运行才能以管理员权限执行某些任务 通常 可以使用 Sudo 命令来完成该任务 如果在某些情况下您仍然需要强制用户以 root 用户身份运行脚本 您可以向脚本添加代码来检查脚本是否以 root