【小白学Linux运维】7.文件权限管理原创
金蝶云社区-水电费有点贵
水电费有点贵
9人赞赏了该文章 77次浏览 未经作者许可,禁止转载编辑于2024年11月18日 21:11:31
summary-icon摘要由AI智能服务提供

本文介绍了cenos系统中root账号的危险性及权限管理的重要性,详细讲解了文件的基本权限(rwx,UGO),特殊权限(suid,sgid,sticky)和文件扩展权限ACL。并通过实战演示了如何创建一个root都无法删除的文件,以及如何使用chmod和chown命令修改文件权限和属主属组。

 root是cenos系统默认的账号,也是权限最高的账号,可以理解为老大哥,但是也是往往最危险的存在因为当服务器被入侵之后所做第一件事就是提权限,或者获取到root密码直接操作。那么权限的管理和就很早关键了,因为root账号可以设置一个连自己都无法删除文件。

 RockyLinux-文件权限管理

本节所讲内容:

7.1 文件的基本权限:r w x (UGO)

7.2 文件的特殊权限:suid sgid sticky 和文件扩展权限 ACL

7.3 实战:创建一个让 root 都无法删除的文件


7.1.2 查看权限

ll 查看权限

[root@xuegod63 ~]# ll /etc/passwd

红框内的9个字符都是权限。

文件权限基本解释:

-rw-r--r--. 1 root root 2478 10月  9 20:10 /etc/passwd


-

rwx

r-x

r-x

User1

User1

time

FILENAME

文件类型

拥有者的权限

所属组的权限

其他人的权限

拥有者

属组

最后修改时间

对象


其中:文件类型,可以为 d、l、s、c、b 和 –

d 表示目录文件

l 表示符号链接文件

-表示普通文件


s 表示 socket 套接口文件,比如我们启用 mysql 时,会产生一个 mysql.sock 文件

c 表示字符设备文件,例: 虚拟控制台 或 tty0

b 表示块设备文件 例: sda, cdrom


7.1.3 权限说明

对于文件来说:

r:读 cat

w:写 vim echo

x:执行 运行命令或者脚本

对于目录来说:

r:读(看到目录里面有什么) ls

w:(目录是不可以写的)可以在目录里面建文件,删除,移动 touch mkdir rm mv cp

x:目录是不能直接运行的,对目录赋予 x 权限,代表用户可以进入目录,也就是说,赋予 x 权限

的用户或群组可以使用 cd 命令,其他用户要读写该目录内文件,不仅要有该文件的读写权限,也要有

该目录的 x 权限。


例1;在user1用户下创创建一个文件user1.txt,再使切换登录user2用户下去访问user1.txt

就提示:cat: /home/user1/user1.txt: 权限不够

即使user1.txt权限对其组以外的用户都有读权限,也是不行的。


主要是在于user1自己的家目录也是就user1.txt,的上级目录,只对自己有权限。

在home下的每个用户的都有一个规律,家目录权限默认都只对自己开放。别人是无法访问的。但是对于root用户无效的。


给目录添加权限:例如给user1目录添加一个x权限

chmod +x /home/user1

加完x权限后,在使用user2用户去访问user1.txt文件就可以读了(由于文件没有内容所以显示没内容)



7.1.4 文件拥有者

UGO:所有者--用户组--其它用户

User-所有者: 就是创建文件的用户,这个用户拥有对它所创建的文件的一切权限,所有者可以允

许其所在的用户组可以访问所有者的文件。

Group-用户组: 用户组是具有相同特征用户的逻辑集合,有时我们需要让多个用户具有相同的权

限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有 10 个用

户的话,就需要授权 10 次,显然这种方法不太合理;另一种方法是建立一个组,让这个组具有查看、修

改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权

限。这就是用户组。

Other-其它用户:系统内的其他所有者用户就是 other 用户类



7.1.5 常见几种文件权限组成

- rwx --- ---:文件所有者对文件具有读取、写入和执行的权限。

- rwx r-- r--: 文件所有者具有读、写与执行的权限,用户组里用户及其他用户则具有读取的权限

- rw- rw- r-x:文件所有者与同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权

限。

drwx--x--x: 目录所有者具有读写与进入目录的权限,其他用户近能进入该目录,却无法读取任何

数据。

drwx------: 除了目录所有者具有完整的权限之外,其他用户对该目录完全没有任何权限。



举例如下:

每个用户都拥有自己的专属目录,通常放置/home 下

ll /home/

总用量 0

-rw-rw-r--. 1 user1 user1 0 10月 15 20:46 user1.txt

注: [rwx------]表示目录所有者本身拥有的权限,其它用户是无法进入的。 root 可以。


su - user1 和 su user1 的区别?

[root@xuegod63 ~]# su - user1 #从 root 切换到普通用户 user1

user1@xuegod63 ~]$ pwd

/home/user1

这个方式就是切换账号同时又切换目录了,


[root@xuegod63 ~]# su user1

[user1@xuegod63 root]$ pwd #查看切完后的路径

/root

[user1@xuegod63 root]$ touch a.txt

touch: 无法创建 'a.txt': 权限不够

[user1@xuegod63 root]$ cd /home/user1/

[user1@xuegod63 ~]$ touch a.txt

因为当用户我是user1 但是我还在root的家目录下。因为家目录默认除了自己其他用户是没操作权限的,所以当user1 在执行touch  a.txt就会提示权限不够。

使用su user1他是不会切换目录的。


7.1.6 更改文件的属主和属组

改变文件的所属关系用到命令:

chown:可以用来改变文件(或目录)的属主

chgrp:可以用来改变文件(或目录)的默认属组(不常用)

如果你要对目录进行操作,加参数 -R

chown

语法:

chown user:group filename 比如:chown user2:user2 a.txt 把文件的属主改为 root 属组改为

user2


chown user filename

比如:chown user2 a.txt 把文件的属主改为 user2 用户

chown :group filename

比如: chown :user1 b.txt 把文件的属组改为 user1

:也可以用.代替

-R :递归(目录下的所有内容都更改,否则只修改目录)


7.1.7 修改权限

方法 1:使用字符设定

修改权限用的命令:chmod

作用:修改文件,目录的权限

语法:chmod [对谁操作] [操作符] [赋于什么权限] 文件名

对谁操作:

u----> 用户 user,表示文件或目录的所有者

g---->用户组 group,表示文件或目录所属的用户组

o---->其它用户 others

a---->所有用户 all

操作符:

+ #添加权限 ; - # 减少权限 ; = #直接给定一个权限

权限:r w x

例如下面的组合:

u-w            user             拥有者

g+x             group             

o=r             other             其他人

a+x             all                 所有人

例:chmod 修改权限

chmod u+x 1.txt

这个命令的操作是只对当前用户root加了一个x权限,其他不变。

chmod u+x,g=-,o-r 1.txt

针对1.txt文件权限 组权限g=- 表示组权限全部删除,o- r 表示其他用户减少r权限。


Shado文件,除root账号其他任何用户都无权限对它操作


7.1.8 使用八进制(0-7)数字表示权限法

权限             二进制值                     八进制值                     描述

---                 000                             0                  没有任何权限

--x                 001                             1                 只有执行权限

-w-                 010                             2                 只有写入权限

-wx                 011                             3                 有写入和执行权限

r--                 100                             4                 只有读取权限

r-x                 101                             5                 有读取和执行权限

rw-                 110                         6                 有读取和写入权限

rwx                 111                         7                 有全部权限



7.1.9 权限对文件和目录的影响

有三种权限可以应用:读取,写入与执行,这些权限对访问文件和目录的影响如下:

权限             对文件的影响                   对目录的影响

r(读取)       可以读取文件的内容           可以列出目录的内容(文件名)

w(写入)     可以更改文件的内容            可以创建或删除目录中的任意文件

x(执行)      可以作为命令执行文件        可以访问目录的内容(取决于目录中文件的权限)



7.2 文件的特殊权限:suid sgid sticky 和文件扩展权限 ACL

其实文件与目录设置不止这些,还有所谓的特殊权限。由于特殊权限会拥有一些“特权”.

7.2.1 文件的特殊权限:suid sgid sticky

1、SUID(set uid 设置用户 ID):限定:只能设置在二进制可执行程序上面。对目录设置无效

功能:程序运行时的权限从执行者变更成程序所有者的权限

2、SGID:限定:既可以给二进制可执行程序设置,也可以对目录设置

功能:在设置了 SGID 权限的目录下建立文件时,新创建的文件的所属组会继承上级目录的所属组

3、 Stickybit:粘滞位权限是针对目录的,对文件无效,也叫防删除位

4、

这 3 个特殊权限对应的数值为:

SUID                         SGID                                  Stickybit

4                               2                                         1

chmod u+s               chmod g+s                                 chmod o+t

chmod 4664                chmod 2664                                 chmod 1664

suid 的代表数字是 4,比如 4755 的结果是 rwsr-xr-x

sgid 的代表数字是 2,比如 2755 的结果是 rwxr-sr-x

sticky 位代表数字是 1,比如 1755 的结果是 rwxr-xr-t

suid+sgid+sticky=7 ,比如 7755 的结果是 rwsr-sr-t



SGID:

限定:既可以给二进制可执行程序设置,也可以给目录设置。

给二进制可执行程序设置,则运行程序时,临时获得该程序所属组权限

功能:在设置了 SGID 权限的目录下建立文件时,新创建的文件的所属组会继承上级目录的所属组。



Stickybit

限定:只作用于目录

功能:目录下创建的文件只有 root、文件创建者、目录所有者才能删除。

例: 系统中的 tmp 目录就是这样



其他用户无法删除,只有文件创建者、目录所有者才能删除


7.2.1 文件扩展权限 ACL

Getfacl     用来设置或者修改权限setfacl

创建一个文件touch  /opt/a.txt

设置只让用户 user1 对文件 a.txt 拥有的 rwx 权限 ,user1 不属于 a.txt 的所属主,和组,other

的权限还是 r--。怎么做?

getfacl   /opt/a.txt

查看默认权限。

执行命令:setfacl -m u:user1:rwx /opt/a.txt

给user1用户真对/opt/a.txt文件添加rwx权限

执行修改后结果对比

getfacl   /opt/a.txt

切换登录到user1下对 /opt/a.txt 写入内容,是可以的。

如果直接使用ll查看显示效果就是这样的

当然在user1 用下也可以执行getfacl   /opt/a.txt


同时给多个用户一起授权,用“,”隔开,“-”表示权限为空。

setfacl  -m  u:user1:rwx,user2:-  /opt/a.txt

这是切换到user2,   cat  /opt/a.txt   执行命令就提示权限不够。

setfacl -x u:user2 /opt/a.txt

删除user2的权限。


如果要清空所有的

Setfacl  -b  /opt/a.txt


权限还原了


创建一个root账号都删除不了的文件

命令:      chattr 设置权限

Lsattr 查看权限

参数:    i不能被修改不能被删除

+i:即 Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。

+a: 只能追加内容 如: echo aaa >> hack.sh


发现 windows 中 有文件删除不了,怎么办? 使用 360 强制删除,粉碎文件

那么在 Linux 下怎么办?

Touch新创建的文件在默认情况下是可以被执行删除

删除命令:   rm -rf  文件名

执行命令: chattr +i aa.sh 给aa.sh文件加个i权限,就能让root都无法删除。

i也是无法进行内容追加的

使用chattr设置i权限需要使用lsattr命令查看,使用gerfacl ll命令查看是没效果的。

如果需要root对aa.sh文件有删除权限,就需要把i权限删除

执行 chattr  -i aa.sh


对于给aa.sh文件加a权限,执行删除提示不允许从操作的而不是权限不够。

a权限和i权限同理都是不可以删除,但是a权限是可以使用echo 命令进行追加内容的。

虽然可以追加内容但是不可以使用vim命令进行文件编辑。


针对目录添加i权限

创建一个der2文件

执行命令:Chattr  给文件夹添加一个i权限,这个时给der2目录添加一个a.txt文件是不成功的,提示权限不够。 目录有了i权限也是无法删除自己,连目录里面的子级文件也无法删除。

注意的是可以子级文件做编辑

使用命令:vim编辑der2/a.txt

Cat 查看编辑的内容

图标赞 9
9人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
1人打赏
还没有人打赏,快来当第一个打赏的人吧!