Linux下文件权限(一)用户ID和用户组ID
最近在读《unix环境高级编程》,看到文件权限这里比较糊涂,主要设计多个用户ID和用户组ID,包括下面两个:
(1)实际用户ID和实际用户组ID:这一部分表示我们究竟是谁。这两个字段在登录时取自口令文件中的登录项。通常,在一个登录会话期间这些值并不改变,但是超级用户进程有办法改变他们。简单来说,实际用户ID是登录用户的uid,实际用户组Id是登录用户的gid。
(2)有效用户ID和有效用户组ID:这一部分用于文件的权限检查。一般情况下,有效用户ID等于实际用户ID,有效用户组ID等于实际用户组ID。当设置用户ID位(SUID)被设置时,有效用户ID等于文件所有者的uid而不是实际用户组ID;当设置用户组ID(SGID)位,有效用户组ID等于文件所有者的gid,而不是实际用户组ID。
下面在linux下测试上述结论:
在root超级用户下新建test.c文件,并编译生成test程序
#include "apue.h" int main()
{
printf("uid=%d,gid=%d,euid=%d,egid=%d\n",getuid(),getgid(),geteuid(),getegid());
exit(0);
}
查看文件属性

通过id命令查看当前登录用户为root。程序进程并未设置SUID和SGID,执行程序可以看出,实际用户ID,实际用户组ID都是0,有效用户ID,有效用户组ID也是0(等于实际用户ID,实际用户组ID)
下面修改test的用户和用户组,再看结果

结果没有发生变化,仍然是有效用户ID等于实际用户ID,有效用户组ID等于实际用户组ID(这是因为设置用户ID位SUID,设置用户ID位SGID没有被设置)
下面给test程序设置SUID

发现设置SUID位之后,test进程有效用户ID(1000)不等于实际用户ID(0)了,而是等于文件所有者的uid(yangang的uid为1000)
如果设置程序的SGID ,会出现类似的结果:
SUID
这样程序就只能访问只有yangang才能访问的资源
若文件的所有者是超级用户,而且设置了该文件的设置用户ID位,那么当该程序文件的一个进程执行时,该进程拥有超级用户权限。不管执行此文件的进程的实际用户是什么。例如passwd 命令允许任一用户改变其口令,该程序是一个设置用户ID的程序,因此该程序能将用户新口令写入口令文件中(只有超级用户才具有对该文件的写权限)。
Linux下文件权限(一)用户ID和用户组ID的更多相关文章
- linux下文件权限的介绍
linux操作系统下,使用ll查看该目录下所有文件及其文件权限,以下是对文件权限的介绍 d代表的是目录(或称之为文件夹) 红框内的这3个是代表3个组的权限每组都是3个 第一组rwx代表是本用户的权 ...
- Linux下文件权限的设置
文件/目录权限设置命令:chmod 这是Linux系统管理员最常用到的命令之一,它用于改变文件或目录的访问权限.该命令有两种用法: 用包含字母和操作符表达式的文字设定法 ) 其语法格式为:chmod ...
- linux下文件权限更改(转载)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_33571752/article/d ...
- linux 下 文件权限和文件主
文件与文件夹的权限和所有者 1.chmod -R 755 file 777 含义与来源: 777含义:分别为:所有者.同组用户.其他用户 7的来源:文件有三种操作模式:读4.写2.执行1,分别值为42 ...
- (转载) linux下文件权限设置中的数字表示
chmod ABC file 其中A.B.C各为一个数字,分别表示User.Group.及Other的权限. A.B.C这三个数字如果各自转换成由“0”.“1”组成的二进制数,则二进制数的每一位分别代 ...
- Linux之文件权限、用户管理
世界真美好!
- Linux下文件的权限
一.Linux下查看文件属性 命令为: [root@localhost ~]# ls -al 结果: ls是『list』的意思,重点在显示文件的文件名与相关属性.而选项『-al』则表示列出所有的文件详 ...
- 关于linux下文件的权限问题
今天在linux更新服务中的启动文件时,直接把更新的启动文件拷贝过来执行,报错:can't be execute 后来想了下列出了文件的详细信息中发现拷贝过去的执行文件是-r--r--r--(表示只有 ...
- linux之文件权限+用户权限
chmod 文件权限命令: 文件权限: r是否能查看文件内容 w是否能修改文件的内容,需要与r权限配合使用 只有w的时候vim强制修改文件内容,会导致源文件内容清空 x是否能运行命令或脚本权限,需 ...
随机推荐
- C#内存泄漏--event内存泄漏
内存泄漏是指:当一块内存被分配后,被丢弃,没有任何实例指针指向这块内存, 并且这块内存不会被GC视为垃圾进行回收.这块内存会一直存在,直到程序退出.C#是托管型代码,其内存的分配和释放都是由CLR负责 ...
- 使用Docker快速搭建Nginx+PHP-FPM环境
下载nginx官方镜像和php-fpm镜像 docker pull nginx docker pull bitnami/php-fpm 使用php-fpm镜像开启php-fpm应用容器 docker ...
- Python第二话 初识复杂数据类型(list、dictionary、tuple)
上一篇我们简单认识了数据类型:数字number和字符串string,这篇我们就来隆重介绍一下重量级的数据类型:列表list.字典dictionary和元组tuple. 一.列表List: ①列表是什么 ...
- Java 多线程并发编程之 Synchronized 关键字
synchronized 关键字解析 同步锁依赖于对象,每个对象都有一个同步锁. 现有一成员变量 Test,当线程 A 调用 Test 的 synchronized 方法,线程 A 获得 Test 的 ...
- 云服务器Windows Server2012 配置http服务器(又称Web服务器,IIS)
出错:无法打开运行空间池.服务器管理器WinRM插件可能已损坏或丢失. 解决方法: http://shiyousan.com/post/636308065767125916 第一步是开启WinRM服务 ...
- [福大软工] W班 总成绩排行榜
评分链接 作业1 作业2 作业3 作业4 总分排名
- C语言程序设计(基础)最后一次作业-- 总结报告
本次作业是本学期的最后一次作业,有始有终,本次作业回顾下本学期的第0次作业,回答下面几个问题. 注意:在回答问题时请不要简单的回答 "不是","是".请把这当成 ...
- Beta冲刺第二天
一.昨天的困难 没困难 二.今天进度 局部测试并修复出现的bug 1.林洋洋:修复登录页面显示问题,修复日程查询问题 2.黄腾达:修复创建协作开始时间和结束时间没做检验的问题 3.张合胜:修复页面内容 ...
- Django 测试驱动开发
第一章 1.编写functional_tests.py from selenium import webdriver browser = webdriver.Firefox() browser.get ...
- 消除ExtJS6的extjs-trila字样