Linux下进程的文件访问权限
本文转自 http://blog.csdn.net/chosen0ne/article/details/10581883
对进程校验文件访问权限包括两个部分,一是确定进程的角色(属于哪个用户或者组),二是确定对应的角色是否具有该操作的权限。
首先看第一部分。默认情况下,进程的有效角色就是当前执行这个进程的用户及其所在组。但是,文件具有设置用户ID位和设置组ID位(stat.st_mode的S_ISUID和S_ISGID),用于改变这种默认的行为,将进程的有效角色设置为文件所属的用户和组。这主要用于解决执行进程的用户或组不具备修改这个文件的权限,但却不得不对文件进行修改的情况。比如,/etc/passwd就是用了设置用户ID位,因为passwd允许任意用户修改其密码,而只有超级用户才具有对该文件的写权限,所以在普通用户执行passwd修改密码时,必须将设置用户ID位置位。这里只要记住,进程的角色只能是执行它的用户或者是它要操作的文件的用户。
文件的权限包括用户、组和其他角色的r(读)、w(写)和x(执行)。在根据进程角色检验权限时,可以分为两种:文件权限校验和目录权限校验。文件权限校验比较简单,在open文件时执行了要对文件进行的操作(O_RDONLY、O_WRONLY和O_RDWR),或者是执行一个文件,只要确定是否具有该权限即可,具体规则后文介绍。目录也是具有权限的,主要限制其所属的文件的一些操作,包括:
1. 如果要打开一个文件,必须具有文件路径中所有目录的执行权限(即,搜索文件需要目录的执行权限),比如打开文件/home/work/foo,则必须对/,/home和/home/work三个目录具有执行权限。
2. 要从一个目录删除或者添加一个文件,则必须对这个目录具有写权限和执行权限,删除文件时不需要对该文件具有相关权限。
3. 要获取一个目录下所有文件,则需要对该目录具有读权限。
在打开、创建和删除文件时,内核会进行访问权限的校验,规则如下:
1. 若进程的有效用户ID是0(即,超级用户),则允许访问。
2. 若进程的有效用户ID等于文件的所有者ID(即,进程拥有该文件),那么就要检验所有者是否具有进行该操作的权限,若具有该权限,则允许,否则拒绝。
3. 若进程的有效组ID是文件的组ID,那么检验该组是否具有进行该操作的权限,若具有该权限,则允许,否则拒绝。
4. 执行其他角色的权限检验,如果具有该权限,则允许访问,否则拒绝。
这种测试方式使用的是进程的有效用户ID和组ID,通过access可以测试进程的实际用户ID和组ID是否具有该权限。但是只能测试,而不能使用实际角色进行某个文件操作。
在进行创建一个文件时,需要确定这个文件的所有权问题。这个文件的用户就是进程的有效用户,而组ID,POSIX允许有两种实现:
1. 新文件的组ID是进程的有效组ID。
2. 新文件的组ID是它所在目录的组ID。
Linux下进程的文件访问权限的更多相关文章
- [Z] Linux下进程的文件访问权限
原文链接:http://blog.csdn.net/chosen0ne/article/details/10581883 对进程校验文件访问权限包括两个部分,一是确定进程的角色(属于哪个用户或者组), ...
- Linux 下指定端口开放访问权限
Linux 下指定端口开放访问权限 作者:Grey 原文地址: 博客园:Linux 下指定端口开放访问权限 CSDN:Linux 下指定端口开放访问权限 环境 CentOS 系和 Debian 系的防 ...
- 【netcore基础】wwwroot下静态资源文件访问权限控制
本文参考如下博问 https://q.cnblogs.com/q/107836 业务要求 上传的资源文件(.mp3 .mp4等)只有购买了之后才能有权限访问,所以对上传的资源文件目录进行访问权限控制 ...
- [apue] linux 文件访问权限那些事儿
前言 说到 linux 上的文件权限,其实我们在说两个实体,一是文件,二是进程.一个进程能不能访问一个文件,其实由三部分内容决定: 文件的所有者.所在的组: 文件对所有者.组用户.其它用户设置的权限访 ...
- 【Linux学习】Linux下用户组、文件权限详解
原文地址:http://www.cnblogs.com/123-/p/4189072.html Linux下用户组.文件权限详解 用户组 在linux中的每个用户必须属于一个组,不能独立于组外.在li ...
- linux下进程权限分析
转自http://blog.chinaunix.net/uid-27105712-id-3349522.html 在linux下,关于文件权限,大部分人接触比较多,也比较熟悉了解.但是对进程权限一般知 ...
- 【转载】在Linux下,一个文件也有三种时间,分别是:访问时间、修改时间、状态改动时间
在windows下,一个文件有:创建时间.修改时间.访问时间.而在Linux下,一个文件也有三种时间,分别是:访问时间.修改时间.状态改动时间. 两者有此不同,在Linux下没有创建时间的概念,也就是 ...
- UNIX环境编程学习笔记(7)——文件I/O之文件访问权限与进程访问控制
lienhua342014-09-02 1 文件的设置用户 ID位 和设置组 ID位 与进程相关联的 ID 如下表所示, 表 1: 与进程相关联的用户 ID 和组 ID 实际用户 ID 我们实际上是谁 ...
- (转)Mysql数据库之Binlog日志使用总结Linux下用户组、文件权限详解
Linux下用户组.文件权限详解 原文:http://blog.csdn.net/sdulibh/article/details/51566772 用户组 在linux中的每个用户必须属于一个组,不能 ...
随机推荐
- windows笔记
三星(SAMSUNG)905S3G-K07 安装Windows 7 过程分享 http://www.cnblogs.com/scue/p/4100743.html 打开方式没有excel http:/ ...
- sql server数据同步方案-日志传送
1 功能描述 本方案采用日志传送模式,把核心数据库(主数据库)定期同步到灾备数据库(辅助服务器)及备份库(辅助服务器,便于其他系统使用,减轻主数据压力),期间,如果发生异常导致无法同步,将以电子邮件. ...
- sql 练习(1)
1.建立实验表 CREATE TABLE STUDENT (SNO ) NOT NULL, SNAME ) NOT NULL, SSEX ) NOT NULL, SBIRTHDAY DATE, CLA ...
- window.showDialog()兼容性处理
ModalDialog 是什么? showModalDialog 是js window对象的一个方法, 和window.open一样都是打开一个新的页面. 区别是: showModalDialog打开 ...
- sql 函数 总结
聚合函数 Avg(numeric_expr)返回integer.decimal.money.float---返回组中各值的平均值 Count(*|column_name|distinct column ...
- UVa 11488 - Hyper Prefix Sets
找 前缀长度*符合该前缀的字符串数 的最大值 顺便练了一下字典树的模板 #include <iostream> #include <cstdio> #include <c ...
- 理解Window和WindowManger
一.Window简介 作用:桌面上显示一个类似悬浮的东西. 介绍:Window是一个抽象类,实现是由PhoneWindow.WindowManager是外界访问Window的入口.但是最终实现是在Wi ...
- 串口调试工具(Python2.7+pyserial+Tkinter)
需要与串口设备进行通讯,那么一个调试工具是必须的. 根据我自己的需要,写了个简易版本的串口调试工具: 预览图: ====================== 项目结构: COM --SerialHel ...
- python核心编程-习题-第二章
PS:PDF在线地址:http://bcmi.sjtu.edu.cn/~zhaohai/ptm2012/data/Python-kernel.programming.v2.pdf 2-1 变量,pr ...
- 在WPF中自定义你的绘制(一)
原文:在WPF中自定义你的绘制(一) 在WPF中自定义你的绘制(一) ...