Red Hat Enterprise Linux 8系统学习(七)

一、文件的权限与归属

“可读”表示能够读取目录内的文件列表;

“可写”表示能够在目录内新增、删除、重命名文件;

“可执行”则表示能够进入该目录。

​ 文件权限的字符与数字表示

第5章 用户身份与文件权限第5章 用户身份与文件权限

有这样一个文件,其所有者拥有可读、可写、可执行的权限,其文件所属组拥有可读、可写的权限;而且其他人只有可读的权限。那么,这个文件的权限就是rwxrw-r–,数字法表示即为764。千万不要将这三个数字相加,计算出7+6+4=17的结果,这是小学的数学加减法,不是Linux系统的权限数字表示法,三者之间没有互通关系。

以rw-r-x-w-权限为例进行讲解,要想转换成数字法,首先要进行各个位之上的数字替代,如下图所示。

第5章 用户身份与文件权限第5章 用户身份与文件权限

减号是占位符,代表这里没有权限,数字法用0表示,也就是说rw-转换后是420,r-x转换后是401,-w-转换后是020,三组数字之间相加后得出652便是转换后的数字法权限。

数字法转回到字符权限,以652权限为例进行讲解。首先数字6是由4+2得到的,不可能是4+1+1,因为每个权限只能占一位,所以数字5则是4+1得到的,2便是本身,没有权限即是空值0,可以按照表5-6所示的格式填写进去后得到420401020这样一串数字。如下图所示:

第5章 用户身份与文件权限第5章 用户身份与文件权限

文件的所有者、所有组和其他人权限之间无关联,不要写成rrwwx----的样子,一定要把rwx权限位对应到正确的位置,写成rw-r-x-w-。

第5章 用户身份与文件权限第5章 用户身份与文件权限

在上图中,包含了文件的类型、访问权限、所有者(属主)、所属组(属组)、占用的磁盘大小、最后修改时间和文件名称等信息。通过分析可知,该文件的类型为普通文件,所有者权限为可读、可写(rw-),所属组权限为可读(r–),除此以外的其他人也只有可读权限(r–),文件的磁盘占用大小是34298字节,最近一次的修改时间为4月2日的凌晨23分,文件的名称为install.log。

二、文件的特殊权限

对一般权限功能的补充。

2.1、SUID

让二进制程序的执行者临时拥有属主的权限

查看passwd命令属性时发现所有者的权限由rwx变成了rws,其中x改变成s就意味着该文件被赋予了SUID权限。另外有读者会好奇,那么如果原本的权限是rw-呢?如果原先权限位上没有x执行权限,那么被赋予特殊权限后将变成大写的S。

[root@linuxprobe ~]# ls -l /etc/shadow
----------. 1 root root 1312 Jul 21 05:08 /etc/shadow
[root@linuxprobe ~]# ls -l /bin/passwd 
-rwsr-xr-x. 1 root root 34512 Aug 13 2018 /bin/passwd

2.2、SGID

让执行者临时获取到文件所有组的权限

chmod命令用于设置文件的一般权限及特殊权限。

语法格式为:“chmod [参数] 文件名”。

这是一个与日常设置文件权限强相关的命令,例如要把一个文件的权限设置成其所有者可读可写可执行、所属组可读可写、其他人没有任何权限,则相应的字符法表示为rwxrw----,其对应的数字法表示为760。

[root@linuxprobe ~]# ls -l anaconda-ks.cfg 
-rw-------. 1 root root 1407 Jul 21 05:09 anaconda-ks.cfg
[root@linuxprobe ~]# chmod 760 anaconda-ks.cfg 
[root@linuxprobe ~]# ls -l anaconda-ks.cfg 
-rwxrw----. 1 root root 1407 Jul 21 05:09 anaconda-ks.cfg

chown命令用于设置文件的所有者和所有组。

语法格式为:“chown 所有者:所有组 文件名”。

chmod和chown命令是用于修改文件属性和权限的最常用命令,它们还有一个特别的共性,就是针对目录进行操作时需要加上大写参数-R来表示递归操作,即对目录内所有的文件进行整体操作。

使用“所有者:所有组”的格式轻松把刚刚那个文件的所属信息修改一下,变更后的效果如下:

[root@linuxprobe ~]# chown linuxprobe:linuxprobe anaconda-ks.cfg 
[root@linuxprobe ~]# ls -l anaconda-ks.cfg 
-rwxrw----. 1 linuxprobe linuxprobe 1407 Jul 21 05:09 anaconda-ks.cfg

2.3、SBIT

确保用户只能删除自己的文件,而不能删除其他用户的文件。

当目录被设置SBIT特殊权限位后,文件的其他人权限部分的x执行权限就会被替换成t或者T,原本有x执行权限则会写成t,原本没有x执行权限则会被写成T。

/tmp目录上的SBIT权限默认已经存在,体现为“其他用户”权限字段的权限变为rwt:

[root@linuxprobe ~]# ls -ald /tmp
drwxrwxrwt. 17 root root 4096 Oct 28 00:29 /tmp

三、文件的隐藏属性

3.1、chattr

chattr命令用于设置文件的隐藏权限。

语法格式为:“chattr [参数] 文件名称”。

把某个隐藏功能添加到文件上,则需要在命令后面追加“+参数”;

把某个隐藏功能移出文件,则需要在命令后面追加“-参数”

​ chattr命令中的参数及其作用

参数作用
i无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
a仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)
S文件内容在变更后立即同步到硬盘(sync)
s彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域)
A不再修改这个文件或目录的最后访问时间(atime)
b不再修改文件或目录的存取时间
D检查压缩文件中的错误
d使用dump命令备份时忽略本文件/目录
c默认将文件或目录进行压缩
u当删除该文件后依然保留其在硬盘中的数据,方便日后恢复
t让文件系统支持尾部合并(tail-merging)
x可以直接访问压缩文件中的内容

3.2、lsattr

lsattr命令用于查看文件的隐藏权限。

语法格式为:“lsattr [参数] 文件名称”。

四、文件访问控制列表

FACL:针对某一类用户或文件,更加准确的权限控制。

setfacl -m u:用户名:权限 文件名

getfacl 文件名

4.1、setfacl

删除某个文件的ACL,可以使用-b参数

文件的权限最后一个点(.)变成了加号(+),意味着该文件已经设置了ACL。

[root@linuxprobe ~]# ls -ld /root
dr-xrwx---+ 14 root root 4096 May 4 2020 /root

4.2、getfacl

getfacl命令用于查看文件的ACL权限规则。

语法格式为:“ getfacl [参数] 文件名称”。

五、su命令与sudo服务

[root@linuxprobe ~]# su - linuxprobe
[linuxprobe@linuxprobe ~]$ id
uid=1000(linuxprobe) gid=1000(linuxprobe) groups=1000(linuxprobe) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

上面的su命令与用户名之间有一个减号(-),这意味着完全切换到新的用户,即把环境变量信息也变更为新用户的相应信息,而不是保留原始的信息。强烈建议在切换用户身份时添加这个减号(-)。

sudo命令:把特定命令的执行权限赋予给指定用户。

​ sudo命令中的可用参数以及作用

参数作用
-h列出帮助信息
-l列出当前用户可执行的命令
-u 用户名或UID值以指定的用户身份执行命令
-k清空密码的有效时间,下次执行sudo时需要再次进行密码验证
-b在后台执行指定的命令
-p更改询问密码的提示语

visudo命令:用于编辑配置用户sudo权限文件。

谁可以使用 允许使用的主机=(以谁的身份) 可执行命令的列表

**谁可以使用:**稍后要为那位用户进行命令授权。

**允许使用的主机:**可以填写ALL代表不限制来源主机,亦可填写如192.168.10.0/24的网段限制来源地址,只有从允许网段登录时才能使用sudo命令。

**以谁的身份:**可以填写ALL代表系统最高权限,也可以是另外一位用户的名字。

**可执行命令的列表:**可以填写ALL代表不限制命令的列表,亦可填写如/usr/bin/cat的文件名称来限制命令列表,多个命令文件之间用逗号(,)间隔。

在Linux系统中配置服务文件时,虽然没有硬性规定,但从经验来讲新增的参数位置不建议太靠上,避免服务一些必要的功能没加载完成时,我们填写的新参数不被执行成功。一般会在配置文件中找一下相似的参数,然后在相邻位置进行新的修改,或者选择文件的中下部位置。

[root@linuxprobe ~]# visudo
 99 ## Allow root to run any commands anywhere
100 root ALL=(ALL) ALL
101 **linuxprobe ALL=(ALL) ALL**

2021/1/16

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Carlos Zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值