最近在读《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的更多相关文章

  1. linux下文件权限的介绍

    linux操作系统下,使用ll查看该目录下所有文件及其文件权限,以下是对文件权限的介绍 d代表的是目录(或称之为文件夹)   红框内的这3个是代表3个组的权限每组都是3个 第一组rwx代表是本用户的权 ...

  2. Linux下文件权限的设置

    文件/目录权限设置命令:chmod 这是Linux系统管理员最常用到的命令之一,它用于改变文件或目录的访问权限.该命令有两种用法: 用包含字母和操作符表达式的文字设定法 ) 其语法格式为:chmod ...

  3. linux下文件权限更改(转载)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_33571752/article/d ...

  4. linux 下 文件权限和文件主

    文件与文件夹的权限和所有者 1.chmod -R 755 file 777 含义与来源: 777含义:分别为:所有者.同组用户.其他用户 7的来源:文件有三种操作模式:读4.写2.执行1,分别值为42 ...

  5. (转载) linux下文件权限设置中的数字表示

    chmod ABC file 其中A.B.C各为一个数字,分别表示User.Group.及Other的权限. A.B.C这三个数字如果各自转换成由“0”.“1”组成的二进制数,则二进制数的每一位分别代 ...

  6. Linux之文件权限、用户管理

    世界真美好!

  7. Linux下文件的权限

    一.Linux下查看文件属性 命令为: [root@localhost ~]# ls -al 结果: ls是『list』的意思,重点在显示文件的文件名与相关属性.而选项『-al』则表示列出所有的文件详 ...

  8. 关于linux下文件的权限问题

    今天在linux更新服务中的启动文件时,直接把更新的启动文件拷贝过来执行,报错:can't be execute 后来想了下列出了文件的详细信息中发现拷贝过去的执行文件是-r--r--r--(表示只有 ...

  9. linux之文件权限+用户权限

    chmod 文件权限命令: 文件权限: r是否能查看文件内容 w是否能修改文件的内容,需要与r权限配合使用   只有w的时候vim强制修改文件内容,会导致源文件内容清空 x是否能运行命令或脚本权限,需 ...

随机推荐

  1. Webpack执行命令参数详解

    一.概述前面的章节我们讲解了webpack的安装.webpack.config.js的 基本配置.webpack执行命名以及require方法的使用,不 知道大家有没有发现,当我们每次修改或者新增一个 ...

  2. 基于PLC-C#串口通讯,温度检测和转速监控的c#/.Net实现。

    我司为五金加工企业,其中有一条喷涂车间和流水线,客户要求能实时监控炉温温度.流水线速,并设置上下限值,达到上下限时报警. 开始考虑过USB的温度采集器,但是却没有找到带USB的光电开关,并且线路长度受 ...

  3. RESTful WebService 入门实例

      /* 新建MavenProject,使用以下代码,创建类和POM文件.使用命令行切换到Project根目录,运行mvn package(或者,选中pom.xml 文件右键单击 > run a ...

  4. Java多线程:synchronized关键字和Lock

    一.synchronized synchronized关键字可以用于声明方法,也可以用来声明代码块,下面分别看一下具体的场景(摘抄自<大型网站系统与Java中间件实践>) 案例一:其中fo ...

  5. Hie with the Pie

    Hie with the Pie poj-3311 题目大意:n+1个点,伪旅行商问题. 注释:n<=10. 想法:咳咳,第一道状压dp,下面我来介绍一下状压dp. 所谓dp,就是动态性决策规划 ...

  6. Vue探索历程(一)

    使用vue.js原文介绍:Vue.js是一个构建数据驱动的web界面库.Vue.js的目标是通过尽可能简单的API实现响应式数据绑定和组合的视图组件.vue.js上手非常简单,先看看几个例子: 例一: ...

  7. 去除input的自动填充色

    input:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px #ffffff inset !important; }

  8. Rails 定时任务——whenever实现周期性任务

    根据项目的进展,我们需要实现后台进行定时读取信息的功能,而最关键的实现部分是周期性功能,根据调研,决定使用whenever来实现这一功能. github:https://github.com/java ...

  9. Beta总结篇

    45°炸 031502601 蔡鸿杰 031502604 陈甘霖 031502632 伍晨薇 一.项目预期进展及现实进展 项目预期计划 现实进展 Github使用 √ 日拍 (调用相机.相册) √ 足 ...

  10. C语言---字符数组

    一.PTA实验作业 题目1:7-2 统计一行文本的单词个数 1. 本题PTA提交列表 2. 设计思路 定义循环变量i,j定义不为空格的字符数count,定义单词数number,i,j,count,nu ...