Linux权限与特殊权限

admin

目录5.1 权限讲解5.1.1 什么是权限5.1.2 为什么要管理权限5.1.3 权限的分类5.1.4 Linux的文件属于谁?5.1.5 文件属主、属组、其他用户5.1.6 所属者的表达方式5.1.7 文件没有权限进行修改的三种方式5.1.8 文件权限查看的两种方式5.1.9 提供授权的三种方法在Linux系统中默认目录只能给到最大权限755在Linux系统中默认文件只能给到的最大权限为644r、w、x单个出现对于目录来说什么作用没有r-x 决定用户能否进入目录,查看下面的文件rwx决定用户是否可以删除、创建、改名的动作5.2.0 案例说明5.2 特殊权限(Suid、Sgid、Sicky)5.2.1 什么是特殊权限5.2.1 Suid基础原理5.2.2 自定义文件设置Suid5.2.3 Suid的作用5.2.4 Sgid基础原理5.2.5 Sbit粘滞位基础原理

5.1 权限讲解

5.1.1 什么是权限

​ Linux是多用户,多任务的,当多个用户一起使用Linux服务器时,它们对机器上的文件操作,权限都是怎么样的,所有文件都是可以读取、写入、修改、执行的吗?在Linux系统中,一切皆文件,所以得进行一些权限管理。

5.1.2 为什么要管理权限

保护服务器数据、文件、进程等

不要莫名其妙的背黑锅,权限限制(你作为运维,要限制其他用户的权限,不要伤害你的机器,否则就背黑锅)

针对不同部门,不同员工的工作职责,分工不同,权限应该做好限制

针对来自外来的恶意攻击进行防御

5.1.3 权限的分类

权限针对文件 File

权限针对目录 Directory

读r,read

表示可以查看文件内容

表示可以(ls)查看目录中存在的文件名称

写w,write

表示可以更改文件的内容:vim修改,保存退出

表示是否可以删除目录中的子文件或者新建子目录(rm/touch/mkdir)

执行x,executable

表示是否可以执行文件,一般指二进制文件,或者脚本文件

表示是否可以进入目录中(cd)

5.1.4 Linux的文件属于谁?

​ d r-- r-- r-- 2 root root 6 Jan 13 18:25 kylin

​ - rw-- rw-- r-- 1 root root 6.1M Jan 13 18:34 kylin

文件类型 属主 属组 其他人权限 文件连接数 属主 属组 文件大小 文件最后修改时间 文件名

Linux中的每一个文件,都有自己的主人,并且有权限限制,限制主人的读、写、执行权限

限制其他人的读、写、执行权限

限制组内的读、写、执行权限

Linux文件的三个角色

user:属主

group:属组

other:其他人

[!CAUTION]

特例,root,即使文件查看到的权限是空,root仍然可以做任何事情,权限控制是针对普通用户而言的

5.1.5 文件属主、属组、其他用户

属主:表示文件的创建者,拥有者,也可以理解为,某个用户对这个文件拥有的权限

一个文件只能有一个主人,一部手机只能有一个主人

你可以对你的手机做任何的事情,其他人你可以禁止 他碰你手机

你可以对你的Linux文件进行读、写、执行,也可以禁止别人对你的文件做任何操作

属组:文件所属的用户组,拥有者,可以理解为某一组的用户,对这个文件的权限

user:属主是任鹏宇,权限是允许读、写、执行

group:属组是运维组,权限是读、写、不可执行

其他用户:表示跟该文件一点关系没有的人,既不是创建者,也不是属组者

其他用户通常为除了该文件的属主属组的其他用户,该用户与该文件没有任何关系,通常修改权限主要是修改其他用户权限

5.1.6 所属者的表达方式

文件的所属角色有user、group、other,如何使用Linux命令去查看,设置,文件的所属角色

u属组:

用u表示文件的属主,u是个缩写,全称为the user who owns it(拥有它的用户)是谁

默认是文件的创建者,就是文件的属主

g属组:

g用来表示文件属组,默认是创建该文件的用户

o其他人:

用o表示,既不是文件的创建者,也不是文件属组里的用户,那么就是其他人的角色

all角色:

在后续使用Linux命令,修改文件权限时,除了会用到u、g、o,还会使用all(缩写a),表示一次性对三个角色设置权限

root用户:

Linux中的root用户是特殊用户,是系统的超级管理员,有最大权限,可以任意修改Linux文件,因此权力越大,责任越大。

5.1.7 文件没有权限进行修改的三种方式

第一种方式:更换文件的主人

在不修改文件权限的情况下,可以更换属主,相当于将文件卖给了另一个人

第二种方式:更换文件的属组

在不修改文件权限以及属组的情况下,如果该文件属组有读写执行的权限,那么加入该组也可以拥有该权限

第三种方式:更换文件权限

不修改属主属组则需要修改文件的权限来对文件进行操作

5.1.8 文件权限查看的两种方式

第一种方式:使用 ll 命令查看

[root@kylin-ren-class ren]# ll

总用量 68

-rw-r--r-- 1 root root 40 1月 7 20:17 第三行内容.txt

第二种方式:使用 stat 命令查看

[root@kylin-ren-class ren]# stat /ren

文件:“/ren”

大小:266 块:0 IO 块:4096 目录

设备:fd00h/64768d Inode:34158027 硬链接:2

权限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root)

5.1.9 提供授权的三种方法

第一种方法:更改属主,言简意赅就是更换主人,你就拥有了和创建主人一样的文件权限

# 递归操作文件目录

chown -R [新属主].[] 文件名

第二种方法:更改属组,简而言之就是加入文件的小组,小组成员都有对该文件相应的权限

# 使用chown,注意只能超级用户使用,使用sudo提权也可以

chown -R [].[新属组] 文件名

# 使用chgrp,只能改属组,普通用户可以使用,但是必须该用户是该组的一员

chgrp -v [新组] 文件名 # -v是显示更改过程

第三种方法:更改文件权限,将文件的其他用户的权限进行相应修改即可

# 使用 ugo 的方式进行修改

u 表示属主

g 表示属组

o 表示普通用户

语法结构:

chmod ugo+w file #全部成员都加入写的权限

chmod uo+x file #属主和普通用户加入执行的权限

chmod a+x file #a表示所有,所有用户都加入执行权限

chmod u=rx file #先清空后赋值

# 使用数字的方式进行授权

读:4

写:2

执行:1

文件权限哪个亮加哪个

语法结构:chmod [数字][数字][数字] 文件

案例229. 授权属主为 rwx权限

[root@kylin-ren-class ren]# chmod u+wrx 你好.txt

[renpengyu@kylin-ren-class ren]$ ll

总用量 8

-rwxrwxrwx 1 root root 0 1月 9 21:10 你好.txt

案例230. 授权属主位 r-- 权限

[root@kylin-ren-class ren]# chmod u-wx 你好.txt

[renpengyu@kylin-ren-class ren]$ ll

总用量 8

-r--rwxrwx 1 root root 0 1月 9 21:10 你好.txt

案例231. 先清空权限,再给属主授 rw- 权限

# 先清空是指先清空u的权限,然后给权限,不是ugo全部清空,注意注意!!!

[root@kylin-ren-class ren]# chmod u=r-- 你好.txt

[renpengyu@kylin-ren-class ren]$ ll

总用量 8

-r-------- 1 root root 0 1月 9 21:10 你好.txt

案例232. 使用ugo方式授权文件的权限为u为rw,g为空,o为空

[root@kylin-ren-class ren]# chmod u=rw,g=,o= 你好.txt

[root@kylin-ren-class ren]# ll

总用量 8

-rw------- 1 root root 0 1月 9 21:10 你好.txt

案例233. 使用数字进行授权rw-r--r--的权限

[root@kylin-ren-class ren]# chmod 644 你好.txt

[root@kylin-ren-class ren]# ll

总用量 8

-rw-r--r-- 1 root root 0 1月 9 21:10 你好.txt

[!WARNING]

在Linux系统中默认目录只能给到最大权限755

在Linux系统中默认文件只能给到的最大权限为644

[!CAUTION]

r、w、x单个出现对于目录来说什么作用没有

r-x 决定用户能否进入目录,查看下面的文件

rwx决定用户是否可以删除、创建、改名的动作

5.2.0 案例说明

1.[oldboy@lzy oldboy]$ cat /etc/shadow cat: /etc/shadow: Permission denied

## 用户本身没有权限,普通用户不能进入,加入x权限才行,得加入rx权限才可以

2.[oldboy@lzy oldboy]$ echo '#' >> /etc/passwd -bash: /etc/passwd: Permission denied

## 文件对于该用户没有写的权限,所以得授权用户对/etc目录授权写的权限,还有进入查看rx的权限

3.[oldboy@lzy oldboy]$ touch / etc/passwd.txt touch: cannot touch ‘/etc/passwd.txt’:Permission denied

## 用户本身没有权限,普通用户不能进入,加入x权限才行,touch是创建的动作得有rwx才能,所以需要给7的权限

4.[oldboy@lzy oldboy]$ rm -rf /etc/shadow rm: cannot remove ‘/etc/shadow’: Permission denied

## 删除需要rwx权限,还有就是/etc/默认没有对普通用户进行写的权限

5.[oldboy@lzy oldboy]$ ls /root/ ls: cannot open directory /root/: Permission denied

## 没有rx的权限,进入目录需要x的权限,查看目录下的内容需要r的权限,还有就是root目录是root的家目录,本身没有对普通用户进行开放

5.2 特殊权限(Suid、Sgid、Sicky)

5.2.1 什么是特殊权限

​ Linux系统的9位基本权限 rwx rwx rwx,但是有时候会发现系统一些关键的文件,存在一些没见过的权限字符。

比如:这个文件允许用户自己去修改自己的密码

/usr/bin/passwd

[root@CentOS7-01 /]# ll /usr/bin/passwd

-rwsr-xr-x. 1 root root 27856 Apr 1 2020 /usr/bin/passwd

所以除了基本的权限还有三位特殊权限,一共是12位权限

suid(setuid)

sgid(setgid)

sbit(sticky)

特殊权限对照变

类别

suid

sgid

sicky

字符表示

S

S

T

出现位置

用户权限位x

用户组权限位x

其他用户权限位x

基本权限位有x

s

s

t

数字表示法

4 (4777)

2

1

八进制表示法

4000

2000

1000

生效对象

用户位

用户组

其他用户

[!CAUTION]

1.suid:如果用户权限位是 rwx ---> rws 否则是 rwx- ---> rwS

2.sgid和sicky与suid同理,都是最后一位x位置上发生变化

5.2.1 Suid基础原理

suid通过s字符标识,存在于用户权限位的x的权限对应位置

如果某文件,用户权限位本身就有x权限,给该文件设置suid权限时,则以小写s标识,否则就是大写的s字符

给文件设置s权限对应的数字表示法是4,八进制数下可以用4000

suid同样也用chmod设置权限可以用字符法、数字法两种标识

5.2.2 自定义文件设置Suid

[root@kylin-ren-class ren]# chmod u+s 你好.txt

[root@kylin-ren-class ren]# ll

总用量 8

-rwSr--r-- 1 root root 0 1月 9 21:10 你好.txt

5.2.3 Suid的作用

SUID特殊权限仅适用于可执行文件,例如二进制文件、/usr/bin下目录下的命令文件/usr/bin/ls

只要用户对没有SUID的文件有执行权限,那么当用户执行此文件时,会以文件属主的身份去执行此文件

一旦文件执行结束,身份的切换也随之小时

简而言之就是让普通用户,执行命令时,临时获得root的权限

解释关于Linux的用户创建:

用户创建完用户之后,需要修改密码,执行passwd命名

但是passwd命令需要读取,修改/etc/passwd、/etc/shadow文件,这些文件都是属于root

如何可以让普通用户使用passwd修改自己的密码,则可以让普通用户临时获得root的身份进行密码文件的更改

该原因就是设置suid的一个根本原因,且suid特殊权限,只能用在二进制可执行文件上

5.2.4 Sgid基础原理

对于二进制命令来说,Sgid的功能和Suid基本一样,只不过是一个设置文件属主的权限,一个是设置属组的权限,和9位基本权限rwx概念一样

Suid是获得文件属主的权限,Sgid是获得文件属组的权限

Sgid主要用于文件夹,为某个目录设置Sgid之后,在该目录中的创建的文件,都以(目录的属组)权限位准,而不属于创建该文件的用户权限,这就是实现了多个用户可以共享一个目录的作用

简单总结:

一个普通的文件夹,普通用户ren进入之后,创建文件,user,group都属于ren;gaioge进入之后创建文件,user,group都属于giaoge

当一个文件夹设置了Sgid,普通用户ren进入之后,创建文件,user属于ren,group属于文件夹的属组;giaoge进入后,创建文件,user属于giaoge,group属于文件夹的属组

红帽案例234. 将sgid和红帽认证考题结合练习

1.创建一个共享目录/home/admins

mkdir /home/admins

2.要求该目录属组是adminuser,adminuser组内成员对该目录的权限是可读可写可执行

groupadd adminuser

chgrp adminuser /home/admins

chmod g=rwx /home/admins

3.其他用户均无任何权限(root特例)

chmod 0='' /home/admins

4.进入/home/admins创建的文件,自动继承adminuser组的权限

chmod g+s /home/admins

[root@kylin-ren-class /]# ll /home/admins/

总用量 0

drwxr-sr-x 2 root adminuser 6 1月 11 15:37 我是文件夹

-rw-r--r-- 1 root adminuser 0 1月 11 15:37 我是文件.txt

[root@kylin-ren-class /]# touch /home/admins/我是文件夹/我继承了属性.log

[root@kylin-ren-class /]# ll /home/admins/我是文件夹/我继承了属性.log

-rw-r--r-- 1 root adminuser 0 1月 11 16:03 /home/admins/我是文件夹/我继承了属性.log

5.2.5 Sbit粘滞位基础原理

在一个权限是777的文件夹下,所有用户可以进行rwx的操作,也就意味着可以随便删除其他人的资料!这很危险,所以产生出一个粘滞位来防止这个问题的发生

简而言之就是,当目录有了粘滞位特殊权限,则个目录除了root用户特殊以外,任何用户都只能删除,移动自己的创建的文件,而不能影响到其他人

其中在Linux中/tmp临时目录就是使用的是粘滞位

案例235. 没有粘滞位,且目录的权限是777时,进行操作,然后在使用粘滞位来操作看看使用其他用户有权限进行操作

[renpengyu@kylin-ren-class tmp]$ touch 我是任鹏宇.txt

[pengyu@kylin-ren-class tmp]$ echo 我是鹏宇 > 我是任鹏宇.txt

-bash: 我是任鹏宇.txt: 权限不够

[pengyu@kylin-ren-class tmp]$ rm -f 我是任鹏宇.txt

rm: 无法删除 '我是任鹏宇.txt': 不允许的操作

Copyright © 2088 南美洲世界杯预选赛程_世界杯2 - ycfcjt.com All Rights Reserved.
友情链接