检查用户是否是 C 中的 root?

2024-01-19

如何验证用户是否是root?


通常测试用户是否为 root 是错误的。 POSIX 甚至不需要 root 用户,而是将其留给实现来确定权限如何工作。代码如:

if (i_am_root) do_privileged_op(); else print_error();

使用高级权限模型确实会惹恼用户,其中不需要 root 即可执行必要的特权操作。我记得在 Linux 上刻录 CD 的早期,我不得不破解所有的cdrecordsource 删除所有无用的检查,看看它是否以 root 身份运行,当它在具有读取权限的情况下运行良好时/dev/sga.

相反,你应该始终attempt您需要执行的特权操作,并检查EPERM或类似的情况,如果它无法通知用户他们没有足够的权限(也许应该重试以 root 身份运行)。

检查 root 有用的一种情况是检查您的程序是否被调用“suid-root”。一个合理的测试是:

uid_t uid=getuid(), euid=geteuid();
if (uid<0 || uid!=euid) {
    /* We might have elevated privileges beyond that of the user who invoked
     * the program, due to suid bit. Be very careful about trusting any data! */
} else {
    /* Anything goes. */
}

请注意,我允许以下可能性(牵强,但最好是偏执):获取 uid/euid 的任何一个调用都可能失败,并且在失败的情况下,我们应该假设我们是 suid 并且恶意用户以某种方式导致系统调用失败,试图隐藏我们是suid。

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

检查用户是否是 C 中的 root? 的相关文章

  • c# 从另一个类中的另一个静态事件引发事件

    需要帮助从另一个班级调用事件 我有已声明事件的课程 public class MxPBaseGridView GridView public event AddNewItemsToPopUpMenuEventHandler AddNewIt
  • XPATH 查询、HtmlAgilityPack 和提取文本

    我一直在尝试从名为 tim new 的类中提取链接 我也得到了解决方案 给出了解决方案 片段和必要的信息here https stackoverflow com questions 2982862 extracting a table ro
  • 司机和提供商之间的区别

    数据库中的驱动程序和提供程序有什么区别 有没有解释一下 不胜感激 样本 ADO NET driver for MySQL vs providerName System Data EntityClient 来自 MSDN 论坛 驱动程序是安装
  • 将设置函数(setter)标记为 constexpr 的目的是什么? [复制]

    这个问题在这里已经有答案了 我无法理解将 setter 函数标记为的目的constexpr 自 C 14 起这是允许的 我的误解来自以下情况 我使用 constexpr c tor 声明一个类 并且我将通过创建该类的 constexpr 实
  • 将下拉列表与字典绑定

    我将字典绑定到下拉列表 举例来说 我的字典中有以下项目 Test1 123 Test2 321 我希望下拉文本采用以下格式 Test1 Count 123 Test2 Count 321 我沿着以下路径走 但没有运气 MyDropDown
  • C 中“complex”的默认类型

    根据我读过的文档 C99 和更高版本的支持float complex double complex and long double complex作为复杂类型 但是 此代码在使用时编译时不会发出警告gcc Wall Wextra inclu
  • C++ 将联合强制转换为其成员类型之一

    以下对我来说似乎完全符合逻辑 但不是有效的 C 联合不能隐式转换为其成员类型之一 有人知道为什么不这样做的充分理由吗 union u int i char c function f int i int main u v v i 6 f v
  • 将日期时间转换为指定格式

    我有这个日期格式yy MM dd HH mm ss ex 12 02 21 10 56 09 问题是 当我尝试使用以下代码将其转换为不同格式时 CDate 12 02 21 10 56 09 ToString MMM dd yyyy HH
  • 使用 C# 中的 Google 地图 API 和 SSIS 包获取行驶距离

    更新 找到了谷歌距离矩阵并尝试相应地修改我的代码 我在这里收到无效参数错误 return new GeoLocation dstnc uri ToString catch return new GeoLocation 0 0 https 基
  • 如何使用递归查找数字中的最小元素 [C]

    好的 所以我正在准备我的 C 考试 当谈到递归时我有点卡住了我是大学一年级的学生 这对我来说似乎有点困难 练习要求在给定的数字中使用递归函数我需要找到最小的元素 例如 52873 是 2 程序需要打印 2 include
  • Xamarin - SignalR 挂在连接上

    我正在尝试将我的 Xamarin 应用程序连接到托管在 Azure 上的 SignalR 后端 我遇到的问题是每次我在 HubConnection 上调用 StartAsync 时 它都会挂起客户端并且请求永远不会完成 我尝试通过应用程序进
  • Resharper:IEnumerable 的可能多重枚举

    我正在使用新的 Resharper 版本 6 在我的代码中的几个地方 它给一些文本加了下划线 并警告我可能存在IEnumerable 可能的多重枚举 我理解这意味着什么 并在适当的情况下采纳了建议 但在某些情况下 我不确定这实际上是一个大问
  • 为什么不能调用带有 auto& 参数的 const mutable lambda?

    include
  • 无法为 wsdl 文件创建服务引用

    I have wsdl文件和xsd我本地机器上的文件 我想在项目中添加服务引用 我没有网络服务 我只有wsdl file 我收到以下错误 The document was understood but it could not be pro
  • 使用多线程进行矩阵乘法?

    我应该使用线程将两个矩阵相乘 有两件事 当我运行程序时 我不断得到 0 我还收到消息错误 对于每个错误 它在粗体行上显示 警告 从不兼容的指针类型传递 printMatrix 的参数1 我尝试打印输出 还要注意 第一个粗体块 这是我解决问题
  • Linq.Select() 中的嵌套表达式方法调用

    I use Select i gt new T 每次手动点击数据库后将我的实体对象转换为 DTO 对象 以下是一些示例实体和 DTOS 用户实体 public partial class User public int Id get set
  • Xamarin.Forms UWP 项目中标题栏和选项卡之间令人恼火的空白

    我几乎是新手Xamarin Forms我正在开发一个相当简单的跨平台应用程序 该应用程序在 Android 中显示得足够好 但在 UWP 中却出现了一个愚蠢的空白 该项目由一个 TabbedPage 组成 其中包含 4 个 Navigati
  • 这种尺寸对齐是如何工作的

    对于所提供的评论 我无法理解以下代码 这段代码的作用是什么 以及等效的代码是什么8 aligned segment size must be 4 aligned attr gt options ssize 3 Here ssize is o
  • 如何在c linux中收听特定接口上的广播?

    我目前可以通过执行以下操作来收听我编写的简单广播服务器 仅广播 hello int fd socket PF INET SOCK DGRAM 0 struct sockaddr in addr memset addr 0 sizeof ad
  • SQL Server“未找到网络路径”在不同环境中随机且不频繁地发生

    类似 如果不是同一个问题 随机遇到网络路径未找到异常 https stackoverflow com questions 38696448 network path not found exception encountered rando

随机推荐

  • Symfony2,原则 2:getResult 对象

    posts em gt find Application BlogBundle Entity Post 1 print r posts 为什么我得到了 Barii BlogBundle Entity Post Object id Barii
  • 欧拉计划#29

    嗯 解决了这个问题之后通过天真 的STL集 我正在阅读论坛条目 在那里我找到了这个条目 include
  • Java Swing JToolBar

    我创造了JToolBar Java 摇摆 我在框架上设置了一个背景图像 其中包含JToolBar 我想要我的JToolBar是透明的 以便保持在框架上的图像应该是可见的 我在用setOpaque false 但它对我的工具栏没有任何影响 以
  • 重置子元素的不透明度 - Maple 浏览器(三星电视应用程序)

    我在创建具有子元素的透明元素时遇到问题 使用此代码 子元素从父元素获取不透明度值 我需要将子元素的不透明度重置 设置为任意值 参考浏览器是Maple Browser for a Samsung TV Application video ca
  • 如何在material-ui中将焦点设置在MenuItem上

    我正在尝试以编程方式将焦点设置在 激活 material ui 中菜单组件内的菜单项之一上 我可以通过按 Tab 键手动执行此操作 但我需要以编程方式执行此操作以响应按键事件 menu menu
  • 如何在 Telerik ASP .NET MVC 网格上将布尔值从 true/false 转换为 yes/no

    我希望能够更改 ASP NET MVC 中不可编辑的 Telerik AJAX 网格上不可编辑列的显示值 有问题的列是一个布尔值 因此显示转换将为 Yes true 和 No False 我做了一些实验 发现这有效 不确定它是否会保留在可编
  • 从 Schittkowski DAE 测试套件中求解 PENDULUM2?

    我只是试图解决 Schittkowski DAE 测试套件中的 DAE 问题之一 http klaus schittkowski de mc dae htm http klaus schittkowski de mc dae htm 但没有
  • 如何以相同的方式修改或替换字典中的每个值?

    给定一个像这样的字典myDict ten 10 fourteen 14 six 6 如何修改每个值 例如 我想将每个值除以二 这样myDict变成 ten 5 fourteen 7 six 3 就位 而不是创建新字典 迭代键和值 for k
  • 检查 URL 的内容:是文件还是网页?

    我有一个应用程序 需要根据内容采取不同的操作URL 如果内容是文件 我需要下载它 但是 如果内容是网页 我需要打开它 据我所知 有两种 URL 类型 直接链接 例如 https dl ssl google com android repos
  • WPF 应用程序的多线程策略需要建议

    我正在构建一个单窗口 WPF 应用程序 窗口中是一个列表项 当然 它们保存在数据库中 我需要定期启动一个后台任务 从 Atom feed 更新数据库 当每个新项目添加到数据库中时 UI 中的列表也必须更新以反映这一点 我不希望这个后台任务减
  • 滑块输入延迟

    有没有办法使sliderInput http shiny rstudio com reference shiny latest sliderInput html等待几秒钟 然后它会更改其对应的input 多变的 我有一个栏正在控制需要根据值
  • 使用 Mac 应用程序部署 Qt 框架以及 otool 的使用

    我在使用我的 Mac 应用程序部署 Qt 框架时遇到问题 我希望有人能知道为什么当我在干净的 Mac 即不是开发人员 Mac 上运行该应用程序时会出现此错误 操作系统 10 7 2 并使用 XCode 错误消息 Library not lo
  • 如何使用列表(或元组)作为字符串格式化值

    假设这个变量 s Python rocks x s s s 0 s 1 现在我想替换更长的列表 并分别添加所有列表值 例如 s 0 s 1 s n 似乎不正确 引用自文档 给定格式 值 如果格式 需要一个参数 值可以 是单个非元组对象 4
  • 如何在 F# 中的集群配置中创建参与者

    我正在创建一个示例Akka Cluster具有三个节点 A B 和 C 其中 A 是灯塔 到目前为止 从日志来看 当没有参与者或参与者是本地的 使用创建的 时 集群工作正常spawn and spawnOpt 我想从 B 创建一个 acto
  • TextMate:注释行快捷方式不再起作用(我的瑞士布局上的 Cmd-/ 或 Cmd-Shift-7)

    一段时间以来 我在 TextMate 中遇到了一种非常奇怪的行为 I had troubles to use the keyboard shortcut for commenting a line which is Cmd or on my
  • 如何在 Swift 中为 IOS 生成 RSA 非对称密钥对?

    我需要一种在 Swift 中生成 RSA 非对称密钥对的方法 我不需要将它存储在钥匙串或任何东西中 我只需要生成一个密钥对并将两个密钥放入字符串变量中 这些密钥确实需要与另一端的 PHP 兼容 我将使用对称加密来保护私钥并将其存储在手机上
  • isset 具有可变数组键数

    该数组是多维的 并且具有可变数量的子键 例如 arr a b c X 在这种情况下为3 我想创建一个函数 它接受一个像这样的字符串a b c作为参数并检查数组中是否包含该键 然后取消设置它 unset arr a b c 如果我给它a b那
  • PySpark UDF 优化挑战

    我正在尝试优化下面的代码 当运行 1000 行数据时 大约需要 12 分钟才能完成 我们的用例需要数据大小约为 25K 50K 行 这将使此实现完全不可行 import pyspark sql types as Types import n
  • 对话框活动还会在后台恢复其他活动

    这就是场景 我的应用程序中有 2 个活动 以及一个当我单击应用程序创建的通知时启动的对话框活动 问题是 当我单击通知时 如果按主页按钮停止 则仅应显示对话框 而不应显示应用程序的其他活动 当我通过按后退按钮关闭应用程序时 对话框活动会显示对
  • 检查用户是否是 C 中的 root?

    如何验证用户是否是root 通常测试用户是否为 root 是错误的 POSIX 甚至不需要 root 用户 而是将其留给实现来确定权限如何工作 代码如 if i am root do privileged op else print err