你的位置:首页 > 软件开发 > 操作系统 > Linux 入门记录:十二、Linux 权限机制

Linux 入门记录:十二、Linux 权限机制

发布时间:2017-09-25 19:00:09
一、权限权限是操作系统用来限制资源访问的机制,权限一般分为读、写、执行。读权限(r)用数字表示为 4 (2 ^ 2),写权限(w)用数字表示是 2(2 ^ 1),执行权限用数字表示是 1(2 ^ 0)。系统中每个文件都拥有特定的权限、所属用户及所属组,通过这样的机制来限制哪些用户 ...

Linux 入门记录:十二、Linux 权限机制

一、权限

权限是操作系统用来限制资源访问的机制,权限一般分为读、写、执行。读权限(r)用数字表示为 4 (2 ^ 2),写权限(w)用数字表示是 2(2 ^ 1),执行权限用数字表示是 1(2 ^ 0)。

系统中每个文件都拥有特定的权限、所属用户及所属组,通过这样的机制来限制哪些用户、哪些组可以对特定的文件进行什么样的操作。

每个进程都是以某个用户的身份运行,所以进程的权限与该用户的权限一样,用户的权限越大,该进程所拥有的权限也就越大。

 

二、文件权限

Linux 中,每个文件拥有以下三种权限:

权限对文件的影响对目录的影响
r(读取)可读取文件内容可列出目录内容
w(写入)可以修改文件内容可在目录创建、删除文件
x(执行)可以作为命令执行可访问目录内容

所以,目录必须拥有 "x" 权限才可查看其内容。很多时候,执行权限 "x" 对于目录而言也叫浏览权限。仅有 "r" 权限是无法查看目录内容的(因为连访问都做不到)。

 

三、UGO模型

Linux 权限基于 UGO 模型进行控制:

  • U 代表 User,是文件或文件夹所属用户的权限;G 代表 Group,是文件或文件夹所属组的权限;O 代表 Other,是其他用户对文件或文件夹的权限
  • 每一个文件的权限基于 UGO 模型进行设置
  • 权限三个一组(rwx),对应 UGO 分别设置(总共有 3 个组 9 个权限)
  • 每一个文件拥有一个所属用户和所属组,对应 UG,不属于该文件所属用户和所属组的使用 O(Other)对应的权限

命令 ls -l 可以查看当前目录下所有文件的详细信息:

Linux 入门记录:十二、Linux 权限机制

上图中,每一行的格式如下:

 drwxr-xr-x. 2 mingc mingc 4096  Sep 23 14:54  Desktop

 UGO权限

 第1位是文件类型描述符,"d"表示目录,"-"表示文件

 第2-4位"rwx"是U权限,可读可写可执行

 第5-7位"r-x"是G权限,可读可执行,不可写

 第8-10位"r-x"是O权限

 链接数量  所属用户U  所属组G  大小 日期时间 文件或目录名 

 

四、修改文件所属用户和组

命令 chown 用以改变文件的所属用户:

chown username filename

常用参数:

-R 归地修改目录下所有文件的所属用户

命令 chgrp 用以改变文件的所属组:

chgrp groupname filename

常用参数:

-R 递归地修改目录下所有文件的所属组

  

五、修改文件权限

命令 chmod 用以修改文件的权限:

chmod mode filename

mode 参数格式如下:

u、g、o  分别代表用户、组、其他a   代表ugo+、-  代表加入或删除对应权限r、w、x  代表三种权限-R   递归地修改

示例:

chmod u +rw test.md 给test.md文件的所属用户添加rw权限chmod g -x test.md  给test.md文件的所属组移除x权限chmod go +r test.md 给test.md文件的所属组和其他用户添加r权限chmod a -x test.md  给test.md文件的所属UGO移除x权限

命令 chmod 也支持以数字的方式修改权限,rwx 权限分别由数字表示如下:

r = 4 (2 ^ 2)w = 2 (2 ^ 1)x = 1 (2 ^ 0)

使用数字表示权限时,每组权限分别为对应数字之和:

rw = 4 + 2 = 6rwx = 4 + 2 + 1 = 7r-x = 4 + 1 = 5

所以,使用数字表示 UGO 权限时,可以用如下方式表示:

chmod 660 test.md 设置 UGO 权限为 rw-rw----chmod 775 test.md 设置 UGO 权限为 rwxrwxr-x

如果你对二进制位的概念不陌生,那么 rwx 权限就可以理解为:一个 4 字节整数低字节的低 3 位,x 在位 0(最低位),w 在位 1,r 在位 2,位 3 以上均为 0(关闭),从高向低看就是 rwx 的位排列。这 3 个位的打开与关闭,就产生了 2 * 2 * 2 = 8 种位组合即 8 个数值,理论上对应了 8 种权限组合,把这个 4 字节整数解释为一个十进制数值,就是一个权限组合。

再配合 UGO 模型,理论上就有 8 ^ 3 = 512 种不同角色的权限组合。(~~应该没算错吧)

 

六、实例

案例描述

现在有个某公司 Company,部门和员工如下:

部门员工
培训部(Training)

李雷(LiLei)

王雪(WangXue)

市场部(Market)

韩梅梅(HanMeimei)

林立(LinLi)

管理部(Manage)

路人甲(User1)

路人乙(User2)

不行了,名字想不出来了~~

现在,要为每个部门和员工建立相应的工作文件夹,要求如下:

  1. 所有目录、文件均保存在一个统一的文件夹下
  2. 每个部门拥有一个独立的文件夹
  3. 不同部门之间不能访问对方文件夹
  4. 每个员工在所在部门文件夹下拥有一个所属的文件夹
  5. 相同部门不同员工之间可以查看对方的文件夹,但不可修改,员工只能修改自己的文件夹

 

解决方案

好的,下面开始:

用组来表示部门,用用户来表示员工,我以 root 用户登录添加组和用户,并为用户指定附属组(部门):

Linux 入门记录:十二、Linux 权限机制

为了让整个公司的文件夹 Company 有足够的访问权限,在根目录 "/" 下创建公司的文件夹目录 /Company,并创建三个部门子目录,去掉每个部门目录的 O 权限和指定所属组:

Linux 入门记录:十二、Linux 权限机制

OK,这样就满足了前 3 个要求:有统一文件夹和多个不同的部门目录,并且不同部门之间全没有 O 权限,不能访问对方。

下面继续创建员工目录,并为每个目录指定它的所属员工和所属部门:

Linux 入门记录:十二、Linux 权限机制

好的,第 4 和第 5 个要求也满足了:每个员工有自己的文件夹,并且不同员工之间只能查看不能修改。

最后测试一下,登录 LiLei 账号:

Linux 入门记录:十二、Linux 权限机制

不同部门之间不能查看,同一部门之间可以查看不能修改,完成。

 

相关链接:

Linux安全体系的文件权限

Linux基本权限UGO

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:Linux 入门记录:十二、Linux 权限机制

关键词:linux

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录