Unix权限管理
Unix权限管理
Table of Contents
1 Unix权限管理
权限管理实际就是身份认证和访问权限校验,被授权的用户可获得权限,反之,则否。 在 Unix 中用到权限管理的场合包括:
- 登录
- 进程对文件的存取访问
第1点暂不予讨论。
- 身份认证的过程实际就是:“系统”校验“主体”是否符合“客体”所期望的身份的过程。在“进程对文件的存取访问”的身份认证过程中,内核担当“系统”角色,进程为“主体”,文件则为“客体”。 那么,认证的依据是什么?主客双方都需要提供某种类型的身份凭证!在“进程对文件的存取访问”的认证过程中,进程提供的身份凭证是有效用户ID和有效组ID;文件提供的凭证则是属主用户ID和属主组ID。
- 在提供差异化权限管理的系统中完成身份认证只是第一步,“客体”对不同“主体”的开放程度可能是不同的,如果没有访问权限校验的过程,则无法提供这种特性。访问权限校验是指:在指定身份下,“客体”是否可满足特定类型的访问申请。
2 进程权限
任意Unix进程可有如下“身份”:
- 实际用户ID、有效用户ID、保存的设置用户ID
- 实际组ID、有效组ID、保存的设置组ID
这些“身份“的访问控制函数总结如下:
#include <unistd.h> uid_t getuid( ); // 获取实际用户ID
uid_t geteuid( ); // 获取有效用户ID
int setuid( uid_t uid ); // 设置实际用户ID和有效用户ID
int seteuid( uid_t uid ); // 设置有效用户ID gid_t getgid( ); // 获取实际组ID
gid_t getegid( ); // 获取有效组ID
int setgid( gid_t gid ); // 设置实际组ID和有效组ID
int setegid( gid_t gid ); // 设置有效组ID
setuid 和 setgid 可按规则设置调用进程的实际和有效“身份”,这些规则如下:
- 以 setuid 为例:
- 若调用进程具有超级用户特权1,则将调用进程的实际用户ID、有效用户ID、保存的设置用户ID都设为uid
- 若调用进程的实际用户ID或保存的设置用户ID等于参数uid,则将调用进程的有效用户ID设置为uid
- setgid 的规则与 setuid 类似
3 文件权限
文件跟权限管理相关的两条属性分别是:
- 属主,它指明了文件的归属,包括:
- 用户ID
- 组ID
- 访问控制权限,它指明了文件对不同身份的进程所允许的访问操作,共包括三组:
- 对所属用户所允许的访问操作: -rwx
- 对所属组所允许的访问操作: -—rwx
- 对其他用户所允许的访问操作: -——rwx
4 进程对文件的存取访问的权限校验过程
- 若进程有效用户ID为0,则允许访问
- 若进程有效用户ID等于文件所属者用户ID,则按用户访问权限位进行访问
- 若进程有效组ID等于文件所属者组ID,则按组访问权限位进行访问
- 若以上都不匹配,则按其他用户访问权限位进行访问
Footnotes:
1 即,调用进程的有效用户ID等于0
Unix权限管理的更多相关文章
- SpringMVC+Shiro权限管理【转】
1.权限的简单描述 2.实例表结构及内容及POJO 3.Shiro-pom.xml 4.Shiro-web.xml 5.Shiro-MyShiro-权限认证,登录认证层 6.Shiro-applica ...
- MySQL之权限管理
MySQL之权限管理 一.MySQL权限简介 关于mysql的权限简单的理解就是mysql允许你做你全力以内的事情,不可以越界.比如只允许你执行select操作, 那么你就不能执行update操作.只 ...
- SVN权限管理
转自:http://www.cnblogs.com/xingchen/archive/2010/07/22/1782684.html /******************************** ...
- mysql用户和权限管理
用户和权限管理 Information about account privileges is stored in the user, db, host, tables_priv, columns_p ...
- (大数据工程师学习路径)第一步 Linux 基础入门----用户及文件权限管理
用户及文件权限管理 实验介绍 1.Linux 中创建.删除用户,及用户组等操作. 2.Linux 中的文件权限设置. 一.Linux 用户管理 Linux 是一个可以实现多用户登陆的操作系统,比如“李 ...
- Linux(3)用户和权限管理
用户, 权限管理 Linux中root账号通常用于系统的维护和管理, 它对操作系统的所有部分具有不受限制的访问权限 在Unix/Linux安装过程中, 系统会自动创建许多用户账号, 而这些默认的用户就 ...
- Unix权限这点事
Unix/Linux的权限管理还是比较复杂的,别人说看高级环境编程得看2,3遍.我想这应该是在Linux有了一定基础.但是我看的过程中确需要反复推敲,有些地方得翻来覆去看上5,6遍甚至更多,下面是自己 ...
- Linux第四节 组管理、用户管理、权限管理 / chmod /chown / umask / vim
三期第三讲1.组管理/用户管理(重要文件系统会实时备份 file-) vim/etc/group: 组管理文件://组名:密码控位键:组id:成员 vim/etc/gshadow:组密码管理文件:// ...
- Linux常用命令(第二版) --权限管理命令
权限管理命令 1.chmod[change the permissions mode of a file] : /bin/chmod 语法: chmod [{ugo}{+-=}{rwx}] [文件或目 ...
随机推荐
- lambda匿名函数
1.python中的匿名函数的格式 lambda arg1,arg2...,argN:expression (lambda关键字后,冒号":"前是参数,多个参数用逗号&qu ...
- 面试iOS遇到这种笔试《操作评估》
一.开发团队需求: 开发一款软件需要前端后台和推广的人.1,首先要明确设计这个APP的理念2,合理的列出APP的需求3,找到后台人员让他们搭好后台数据4,前端的人负责展示到界面上5,推广人员负责让更多 ...
- GetStoredProcCommand和GetSqlStringCommand的区别
原文:http://www.ithao123.cn/content-4004602.html http://hi.baidu.com/847270942/blog/item/c224dd557ff74 ...
- (转)R空间数据处理与可视化
前言 很多朋友说在R里没法使用高德地图,这里给出一个基于leaflet包的解决方法. library(leaflet) # 添加高德地图 m <- leaflet() %>% addTil ...
- XML.01-语法简介
body,td { font-family: calibri; font-size: 10pt } XML.01-语法简介 文档声明 元素(标签) 属性 注释 特殊字符 CDATA区域 处理指令 ...
- HP_UX HBA 卡信息收集脚本
#/usr/bin/shname1=`hostname`_fcioscan -kfnNC fc |grep "/dev/" >/tmp/data/$name1.txtnum1 ...
- Could not find the following Boost libraries: boost_python3
安装Boost.NumPy时报错: CMake Error at /usr/share/cmake/Modules/FindBoost.cmake:1794 (message): Unable to ...
- python3.5------day4--function
函数 函数的作用: 1.减少重复代码 2.扩展性强 3.使程序变的可维护 函数的定义: def test(): print("I'm yao") #def 是固定的,test为函数 ...
- 数据结构算法[c语言]
共16章,共四部分:基础知识,数据结构,排序和搜索. 所有的实现都是使用C语言缩写.任何语言都有优缺点,选用C语言是因为它使用的广泛. 第一章: 导论 第二章: 算法分析原理 第三章: 基本数据结构 ...
- Shell 的变量功能
搜寻路径PATH(系统预设变量) 执行命令时,系统透过PATH得路径顺序搜寻指令,如果再搜寻完后还找不到该指令,就会打印错误讯息[command not fount]. 环境变量 进入shell之 ...