- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
这个示例 suid 程序
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
void main() {
int ret;
printf("uid=%d, euid=%d\n", getuid(), geteuid());
ret = setuid(1000);
printf("uid=%d, euid=%d\n", getuid(), geteuid());
}
拥有“noemi”(id=1001)作为所有者:
sarah-$ logname
sarah
sarah-$ ls -l p.bin
-rwsr-xr-x 1 noemi noemi 7028 17 dic 10.30 p.bin
如果从用户 'sarah' (id=1000) 启动,则 euid 更改为 1000
为什么? p.bin 仅更改 uid(这应该没有效果,因为当 p.bin 由“sarah”启动时 uid 为 1000):
sarah-$ ./p.bin
uid=1000, euid=1001
uid=1000, euid=1000
sarah-$
我正在使用 Debian 6 64 位。
请帮助我理解。谢谢
最佳答案
检查man 2 setuid
:
setuid() sets the effective user ID of the calling process. If the effective UID of the caller is root, the real UID and saved set-user-ID are also set.
因此,正如您已经观察到的那样,当您以普通用户身份执行 setuid()
时,它只会更改有效用户 ID。
关于c - setuid() C 函数也更改 euid 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20630691/
我正在尝试解决这个问题: 2014-04-07 14:00:58,628 srv proftpd[10143] srv (pfsense.localdomain[192.168.0.1]): FTP
我有以下代码片段。 char *const parmList[] = {"sh", "-c", "whoami", NULL}; if(geteuid() == 0) { seteuid(ato
我有以下 bash 脚本: echo "$(id -u)" mkdir test 我自己的用户id是1000。现在,当我在没有root权限的情况下运行python3.5并通过subprocess.ch
EUID 与 UID 不同。脚本中在什么上下文中使用了这两个? 我试图通过 echo "UID is $UID and EUID is $EUID" 获取值,但只有空格作为输出。我的机器运行 Ubun
我查看了我的一些系统日志及其关于适用于随机有效用户 ID 和组 ID 的错误的声明。例如: Jan 31 13:20:48 server exim[24551]: 2016-01-31 13:20:4
fork() 操作子进程从父进程继承属性真实有效的用户 Id,当执行 exec() 时它的行为如何? 最佳答案 Exec 不会改变它们中的任何一个。来自 linux 手册: The exec() fa
这个示例 suid 程序 #include #include #include #include void main() { int ret; printf("uid=%d, euid=%d\
如果我知道进程的 pid,如何找到进程的 euid我试过我使用以下方法获取进程 ID: ps -f -u user1 然后我用 grep pid 尝试了 ps aux , ps -ef 但看不到 eu
我想知道 Linux 内核在哪里保存“ruid”和“euid”。 以下是我对他们的了解。 当用户运行一个文件并且该文件变成一个进程时,该进程会获得 ruid 和 euid。 如果文件已经设置为使用se
如果我在脚本中将我的 shell 指定为/bin/bash,则 root 的 EUID 为 0。如果我不这样做,并且脚本在我的默认 shell(也是/bin/bash)中运行,则 root 的 EUI
我被分配到 Write a C program that prints the following identifiers PID, PPID, SID, PGID, UID, EUID. 作业接着问
上下文:我正在获取当前的 Ruby 进程 ID。 Process.pid #=> 95291 Process.ppid #=> 95201 Process.uid #=> 501 Process.
如LDD3第6章p175所示,我们可以通过current->uid获取当前进程的UID和EUID和 current->euid . 但是struct task_struct的定义Linux Kerne
我正在尝试使用 TestCafe 在 CircleCi 上运行浏览器测试。我已经关注了这个documentation 。主要问题是chrome浏览器打不开。 CircleCi 能够成功下载镜像,因为
我是一名优秀的程序员,十分优秀!