linux查询分区的uid,Linux-各种uid

Linux-各种UID

一、UID

UID是系统中用来表示用户的标识符,启动的进程的uid就是当前登录用户的uid,查看用户uid可使用id -u 命令

需要注意的是,权限检查的时候是对euid检查,通常情况下进程的euid是和uid相同的。

二、EUID

euid即effective user id ,有效用户ID。

euid作用

用于文件访问检查,euid和决定了进程是否有访问某个文件的能力。例如,编写下面代码:

/* testeuid.c */

#include

#include

#include

int main(int argc, char * argv[])

{

if (argc != 2)

return 0;

printf("uid: %d\teuid: %d\n", getuid(), geteuid());

printf("trying to open %s\n", argv[1]);

int fd = open(argv[1], O_RDONLY);

if (fd < 0)

perror("open");

else

printf("success\n");

return 0;

}

编译并运行

bV7jPI?w=685&h=350

上述执行过程中,将a.file拥有者改为root并修改访问权限为root只读后,我以eureka用户的身份无法访问该文件。

三、SUID

看APUE发现自己对suid不是特别了解,查资料之后明白了,记录如下。

参考文章:

上面链接中的文章说的很准确,SUID即(Set Owner User ID up on execution)

在执行时设置为所有者ID,一个例子就是/usr/bin/passwd这个可执行文件。

$ ls /usr/bin/passwd

-rwsr-xr-x 1 root root 54256 May 17 2017 /usr/bin/passwd

从上面passwd的属性可以看到,权限位中有个s,这就是suid。

passwd这个命令是用来修改密码的,而密码文件是/etc/shadow,且查看密码文件的属性可以看到它的拥有者是root,root可读写,用户组可读的。

/tmp $ ls -l /etc/shadow │

-rw-r----- 1 root shadow 1711 Mar 30 17:00 /etc/shadow

既然这个文件是root可读写,那非root用户修改密码要怎么办呢?

这时候就要说的suid了,当非root用户调用passwd修改密码时,此时的euid将会变为passwd的拥有者用户,即root用户,这样就可以修改密码了。

与其说suid是一个id,不如说它是文件的一个标志,它标志着这个可执行文件在执行时的euid将会被修改为它拥有者的uid。

下面编程实验:

/* testsuid.c */

#include

#include

#include

int main(void)

{

printf("uid: %d euid:%d", getuid(), geteuid());

}

编译后执行

bV7jPQ?w=684&h=202

上面的chmod u+s是给文件加上usid标志,而从上面的结果可以看出进程的uid和euid是可以不同的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值