一、UID

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

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

二、EUID

euideffective 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");elseprintf("success\n");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 <stdio.h>
#include <unistd.h>
#include <fcntl.h>int main(void)
{printf("uid: %d euid:%d", getuid(), geteuid());
}

编译后执行

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

Linux-各种UID相关推荐

  1. Linux系统UID和GID详解

    Linux系统UID和GID详解 <script src="http://hot.tianyaclub.com/hot.js"></script> 一个文件 ...

  2. Linux中UID, GID, EUID, EGID,SUID、SGID讲解

    UNIX下关于文件权限的表示方法 通常我们使用ls -l查看文件的权限.通常我们可以得到10位的权限表示法,如:-rwxr-xr-x.我们对于以下格式进行解析: 9 8 7 6 5 4 3 2 1 0 ...

  3. linux gid 含义,Linux系统UID和GID详解

    Linux系统UID和GID详解 一个文件都有一个所有者, 表示该文件是谁创建的. 同时, 该文件还有一个组编号, 表示该文件所属的组, 一般为文件所有者所属的组. 如果是一个可执行文件, 那么在执行 ...

  4. Linux 内核进程uid,Linux内核学习笔记: uid之ruid,euid,suid

    看UNIX相关的书时经常能遇到这几个概念,但一直没有好好去理清这几个概念,以致对这几个概念一直一知半解.今天好好区分了一下这几个概念并总结如下.说白了这几个UID引出都是为了系统的权限管理. 下面分别 ...

  5. Linux:UID和EUID

    UID:真实的用户ID   进程的UID就是其创建者的用户ID,用于标识进程的属主. EUID:有效的用户ID (1)只有进程的创建者和root用户才有权利对该进程进行操作.于是,记录一个进程的创建者 ...

  6. linux查看UID命令,Linux下查看UID

    方法一:使用 id 命令 使用id 命令可以很轻松的通过用户名查看UID.GID. 命令格式 id [选项]... [用户名] 命令选项 -a 忽略,兼容其它版本 -Z, –context 只输出当前 ...

  7. Linux下UID和GID的简介

    uid  用户ID号 GID  用户属ID号 增加用户 useradd:    password: 删除用户 userdel:      finger  用户 表示用户状态 用户切换 su  -use ...

  8. Linux 的账号与群组(转)

    Linux 的账号与群组 管理员的工作中,相当重要的一环就是『管理账号』啦!因为整个系统都是你在管理的, 并且所有一般用户的账号申请,都必须要透过你的协助才行!所以你就必须要了解一下如何管理好一个服务 ...

  9. linux内核参数详解

    kernel.acct acct功能用于系统记录进程信息,正常结束的进程都会在该文件尾添加对应的信息.异常结束是指重启或其它致命的系统问题,不能够记录永不停止的进程.该设置需要配置三个值,分别是: 1 ...

  10. u盘安装linux 提示no such device_树莓派学习笔记2-U盘挂载和系统备份

    上一次我们说到系统配置的一些工作,在那些工作完成之后我突然想到之前从来没有做过的一个工作:系统备份.这一次我们就研究一下系统备份是怎么做的. 系统备份其实很简单,你总是可以把树莓派上的SD卡拔下来,在 ...

最新文章

  1. jstl 获取 javascript 定义的变量_一个后端开发者前端语言基础:JavaScript
  2. 玩转虚拟化VMWare之一: VMWare ESXi 5.0和vSphere Client安装和配置
  3. vue-admin模板第一次使用存在的坑
  4. better-scroll 上拉加载,下拉刷新(解决移动端长页面卡顿)
  5. 实验四 恶意代码技术
  6. 软件构造学习笔记-第五周
  7. MySQL幻读及解决方法
  8. 税收分类编码2020_增值税开票系统你会吗?2020最新开票(金税盘版)图文教程详细版...
  9. git-索引-1909
  10. Python框架篇之Django(Template模版:标签tag、自定义filter、extend模板继承)
  11. Python之路(运算符)
  12. 开源项目托管GitHub
  13. python函数局部变量_Python局部函数– functoolspartial()
  14. Carthage的安装和使用
  15. 后台管理数据库连接出错,请检查Conn.asp文件中的数据库参数设置的解决办法
  16. 经纬度转换度分秒工具
  17. 联想e550笔记本怎么样_摄像头是亮点 — Lenovo 联想 ThinkPad E550C 笔记本 简单评测...
  18. 《华为研发》阅读 - 15 (分解“满汉全席”,“先谋而后动”)
  19. CodeForces 499C、Crazy Town
  20. C语言 10_随机数

热门文章

  1. 【渝粤题库】广东开放大学 金融经济学 形成性考核
  2. android 熄屏 socket断开,Android 休眠导致的问题Socket断开
  3. 5款优秀的在线表格生成工具
  4. B002 - 基于嵌入式的老人定位追踪监测仪
  5. 服务器连接不上的处理方式
  6. Win32:三菱FX3U/FX5U读写软元件方法和注意事项
  7. 关于html的表情包,HTML那些可愛的“表情包”
  8. hadoop快速自我学习--hadoop平台管理与维护
  9. 我的世界服务器登录显示motd,[信息]ColorMOTD —— 究极Motd插件,外带反压测[1.7-1.8]...
  10. 扒一扒那些叫欧拉的定理们(七)——欧拉线定理的证明