问题标签 [suid]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
569 浏览

linux - suid 和其他权限(世界权限)有什么区别?

简而言之,用户在执行文件/程序时将获得文件所有者的权限以及所有者 UID 和 GID。它不会更改文件的所有者。

如果您在程序中强加:rwsrwxr-- 或 rwxr--rwx

如果我设置 SUID 权限(所有者)或 World 权限(其他),有什么区别?在这两种情况下用户都可以运行程序吗?

0 投票
1 回答
93 浏览

ruby - 带有 SUID 的 Ruby gem 可执行文件无法正常工作

如下图所示,我将emerald_setup脚本的所有权更改为 root:root 并设置了 SUID。

在此处输入图像描述

碰巧当我安装 gem 并检查这个脚本时,它属于 edvaldo:edvaldo(我的​​用户名)并且根本没有 SUID!

在此处输入图像描述

我不知道到底发生了什么,但这个脚本会更改/etc/hosts并创建一些防火墙规则。这需要 root 权限。

所以,我的问题是:

  • 在这种 SUID 的情况下,我缺少什么?

  • 我必须如何确保 gem 可执行文件设置了 SUID?

当然我知道我可以要求用户使用

但这会给我带来另一个问题,因为 gem 可执行文件安装在用户空间中,并且它的位置不在超级用户的路径中,并且设置它(猜猜是什么?!)需要超级用户权限。

有什么建议么?

0 投票
1 回答
197 浏览

linux - SUID 位是做什么用的

从我读到的“SUID 位使其他用户能够以文件所有者的权限运行文件”
所以我做了这 2 个用户:user1 & user2 用户 1 创建了一个脚本

用户 1 对脚本执行 chmod 4777(授予所有用户完全访问权限)
现在用户 2 尝试运行脚本并失败。没有权限!
脚本不应该以user1的权限运行吗?

如果 SUID 纯粹用于 sbin 中存在的命令,那么设置 SUID 位和将所有用户添加到具有特定命令权限的 suoder 文件之间有什么区别?

0 投票
1 回答
134 浏览

iso - 在 ISO 上设置 ID 位

我正在创建一个 Debian 系统的 ISO:

问题是:当我安装 ISO ( mount -o loop)ping并且sudo由于它们的 suid 位尚未设置而无法工作时。

我知道-r标志清除了特殊之二。此标志生成“合理化的 Rock Ridge 目录信息”,可以保留原始文件权限,但也可以清除任何 set-id 位。

但是,如果我不使用-r,则所有文件的文件权限都是相同的,正如在运行时挂载 ISO 时所指定的那样。

问题:如何将 ping 和 sudo 等 set-id 文件添加到 linux “live” ISO?

0 投票
0 回答
403 浏览

linux - linux suid程序在execv之后不保留euid

这是我的 c 代码片段test.c

我用 编译代码sudo gcc test.c -o test; sudo chmod +s ./test,所以程序test有 suid 位并且归 root 所有。

printf输出为预期的, ruid:1000, euid:0, 但程序id指示ruideuid都是1000.

0 投票
0 回答
44 浏览

security - Is it possible to perform atomic file replacement in root-owned directory (SUID program security concerns?)

To ensure consistency on power outage, files can be updated as follows (pseudocode):

Now the thing is, if the files are in a folder root-owned, that rename operation gets a permission denied:

while:

works (but it's not as safe when it comes to consistency on power loss).

So I'm thinking about writing a small SUID program rename_suid that will just check that the source & target files have the proper ownership, so the replacement can be performed.

Here's a proposed implementation:

The question is... am I missing something:

  • Is there another solution to the problem?
  • If not, does a similar tool exist?
  • If such this tool is the only solution, could it, by its principle of operation, cause unforeseen security issues?
  • Any (security) problem with the proposed implementation?

Thanks,

0 投票
2 回答
615 浏览

linux - 不能使用 suid 二进制文件删除权限?

我想知道是否有办法使用 suid 二进制文件(使用 Ubuntu 18.04)来放弃特权。看:

有没有解释为什么一个人可以获得特权但不能用 suid 二进制文件删除它们?

你可能想知道我想要完成什么,但这只是为了学习。

谢谢!

0 投票
1 回答
109 浏览

c - 检查内核模块中打开文件的 SUID 属性

我正在编写一个内核模块,它需要检查给定文件描述符的属性suid。我检查了各种内核结构,但找不到有关该主题的任何线索。

我希望以某种方式找到一个包含按位 Unix-stile 权限的字段,但我找不到。

我的目标是编写一个函数,它只说明给定文件描述符引用的文件是否设置了其 suid 属性。

我最好的选择是查看我搜索过的inode结构(但没有成功),但将 inode 视为物理磁盘上文件的内存表示,并考虑某些文件系统没有 Unix 样式的文件权限,我仍然不确定我是否在寻找正确的方向。

0 投票
1 回答
174 浏览

systemctl - 从 setuid root 程序运行“systemctl restart ___”而不询问 root 密码?

我正在为运行 Linux (CentOS 8) 的网络设备进行开发,对于 VGA 控制台上的一些非常基本的配置,我们设置了一个锁定的用户帐户。我们提供了几个 suid root 程序,它们可以设置 IP 地址和配置 NTP。(所有其他设置都是通过 Apache 和一些网页完成的。)

我们需要从这些程序中做的一些事情是重新启动 NetworkManager.service、重新启动 chronyd.service、断电和重新启动。poweroff 和 reboot 都很好用,但重新启动服务却不行。相反,我们得到这个:

我猜 systemctl 正在尝试对身份验证进行智能处理,并且能够检测到运行它的用户不是 root,即使它具有 root 权限。有什么方法可以更改用户 ID,以便 systemctl 事情是它的根调用它?

作为参考,我已将完整源代码附加到下面的 suid 根程序之一。

0 投票
2 回答
230 浏览

c - 同一个suid+系统程序,不同系统输出不同

我写了一个简单的程序,名为suid.c

用 gcc 编译它,然后设置 suid 权限(现在是 root 用户):

我尝试./suid id在不同的虚拟机上使用 www-data 用户运行,但输出不同。

  • kali 2019 中的输出:id=33(www-data) gid=33(www-data) groups=33(www-data)
  • ubuntu trusty(旧的 linux)中的输出:uid=33(www-data) gid=33(www-data) euid=0(root) egid=0(root) groups=0(root),33(www-data)

这是为什么?Linux 有什么变化吗?