[Z] Linux下进程的文件访问权限
对进程校验文件访问权限包括两个部分,一是确定进程的角色(属于哪个用户或者组),二是确定对应的角色是否具有该操作的权限。
首先看第一部分。默认情况下,进程的有效角色就是当前执行这个进程的用户及其所在组。但是,文件具有设置用户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。
[Z] Linux下进程的文件访问权限的更多相关文章
- 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中的每个用户必须属于一个组,不能 ...
随机推荐
- 小程序开发之改变data中数组或对象的某一属性值
前言:在小程序的开发中,我们在view中便利data中数组或对象时,很多情况下需要在js中动态改变数组或者对象中某一香的属性值. 效果图: 我给大家总结了案例如下: wxml如下: <scr ...
- 类中的迭代器__iter__
什么是迭代器 有iter()函数返回,可以通过next(it)函数取值的对象就是迭代器 迭代器协议 迭代器协议是指对象能够使用next函数获取下一项数据,在没有下一项数据时触发一个StopIterat ...
- 两个线程与stringbuffer和stringbuiler以及lock synchronized线程测试
import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public clas ...
- 自己整合的SSM框架 maven坐标大全
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- 框架重构:测试中的DateTime.Now
存在的问题 DateTime.Now是C#语言中获取计算机的当前时间的代码: 但是,在对使用了DateTime.Now的方法进行测试时,由于计算机时间的实时性,期望值一直在变化.如:计算年龄. pub ...
- Break point and VC bound
Restriction of Break Point e.g: k=2 说明在所有的dichotomy中,任意两个点不能被shatter(shatter就是能够出现所有种排列组合),即不能出现这两个点 ...
- ubuntu中安装iso文件
[font=微软雅黑]小施今天写一篇教程来教大家如何在Ubuntu中使用虚拟光驱. 在中使用是很简单的.可是很多新手却不会 前提:你所在的用户必须拥有root权限(终端中需要用到root权限).一个 ...
- WCF、WebAPI、WCFREST、WebService之间的区别【转】
转自:http://www.cnblogs.com/markli/p/4460564.html 在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了We ...
- JDK1.5java新特性
JDK1.5java增加的新特性: 自动装箱/拆箱 增强for 泛型 枚举 静态导入 可变参数 1 自动装箱/拆箱 * JDK1.5允许开发人员把一个基 ...
- Cmake编译opencv下载不了ffmpeg时的解决办法