用户、用户组与文件的关系

在了解权限管理之前先创建一些用户和用户组便于后续学习,在root用户下操作:

# 创建两个用户组
[root@localhost data]# groupadd kaifa
[root@localhost data]# groupadd ceshi # 创建三个用户,指定他们进入的用户组
[root@localhost data]# useradd -g kaifa zhangsan
[root@localhost data]# useradd -g kaifa lisi
[root@localhost data]# useradd -g ceshi wangwu # 设置三个用户的密码,这里我统一设置为123
[root@localhost data]# passwd zhangsan
[root@localhost data]# passwd lisi
[root@localhost data]# passwd wangwu

登录张三用户,在~目录中创建一个1.txt文件,关系如下图所示

[zhangsan@localhost ~]$ touch 1.txt
[zhangsan@localhost ~]$ ls
1.txt

环境已经模拟好了,现在分析一下1.txt文件和这几个用户之间的关系:

  • 张三创建了这个文件,那么张三就是该文件的所有者

  • 张三创建了这个文件,同时张三属于开发组,那么这个文件也属于开发组,开发组下除了张三还有李四,那么李四就是同组的用户

  • 王五既不是文件的所有者,和文件也不属于同一个组,那么对于文件来说王五就是其他组的用户

如果不知道该文件的所有者是谁,属于哪个组,可以用ls -l或者ll命令来查看

通过分析可得知,文件与用户可以有三种关系:所有者、同组,其他组,请务必牢记这三种关系,他与权限有着密切的关联

权限的基本知识

权限代表着用于对文件/文件夹操作的控制,可以控制用户是否有权利查看文件、修改文件以及执行文件

如何查看权限信息

详细的权限信息,在我们使用ll命令的时候就可以看到,列表的第一列就代表权限信息

可以发现他给出的权限信息为-rw-r--r--,完整的权限信息是由四部分组成,将他们拆开后如下所示

后面的三组就不细说了,结合之前说的就能理清,这里介绍下第一位文件类型,简单创建几个文件观察首位的变化

如果是文件夹,首位就是d,如果是文件首位就是-,如果是软连接首位就是l...... 更多的这里就不细说了
[zhangsan@localhost ~]$ touch 1.txt
[zhangsan@localhost ~]$ mkdir -p files/1/2/3
[zhangsan@localhost ~]$ ln -s files/1/2/ 3
[zhangsan@localhost ~]$ ll
总用量 0
-rw-r--r--. 1 zhangsan kaifa 0 12月 22 16:35 1.txt
-rw-r--r--. 1 zhangsan kaifa 0 12月 22 16:35 2.txt
lrwxrwxrwx. 1 zhangsan kaifa 10 12月 22 16:34 3 -> files/1/2/
drwxr-xr-x. 3 zhangsan kaifa 15 12月 22 16:33 files

现在回过头来看1.txt的权限信息-rw-r--r--,首先通过首位可以看出他是一个普通文件,接下来分析一下他的权限信息

  • zhangsan作为所有者,可以对文件进行查看和编辑

  • lisi与文件属于同一个组,可以对文件进行查看操作

  • wangwu属于其他组,同样可以对文件进行查看

然后切换到/home目录,再查看该目录下的文件夹的权限信息

[zhangsan@localhost ~]$ cd /home
[zhangsan@localhost home]$ ll
总用量 0
drwx------. 3 lisi kaifa 78 12月 22 14:24 lisi
drwx------. 3 wangwu ceshi 78 12月 22 14:24 wangwu
drwx------. 6 zhangsan kaifa 155 12月 22 16:35 zhangsan

之前说过每个目录代表着一个用户,而每个目录的权限都为drwx------,也就是说除了目录所有者之外任何人都没有权限查看该目录,这也就解释了为什么不能查看其他用户目录的问题

权限信息在文件/文件夹上的作用

权限信息在文件和在文件夹上起到的作用分别是不一致的,具体如下

当目标是一个文件时:

  • r 可以控制是否有权限查看该文件的内容

  • w 可以控制是否有权限修改文件的内容,需要注意的是就算有修改权限也并不代表可以删除该文件,判断一个文件是否允许被删除需要观察该文件所在的目录的权限信息

  • x 可以控制是否拥有执行文件的权限

当目标是一个目录时:

  • r 可以控制是否有权限移动到该目录下,是否有权限查看目录下的文件

  • w 可以控制是否有权限增删目录下的文件

  • x 可以控制是否拥有执行文件的权限

修改权限信息

由于修改权限信息本身需要的权限较大,这里建议在root用户下进行操作,在修改权限信息之前先看一眼这个表格的内容

中文解释 英文全拼 简写字母 权限数字
可读 read r 4
可写 write w 2
可执行 execute x 1

设置权限信息

权限包含可读、可写、可执行三种操作,而所有者、同组、其他组又分别有着各自的权限,那么修改权限就是围绕着这几个基本属性进行设置的

设置权限信息的命令使用方法为chmod [权限信息] [目标文件/文件夹],看一下下面这行命令

# u=rw:u的全拼为user所有者,所有者拥有r读和w写的权限
# g=r:g的全拼为group同组,同组拥有r读的权限
# o=r:o代表other其他组,其他组拥有r读的权限
[root@localhost zhangsan]# chmod u=rw,g=r,o=r 1.txt # 所有者拥有所有权限,本组拥有读写全选,其他组拥有读权限
[root@localhost zhangsan]# chmod u=rwx,g=rw,o=r 1.txt # 所有者保持不变,同组只能读,其他组只能读
[root@localhost zhangsan]# chmod g=r,o=r 1.txt

修改权限信息

除开使用等号来设置权限之外,还可以使用加号和减号来修改权限,如下

# 本组设置只读的权限
[root@localhost zhangsan]# chmod g=r 1.txt # 本组添加执行的权限
[root@localhost zhangsan]# chmod g+x 1.txt # 其他组添加修改和执行的权限
[root@localhost zhangsan]# chmod o+wx 1.txt # 其他组移除修改和执行的权限
[root@localhost zhangsan]# chmod o-wx 1.txt # 本组添加读的权限移除执行的权限
[root@localhost zhangsan]# chmod g+w-x 1.txt

数字方式设置权限信息

除开上面的两种方法之外,还可以使用数字代表权限信息,上面的表格中记录了每个权限代表的数字,将需要赋予的权限的数字相加就可以了

数字设置权限的命令使用规范为chmod [所有者权限][同组权限][其他组权限],如下所示

# 所有者有读写的权限(4+2),同组与其他组有读的权限(4)
[root@localhost zhangsan]# chmod 644 1.txt # 所有者有读写执行的权限(4+2+1),同组有读的权限(4),其他组没有任何权限(0)
[root@localhost zhangsan]# chmod 740 1.txt # 所有者、同组、其他组全部拥有所有权限(4+2+1)
[root@localhost zhangsan]# chmod 777 1.txt

修改文件所有者以及文件所有组

文件的操作全选与所有者和所有组有着密切的关系,可以通过ll命令查看这些信息,当然这些信息也可以修改

# 修改文件所有者为wangwu
[root@localhost zhangsan]# chown wangwu 1.txt # 修改文件所在组为测试
[root@localhost zhangsan]# chgrp ceshi 1.txt

需要注意的是修改文件所有者后,文件所在组并不会随着所有者的改变而改变,想要修改文件所在组需要手动执行命令才可以进行修改

CentOS7学习笔记(六) 用户权限管理的更多相关文章

  1. PostgreSQL学习之【用户权限管理】说明

    背景 最近在学习PostgreSQL,看了用户权限管理文档,涉及到的知识点比较多,顺便写篇文章进行整理并不定时更新,也方便自己后续进行查阅. 说明 注意:创建好用户(角色)之后需要连接的话,还需要修改 ...

  2. MySQL学习笔记二:权限管理

    1. 创建和删除用户,mysql中的用户是由用户名和主机名来确定的 create user "user_name@host_name" identified by passwd; ...

  3. linux学习笔记二-----文件权限管理

    一.分析文件权限(ln -s 文件名 快捷方式名 用来创建文件的快捷方式,下方ll查看信息时会在第一个字符处显示l) [hjp@bogon ~]$ ll total 4 drwxrwxr-x. 2 h ...

  4. MySql 在cmd下的学习笔记 —— 有关用户权限的操作(grant)

    用户连接到MySQL时: [用户]   <---->   [服务器] 分为2个阶段: 1:有没有权限连接: 2:有没有执行此操作的权利.(如select, update……) 判断依据:( ...

  5. Linux学习笔记(六) 进程管理

    1.进程基础 当输入一个命令时,shell 会同时启动一个进程,这种任务与进程分离的方式是 Linux 系统上重要的概念 每个执行的任务都称为进程,在每个进程启动时,系统都会给它指定一个唯一的 ID, ...

  6. Python 学习 第十篇 CMDB用户权限管理

    Python 学习 第十篇 CMDB用户权限管理 2016-10-10 16:29:17 标签: python 版权声明:原创作品,谢绝转载!否则将追究法律责任. 不管是什么系统,用户权限都是至关重要 ...

  7. 一文带你学习DWS数据库用户权限设计与管理

    前言 本文将介绍DWS基于RBAC(Role-Based Access Control,基于角色的访问控制)的数据库用户权限管理.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成 ...

  8. ClickHouse学习系列之二【用户权限管理】

    背景 最近花了些时间看了下ClickHouse文档,发现它在OLAP方面表现很优异,而且相对也比较轻量和简单,所以准备入门了解下该数据库系统.在安装完之后首先做的应该如何设置用户密码以及权限控制.因为 ...

  9. Liunx学习笔记(三) 文件权限

    一.文件权限 1.查看文件权限 (1)文件权限 在 Linux 中对于文件有四种访问权限,列举如下: 可读取:r,Readable 可写入:w,Writable 可执行:x,Execute 无权限:- ...

随机推荐

  1. 如何在 Kubernetes 集群中玩转 Fluid + JuiceFS

    作者简介: 吕冬冬,云知声超算平台架构师, 负责大规模分布式机器学习平台架构设计与功能研发,负责深度学习算法应用的优化与 AI 模型加速.研究领域包括高性能计算.分布式文件存储.分布式缓存等. 朱唯唯 ...

  2. LOJ #6044 -「雅礼集训 2017 Day8」共(矩阵树定理+手推行列式)

    题面传送门 一道代码让你觉得它是道给初学者做的题,然鹅我竟没想到? 首先考虑做一步转化,我们考虑将整棵树按深度奇偶性转化为一张二分图,即将深度为奇数的点视作二分图的左部,深度为偶数的点视作二分图的右部 ...

  3. getdelim函数

    利用getdelim函数分割读取字段,将文件制表符替换为空格符 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int main( ...

  4. Python基础之流程控制for循环

    目录 1. 语法 2. for+break 3. for+continue 4. for循环嵌套 1. 语法 while循环可以对任何内容循环,但循环次数不可控 for循环基于容器类型的长度,循环次数 ...

  5. EXCEL excel中运用ctrl+D、ctrl+enter、ctrl+E批量填充数据

    在excel中,利用鼠标拖动可以快速向下或者向右填充序列或者复制单元格.但是利用快捷键也可以实现多种填充方式,本文就为大家介绍一些ctrl系列快捷键的填充,一起来看看吧. 封面tu 一,ctrl+D/ ...

  6. mysql 实现某年单季度内的品牌TOPn销量在此年此单季度内销量占比

    数据表:       结果表: mysql语句:  

  7. abuse

    abuse 近/反义词: ill-treat, maltreat, mistreat, misuse, prostitute, spoil; defame, disparage, malign, re ...

  8. 内存管理——array new,array delete

    1.array new array new就是申请一个数组空间,所以在delete的时候一定不能忘记在delete前加[] delete加上[]符号以后,就相当于告诉系统"我这里是数组对象, ...

  9. C++ 成绩排名

    1004 成绩排名 (20分)   读入 n(>)名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式: 每个测试输入包含 1 个测试用例,格式为 第 1 行:正整数 ...

  10. mysql触发器实例说明

    触发器是一类特殊的事务 ,可以监视某种数据操作(insert/update/delete),并触发相关操作(insert/update/delete). 看以下事件: 完成下单与减少库存的逻辑 Ins ...