必威体育Betway必威体育官网
当前位置:首页 > IT技术

Linux-各种UID

时间:2019-09-04 07:41:03来源:IT技术作者:seo实验室小编阅读:73次「手机版」
 

uid

一、UID

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

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

二、EUID

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

euid作用

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

/* testeuid.c */
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>

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;
}

编译并运行

euid

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

三、SUID

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

参考文章

what is 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 <stdio.h>
#include <unistd.h>
#include <fcntl.h>

int main(void)
{
    printf("uid: %d euid:%d", getuid(), geteuid());
}

编译后执行

suid

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

相关阅读

UUID

UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域

IDEA使用笔记(八)——自动生成 serialVersionUID 的设置

这个设置比较简单,也有一些博文已经写到了,为什么我还要写哪?(潜台词:因为我想凑一篇博文)我觉得学习,特别是编程学习是需要重复造轮子的

学习一下强大的druid,看看druid 连接池部分的源码-创建

前言 druid是阿里爸爸的开源数据库连接池,据说其性能算是位于领先的水平,从连接的创建和销毁这个性能方面优于其它连接池,但是觉得

产品原型设计利器——UIDesigner 2.5 for mobile发布

UIDesigner 是腾讯用户研究与体验设计部(CDC)设计研发的一款设计类软件。自2007年诞生第一个版本以来,持续不断的研发改进,在去年发

干净强大的UUID在线生产工具

在编写代码或者使用数据库的过程中,时不时都会用到UUID随机数,虽然自己编写代码可以获取到UUID,但是太麻烦了,而且要想生产大量UUID也

分享到:

栏目导航

推荐阅读

热门阅读