问题标签 [setuid]
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.
linux - 如何为 SystemTap 使用 stapdev 和 stapusr 组?
我试图将自己添加到stapdev
并stapusr
在stap
没有sudo
. 我正在尝试运行一个简单的示例,但出现如下错误:
使用sudo
它似乎工作正常:
我怎样才能做到这一点?
笔记
我使用的是 ubuntu 12.04 系统并安装了systemtap
包
编辑
unix - setuid 设置大数
我已经使用 root 运行了一个程序,其中我为 uid 9999999 调用了 setuid 函数,然后它成功设置了这个 uid,即使它在 /etc/passwd 中不存在。那么 setuid 如何验证 uid 以及设置此无效 uid 会产生什么影响?
linux - 在 Linux 中,可执行文件的位置会影响 setuid 位的解释方式吗?
在Linux系统中,setuid程序所在目录的权限是否会影响内核启动进程的方式?我问的原因是,当我在两个不同的目录中编译相同的 setuid 程序时,它实际上只假定了一个目录中的用户权限。我在其中编译了它/tmp
,我试图访问的用户帐户在/home/flag03
哪里。flag03
从/tmp
它执行时并没有按预期提升权限,但它在/home
.
关于这个问题的一些背景:
我正在开发exploit-exercises.com/nebula的第03 级。该练习要求您获得对flag03
用户帐户的访问权限。设置该练习,以便flag03
用户定期运行 cronjob,这将允许您在特定目录中执行脚本。我的计划是编写一个简单的 bash 脚本,该脚本将编译一个 setuid 程序,该程序本身会启动一个 bash shell,然后将 setuid 位设置为chmod +s
. 这个想法是,当 setuid 程序被编译时,它是由用户flag03
通过 cronjob 编译的。一旦执行了这个新编译的程序,它将以 user 身份启动一个 shell flag03
,这就是目标。
这是简单的 setuid 程序(l3.c,基于级别 1 + 2):
为了使其工作,bash 脚本以用户身份编译程序flag03
,然后对 setuid 位进行 chmods。
生成的可执行文件/tmp
没有按预期提升权限,但生成的可执行文件按/home/flag03
预期工作。
注意/tmp
我刚刚创建了一个新的 bash 脚本来移动编译到的 setuid 程序的版本,/home/flag03
然后重置 setuid 位。从那里执行时,该版本也可以正常工作。因此,在我看来,setuid 程序所在目录的权限会对进程的启动方式产生某种影响。也许这与/tmp
成为一个有点“特殊”的目录有关?
感谢您对这个冗长的问题感兴趣!
linux - setfsuid() - 如何解释结果代码?
成功时,返回之前的fsuid值。出错时,返回fsuid的当前值。
如果我没记错的话,可以简单地说“ setfsuid() 总是返回在调用 setfsuid() 之前设置的 fsuid 值——无论它是否成功。 ”
我的假设正确吗?
如果是这样,并注意到没有 getfsuid()
功能,我应该如何检查调用是否成功?
作为一个快速而丑陋的黑客,我只能想到调用setfsuid()
两次并使用第二次调用的返回值......
linux - issetugid 的目的?
根据手册页issetugid
,该调用应该(1)提醒 uid/gid 更改;或 (2) 警惕可能的污染环境。函数名称暗示了第三个目的。
第一个问题:它的目的是什么?
当我查看可用的实现时(例如,在 Linux 系统上作为库,因为 Linux 内核不提供 API),我发现以下内容:
在 Solaris 上,它如下所示:
我有点怀疑,但这部分是因为它很难理解在所有平台上喜欢什么函数geteuid
并getegid
返回——例如,BSD、Linux、Unix 和 Solaris。
第二个问题:Linux 代码在语义上是否等同于 Solaris 代码?
第三个问题:跨平台的实现是否相同geteuid
?getegid
对于拥有三个身份的系统——真实的、有效的和保存的,怎么样?
第四个问题:有效的身份是唯一重要的身份吗?
如果一个进程以 UID = 0 开始并暂时放弃特权,那么saved
id 就会发挥作用。临时删除根的进程不需要也不exec
应该被污染。
第五个问题:临时掉根的进程是否被污染?
第六个问题:一个有效id是保存的id的进程是否应该被认为是被污染的?
linux - 收到消息“sudo:必须是 setuid root”,但 sudo 已由 root 拥有
我正在尝试运行 sudo,但它失败了:
对于如何解决这个问题,有任何的建议吗?
passwords - 从网页访问 setuid 程序
我有一个学生用来检查他们的编程作业和查看他们的成绩的 setuid 页面。典型用法是:
用户必须在部门机器上有一个帐户。此外,任何人都可以运行签到/评分,但它只有在也注册了特定课程时才有效。
学生们要求他们能够从平板电脑/智能手机上的浏览器访问他们的成绩。我正在考虑类似于以下内容的php页面
但是,这会失败并显示错误消息
我相信我想使用 su 而不是 sudo 以便执行实际上是作为学生。该网页将要求学生登录,因此它可以访问他们的 ID/密码。有没有人建议如何做到这一点?
如果从网页执行签入程序,则工作量要多一些,因为它必须将提交的文件复制到部门计算机,然后以学生身份运行签入。我们正在考虑这一点,因为有些学生似乎不愿意将文件 ftp 到部门机器并使用 ssh 进行签入。
我更喜欢包装现有的程序,因为它们经过了很好的调试,并允许学生从 shell 或 Web 访问这些功能。
谢谢你。
ruby - 如何在 Ruby 中获得超级用户权限?
所以,我一直在研究一个 Ruby 脚本,它在我上学的时候会阻止 reddit(有用的东西)。这是代码:
如您所见,它将修改后的主机文件从我的 Documents 文件夹移动到 /etc。不过,根据 OS X/Unix 安全措施,我遇到的问题是我必须通过 sudo 运行脚本或以 root 身份登录。这是一个小麻烦,但是,我相信它可以在代码中修复。如何通过我的 ruby 脚本获得超级用户权限,或临时写入 /etc 权限,以便我可以在没有 sudo/root 的情况下简单地运行脚本?
android - setuid 在 Galaxy s4 上因 PermissionDenied 而失败
我正在尝试在 c 上为 android 创建一个 setuid 程序。我在 android 2.3-4.2 上对其进行了测试,它在除三星 Galaxy s4 (i9500) 之外的所有设备上运行良好。
我使用 CF-Auto-Root 在设备上安装 su ,它工作正常。但我的应用程序表现不佳。
我已将 mysu 安装到系统目录并设置所有权限:
这就是关于 Chainfire 的 su:
Selinux 处于许可模式:
在 mysu 中,我在调用 shell 之前使用了 setuid 和 setgid,但它们在 Galaxy S4 上失败了:
我究竟做错了什么?除了 setuid 和 setgid,Chainfire 的 su 是什么?
c++ - setuid 位打开,但程序无法打开超级用户文件
我有一个superuser.cpp
由具有访问权限的超级用户创建的文件770
。现在,超级用户创建一个文件setuidDemonstration.cpp
,其中 superuser.cpp 使用open("superuser.cpp", O_RDONLY).
.cpp 打开,并且 setuidDemonstration.cpp 的目标文件具有权限rwxrwxr-x
。现在,我的问题是:-
当我运行程序 setuidDemonstration 时,在普通模式和超级用户模式下都无法打开 superuser.cpp。为什么?至少,超级用户模式应该已经成功打开了。
现在,我愿意
sudo chmod 4775 setuidDemonstration
。这应该允许程序即使在正常模式下也可以打开 superuser.cpp,因为它会在执行期间获得超级用户的 euid,因为 setuid 位在sudo chmod 4775 setuidDemonstration
运行时已设置。但它不能。此外,当我在正常模式下运行时打印 euid 时,它会打印1000
而不是0
. 为什么?
更新:感谢您指出错误。我已经从文件路径中删除了“/”,现在它确实适用于超级用户。但是即使现在经过 sudo chmod 4775 setuidDemonstration,正常模式下运行程序 falis 来打开文件。请解释一下。