资讯专栏INFORMATION COLUMN

Linux-各种uid

Lin_R / 2045人阅读

摘要:各种一是系统中用来表示用户的标识符,启动的进程的就是当前登录用户的,查看用户可使用命令需要注意的是,权限检查的时候是对检查,通常情况下进程的是和相同的。二即,有效用户。作用用于文件访问检查,和决定了进程是否有访问某个文件的能力。

Linux-各种UID 一、UID

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

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

二、EUID

euideffective user id ,有效用户ID。

euid作用

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

/* testeuid.c */
#include 
#include 
#include 

int main(int argc, char * argv[])
{
    if (argc != 2)
        return 0;
    printf("uid: %d	euid: %d
", getuid(), geteuid());
    printf("trying to open %s
", argv[1]);
    int fd = open(argv[1], O_RDONLY);
    if (fd < 0)
        perror("open");
    else
        printf("success
");
    return 0;
}

编译并运行


上述执行过程中,将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 
#include 
#include 

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

编译后执行

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/10545.html

相关文章

  • Linux系列笔记】-------用户账户和组管理详解及实用指令补充(四)

    摘要:每个组都有唯一的跟类似,除了,每个组还有唯一的组名,与用户账户类似,组信息也保留系统文件中。及相关资料网友自取。 作者:嵌入式历练者 ID : Eterlove 记下相关笔记,记录我的学习生活!站在巨人的肩上Standing on Shoulders of Giants! 该文章...

    baiy 评论0 收藏0
  • Runc和CVE-2019-5736

    摘要:中国论坛提案征集月日截止论坛让用户开发人员从业人员汇聚一堂,面对面进行交流合作。赞助方案出炉多元化奖学金现正接受申请即将首次合体落地中国 2月11日早上有宣布关于runc中的容器逃逸漏洞。我们希望为Kubernetes用户提供一些指导,以确保每个人都安全。 Runc是什么? 简单来说,runc是一个低层工具,它负责大量生成Linux容器。Docker、Containerd和CRI-O等...

    blastz 评论0 收藏0
  • Linux Namespace系列(07):user namespace (CLONE_NEWUSE

    摘要:本篇所有例子都在下执行通过创建第一个窗口先记录下目前的,和创建新的很奇怪,为什么上面例子中显示的用户名是,它的和都是这是因为我们还没有映射父的和到子中来,这一步是必须的,因为这样系统才能控制一个里的用户在其他中的权限。 User namespace用来隔离user权限相关的Linux资源,包括user IDs and group IDs,keys , 和capabilities. 这...

    winterdawn 评论0 收藏0
  • Linux_《Linux命令行与shell脚本编程大全》第七章学习总结

    摘要:命令行与脚本编程大全第三版第七章学习总结第七章理解文件权限本章内容理解的安全性解读文件权限使用组的安全性安全系统的核心是用户账户。但不要随意修改组的。通过用户和组来限制对文件目录以及设备的访问。组也会被分配唯一的组以及组名。本章介绍了命令。 时间:2017年08月07日星期一 说明:本文部分内容均摘取自书籍《Linux命令行与shell脚本编程大全》,版权归原作者所有。《Linux命令...

    lily_wang 评论0 收藏1
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID

    摘要:存在的目的是方便资源访问他使得运行程序的用户拥有该程序的有效用户权限。这个标志表示,任何普通用户运行程序时,其有效用户就是该程序的所有者。有效用户为进程称为特权进程。的含义与类似给运行目标程序的组用户提供有效组的权限。 UID、EUID、GID 和 EGID 简介 UID 真实用户ID EUID 有效用户ID GID 真实组ID EGID 有效组ID   用户信息对于服务器...

    lakeside 评论0 收藏0

发表评论

0条评论

Lin_R

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<