一章让你明白什么是权限

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Linux 权限

什么是Linux 权限?

在Linux系统中,权限用于控制对文件和目录的访问和操作。每个文件和目录都有一个与之关联的权限设置

每个部分都有三个权限:读取(r)、写入(w)和执行(x)

不同文件类型的有意义:针对普通文本文件和目录,相同的写法,但代表的意义不同

文件:

r:可读,可以使用类似cat等命令查看文件内容;

w:可写,可以编辑或删除此文件;

x: 可执行,executable,可以命令提示符下当作命令提交给内核运行

r单独存在,可查看文件内容

w单独存在,看不到文件内容,但是可以强制修改文件内容,会覆盖原文件内容,单独存在,意义不大

x单独存在,毫无意义

目录:

r: 可以对此目录执行ls以列出内部的所有文件;

w: 可以在此目录创建、修改、删除文件;

x: 可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息;

只有r权限时,可以读(有报错),不能写,也不能进入目录

只有w权限时,毫无意义

只有x权限时,只能进入,不能读,不能写

目录的rw权限:可以查看内容,不可以进入目录,不能删除目录或它里面的文件

目录的rx权限:可以查看内容,可以进入目录,不可以修改目录的内容

目录的wx权限:不可以查看目录内容,可以进入目录,可以删除

目录下的文件,前提是你需要知道目录下有什么文件

查看文件的权限

可以使用 ls -l ,如果是目录需要加上 -d选择,否则值限制此目录下有什么文件

[root@mysql tmp]# ls
test test.txt
[root@mysql tmp]# ll test.txt
-rw-r--r-- 1 root root 0 Apr 20 09:01 test.txt
[root@mysql tmp]# ll -d test
drwxr-xr-x 2 root root 6 Apr 20 09:01 test

image.gif

权限针对的三类用户:

权限由三个部分组成:所有者、组和其他用户

u: user 属主

g: group 属组

o: other 其它用户

ls -l 命令显示的意义

image.gif编辑

[root@mysql tmp]# ls -l test.txt
-rw-r--r-- 1 root root 0 Apr 20 09:01 test.txt

image.gif

第一栏代表这个文件的类型与权限

第一个字符代表这个文件是目录、文件或链接文件等等

当为[ d ]则是目录,例如上表文件名为“.config”的那一行;当为[ - ]则是文件,例如上表文件名为“initial-setup-ks.cfg”那一行;

若是[ l ]则表示为链接文件(link file);

若是[ b ]则表示为设备文件里面的可供储存的周边设备(可随机存取设备);

若是[ c ]则表示为设备文件里面的序列埠设备,例如键盘、鼠标(一次性读取设备)

接下来的字符中,以三个为一组,且均为“rwx” 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute).要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。

第一组为文件拥有者可具备的权限

第二组为加入此群组之帐号的权限

第三组为非本人且没有加入本群组之其他帐号的权限

举例:

若有一个文件的类型与权限数据为“-rwxr-xr--”,请说明其意义为何?

所有者:可读、可写、可执行(rwx

所属组:本例中为可读可执行(rx

其他人:只读

修改文件的属性和权限

chgrp 改变文件所属群组

chown 改变文件拥有者

chmod 改变文件的权限, SUID, SGID, SBIT等等的特性

举例:

1.  改变文件的拥有者。将test.txt文件的拥有者改为test用户。

[root@mysql tmp]# ll test.txt
-rw-r--r-- 1 root root 0 Apr 20 09:01 test.txt
[root@mysql tmp]# id test
uid=1001(test) gid=1001(test) groups=1001(test)
[root@mysql tmp]# chown test test.txt
[root@mysql tmp]# ll test.txt
-rw-r--r-- 1 test root 0 Apr 20 09:01 test.txt

image.gif

2.  同样将文件的小组改为test.

[root@mysql tmp]# ll test.txt
-rw-r--r-- 1 test test 0 Apr 20 09:01 test.txt

image.gif

3.  同样也可以用chown同时改变拥有者和所属组

[root@mysql tmp]# useradd t2
[root@mysql tmp]# chown t2.t2 test.txt
[root@mysql tmp]# ll test.txt
-rw-r--r-- 1 t2 t2 0 Apr 20 09:01 test.txt
//或者换一种写法效果一样
[root@mysql tmp]# useradd t3
[root@mysql tmp]# chown t3:t3 test.txt
[root@mysql tmp]# ll test.txt
-rw-r--r-- 1 t3 t3 0 Apr 20 09:01 test.txt

image.gif

修改文件权限,chmod 命令的使用

  chmod

u

g

o

a

+  (加入)

  -(除去)

     =  (设置)

r

w

x

文件或者目录

隐藏权限

默认权限与隐藏权限

除了基本r, w, x权限外,在Linux传统的Ext2/Ext3/Ext4文件系统下,我们还可以设置其他的系统隐藏属性,这部份可使用chattr 来设置,而以lsattr 来查看,最重要的属性就是可以设置其不可修改的特性!让连文件的拥有者都不能进行修改!这个属性可是相当重要的,尤其是在安全机制上面(security)!比较可惜的是,在 CentOS 7.x 当中利用 xfs 作为默认文件系统,但是 xfs 就没有支持所有的 chattr 的参数了!仅有部份参数还有支持而已

默认权限:umask

创建一个新的文件或目录时,它的默认权限会是什么?那就与 umask 有关 了!umask 是什么呢? umask 就是指定“目前使用者在创建文件或目录时候的权限默认值”,

[root@mysql tmp]# umask
0022
[root@mysql tmp]# umask -S
u=rwx,g=rx,o=rx

image.gif

umask:遮罩码,反向掩码 影响用户新创建的文件和目录的默认权限

666-umask

777-umask

在默认权限的属性上,目录与文件是不一样的。我们知道 x 权限对于目录是非常重要的!但是一般文件的创建则不应该有执行的权限,因为一般文件通常是用在于数据的记录嘛!当然不需要执行的权限了。因此,默认的情况如下:

若使用者创建为文件则默认没有可执行( x )权限,亦即只有 rw这两个项目,也就是最大为666 分,默认权限如下:

-rw-rw-rw-

若使用者创建为目录,则由于 x 与是否可以进入此目录有关,因此默认为所有权限均开放,亦即为777 分,默认权限如下:

drwxrwxrw

因为 umask 022 ,所以 user 并没有被拿掉任何权限,不过 group 与others 的权限被拿掉了 2 (也就是 w 这个权限),那么当使用者:

创建文件时:(-rw-rw-rw- - -----w--w- ==> -rw-r--r-- ---

>644

创建目录时:(drwxrwxrwx - d----w--w- ==> drwxr-xr-x --

--->755

隐藏权限

//查看文件的隐藏权限,lsattr命令

[root@mysql tmp]# lsattr test.txt

---------------- test.txt

//chattr更改文件的隐藏权限。

a:让文件或目录仅供附加用途;

b:不更新文件或目录的最后存取时间;

c:将文件或目录压缩后存放;

d:将文件或目录排除在倾倒操作之外;

i:不得任意更动文件或目录;

s:保密性删除文件或目录;

S:即时更新文件或目录;

u:预防意外删除

最重要的当属 +i 与 +a 这个属性了。+i 可以让一个文件无法被更动,对于需要强烈的系统安全的人来说,真是相当的重要的!里头还有相当多的属性是需要 root 才能设置

举例:

-i 选择的运用

[root@mysql tmp]# pwd
/tmp
[root@mysql tmp]# touch t1.txt
[root@mysql tmp]# chattr +i t1.txt
[root@mysql tmp]# lsattr t1.txt
----i----------- t1.txt
[root@mysql tmp]# rm -f t1.txt
rm: cannot remove ‘t1.txt’: Operation not permitted //即使
是root也没有权限删除和移动
[root@mysql tmp]# mkdir testdir
[root@mysql tmp]# mv t1.txt testdir/
mv: cannot move ‘t1.txt’ to ‘testdir/t1.txt’: Operation
not permitted

image.gif

2-a选项的运用。文件内容只能追加,不能覆盖。

[root@mysql tmp]# cat t1.txt
123
[root@mysql tmp]# chattr +a t1.txt
[root@mysql tmp]# lsattr t1.txt
-----a---------- t1.txt
[root@mysql tmp]# echo 456 > t1.txt
-bash: t1.txt: Operation not permitted
[root@mysql tmp]# echo 456 >> t1.txt

image.gif

三、特殊权限和Facl

SUID:

运行某程序时,相应进程的属主是程序文件自身的属主,而不是用户本身了,只对二进制程序有效,执行者对于程序需要有x权限

image.gif编辑

例子:passwd命令 需要在/etc/shadow中写入密码

ls -l /bin/cat

ls -l /etc/shadow

chmod u+s file (如果本身具有x,为s,否则为S

总结: 其他人,运行SUID的文件时,就临时拥有了SUID文件所属者的权限。

SGID

对于文件:运行某程序时,相应进程的属组是程序文件自身的属组,而不是用户本身的基本组

对于目录

用户对此目录有rx权限可以进入目录

用户进入此目录后,有效用户组会变成该目录的用户组

若用户在此目录有w权限,则用户创建的文件用户组与该目录用户组相同

Sticky (BIT):

只针对目录有效,当用户对目录拥有wx权限时,用户在该目录创建的文件或目录,只有自己与root才可以删除。

在一个公共目录,每个人都可以创建文件,删除自己的文件,但是不能删除别人的文件(冒险位,粘贴位)

FACL

文件系统访问控制列表

FACL:filesystem access control list

利用文件的扩展属性,保存了额外的访问控制权限

getfacl 查看、setfacl 设置

语法:setfacl [-bkRd] [-m|-x acl 参数] 目标文件名

选项与参数:

-m:设置后续的acl参数,不可与-x一起使用

-x: 删除后续的acl参数,不可与-m一起使用

-b:删除所有的acl参数

-k:删除默认的acl参数

-R:递归设置acl参数

-d:设置默认acl参数,只对目录有效

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
算法
‘/’ 和 ‘%’ 在编程中的作用【附加练习题】
‘/’ 和 ‘%’ 在编程中的作用【附加练习题】
|
设计模式 算法 安全
一文带你通俗理解23种软件设计模式(推荐收藏,适合小白学习,附带C++例程完整源码)
一文带你通俗理解23种软件设计模式(推荐收藏,适合小白学习,附带C++例程完整源码)
352 0
|
5月前
|
安全 程序员 数据安全/隐私保护
终于有篇文章把后管权限系统设计讲清楚了
【2月更文挑战第1天】在常用的后台管理系统中,通常都会有权限系统设计,以用于给对应人员分配不同权限,控制其对后管系统中的某些菜单、按钮以及列表数据的可见性。
180 2
终于有篇文章把后管权限系统设计讲清楚了
|
设计模式 自然语言处理 JavaScript
设计模式第十三讲:编写可读代码的艺术
设计模式第十三讲:编写可读代码的艺术
6.6 极重要的复习,权限与指令间的关系
6.6 极重要的复习,权限与指令间的关系
35 0
Linux 权限-+完整思维导图+实图例子+深入细节+通俗易懂建议收藏(二
Linux 权限-+完整思维导图+实图例子+深入细节+通俗易懂建议收藏(二)
|
Linux 编译器 数据安全/隐私保护
Linux 权限-+完整思维导图+实图例子+深入细节+通俗易懂建议收藏(一)
Linux 权限-+完整思维导图+实图例子+深入细节+通俗易懂建议收藏(一)
|
编解码 缓存 NoSQL
7点 讲明白地图切片的概念与原理
7点 讲明白地图切片的概念与原理
469 0
|
存储 数据采集 算法
库调多了,都忘了最基础的概念-方法篇
库调多了,都忘了最基础的概念-方法篇
144 0
库调多了,都忘了最基础的概念-方法篇
|
设计模式 缓存 前端开发
可否举例说明你在工作中是如何优化前端代码的?
可否举例说明你在工作中是如何优化前端代码的?
180 0