转自:https://www.cnblogs.com/mingc/p/7591287.html

一、权限

权限是操作系统用来限制资源访问的机制,权限一般分为读、写、执行。

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

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

二、文件权限

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

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

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

三、UGO模型

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

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

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

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

 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 用以改变文件的所属用户:

1
chown username filename

常用参数:

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

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

1
chgrp groupname filename

常用参数:

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

  

五、修改文件权限

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

1
chmod mode filename

mode 参数格式如下:

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

示例:

1
2
3
4
chmod u +rw test.md    给文件的所属用户添加rw权限
chmod g -x test.md     给文件的所属组移除x权限
chmod go +r test.md    给文件的所属组和其他用户添加r权限
chmod a -x test.md     给文件的所属UGO三个模型均移除x权限

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

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

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

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

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

1
2
chmod 0660 test.md  设置 UGO 权限为 rw-rw----
chmod 0775 test.md  设置 UGO 权限为 rwxrwxr-x

六、实例

案例描述

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

部门 员工
培训部(Training)

李雷(LiLei)

王雪(WangXue)

市场部(Market)

韩梅梅(HanMeimei)

林立(LinLi)

管理部(Manage)

路人甲(User1)

路人乙(User2)

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

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

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

解决方案

好的,下面开始:

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

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

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

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

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

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

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

相关链接:

Linux安全体系的文件权限

linux文件权权限

作者:mingc - 博客园

出处:http://www.cnblogs.com/mingc

声明:本文发表于博客园。如需转载,请注明出处,并在文章页面明显位置给出原文链接,否则保留追究其法律责任的权利。

Linux 入门记录:十二、Linux 权限机制【转】的更多相关文章

  1. Linux 入门记录:二十、Linux 包管理工具 YUM

    一.YUM(Yellowdog Updater, Modified) 1. YUM 简介 RPM 软件包形式管理软件虽然方便,但是需要手动解决软件包的依赖问题.很多时候安装一个软件首先需要安装 1 个 ...

  2. Linux 入门记录:二、Linux 文件系统基本结构

    一.树状目录结构 Linux 文件系统是一个倒置的单根树状结构.文件系统的根为"/":文件名严格区分大小写:路径使用"/"分割(Windows 中使用" ...

  3. Linux学习之十二-Linux文件属性

    Linux文件属性 在Linux中,对于每个文件都有相应属性,以Linux中root用户家目录下新建文件a.txt为例,在a.txt中输入几个字符 使用命令ls -ild a.txt查看文件的权限等 ...

  4. Linux入门(用户操作及权限)

    Linux入门之 用户操作及权限   在一个公司里,老板与员工有上下级之分,员工与员工间也有上下级或同级之分.每个级别在公司的职责不同,权限也不同.在Linux操作系统中也一样,不同的用户身份拥有着不 ...

  5. Linux入门基础教程之Linux下软件安装

    Linux入门基础教程之Linux下软件安装 一.在线安装: sudo apt-get install 即可安装 如果在安装完后无法用Tab键补全命令,可以执行: source ~/.zshrc AP ...

  6. RabbitMQ入门教程(十二):消息确认Ack

    原文:RabbitMQ入门教程(十二):消息确认Ack 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csd ...

  7. 无废话ExtJs 入门教程十二[下拉列表联动:Combobox_Two]

    无废话ExtJs 入门教程十二[下拉列表联动:Combobox_Two] extjs技术交流,欢迎加群(201926085) 不管是几级下拉列表的联动实现本质上都是根据某个下拉列表的变化,去动态加载其 ...

  8. Bootstrap入门(十二)组件6:导航标签页

    Bootstrap入门(十二)组件6:导航标签页   1.标签页 2.胶囊式标签页 3.垂直展示 4.两端对齐的标签页 5.禁用的链接 6.添加下拉菜单   先引入本地的CSS文件和JS文件(注:1. ...

  9. MyBatis基础入门《十二》删除数据 - @Param参数

    MyBatis基础入门<十二>删除数据 - @Param参数 描述: 删除数据,这里使用了@Param这个注解,其实在代码中,不使用这个注解也可以的.只是为了学习这个@Param注解,为此 ...

  10. UWP入门(十二)--数据绑定用法

    原文:UWP入门(十二)--数据绑定用法 主要几个元素: Template DataTemplate ItemSource 数据绑定是一个数据提取的方法,能使数据和UI上的控件紧密相连,下面的Demo ...

随机推荐

  1. 自学Aruba2.1-Aruba Web UI --Dashbord面板介绍

    点击返回:自学Aruba之路 自学Aruba2.1-Aruba Web UI --Dashbord面板介绍 本文所有设计的的controller版本信息如下:  Aruba7205 V6.4.4.16 ...

  2. 自学Aruba5.1-Aruba 基于角色(role)的策略管理(重点)

    点击返回:自学Aruba之路 自学Aruba5.1-Aruba 基于角色(role)的策略管理(重点) 1. 角色Role介绍 在ArubaOS中,用户(User)指的是已经完成连接,并获取到IP地址 ...

  3. vue使用v-if v-show页面闪烁,div闪现的解决方法

    v-if和v-show可能是日常开发中最常用的两个指令,虽然看上去两者功能是类似的,但是两者还是存在很大区别的. v-if与v-show区别: 在切换 v-if 块时,Vue.js 有一个局部编译/卸 ...

  4. poj 3683(2-SAT+SCC)

    传送门:Problem 3683 https://www.cnblogs.com/violet-acmer/p/9769406.html 参考资料: [1]:挑战程序设计竞赛 题意: 有n场婚礼,每场 ...

  5. 鼠标监听事件MouseListener

    public class Demo extends JFrame { private JTextArea textArea; public Demo() { setBounds(100, 100, 4 ...

  6. Java_myBatis_逆向工程

    所谓逆向工程,就是根据数据库自动生成项目工程(包括了Interface.POJO.映射文件xml) 逆向工程包:https://github.com/wcyong/mybatisGeneratorCu ...

  7. python中的位运算符

    按位运算符是把数字看作二进制来进行计算的.Python中的按位运算法则如下,下表中变量 a 为 60,b 为 13,二进制格式如下: a = 0011 1100 b = 0000 1101 ----- ...

  8. iptables 代理转发配置

    增加命令 [root@pre /]# iptables -t nat -A PREROUTING -s 39.15.15.15/32 -d 221.11.8.200/32 -p tcp -m tcp ...

  9. xgboost应用

    在业务中,我们经常需要对数据建模并预测.简单的情况下,我们采用 if else 判断(一棵树)即可.但如果预测结果与众多因素有关,而每一个特征的权重又不尽相同. 所以我们如何把这些特征的权重合理的找出 ...

  10. oracle全文检索【转】【补】

    全文检索 oracle对使用几十万以上的数据进行like模糊查询速度极差,包括 like 'AAA%' ,like '%AAA',like '%AAA%',like '%A%A%'的那些模糊查询.网上 ...