Linux普通权限、特殊权限、扩展权限和Umask值介绍

2023-12-28 13:44

本文主要是介绍Linux普通权限、特殊权限、扩展权限和Umask值介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一.简单权限介绍

1.文件系统权限

2.三种基本权限

3.修改文件和目录的权限

4.修改文件或模流属主和属组

二.文件和目录的特殊权限

1.SUID

2.SGID

3.Sticky Bit

三.ACL扩展权限

1.设置和查看扩展权限

2.setfacl常用参数

3.删除指定扩展权限操作演示

四.umask权限掩码

1.验证一下是否是通过umask来默认创建的

2.永久修改umask值


 

一.简单权限介绍

1.文件系统权限

针对于属主、属组、其他人三个对象定义了三个基本字段的权限

(1)属主owner

简写为u

(2)属组group

简写为g

(3)其他人other

简写为o

2.三种基本权限

其中rw权限不会对root产生影响,x权限会造成限制

(1)r

读权限,权限数值为4(八进制),若是目录的r权限没有则只能ls却不能cd进去,文件没有r权限则不能查看

(2)w

写权限,权限数值为2,若是目录没有w权限则不能在内创建文件,若是文件没有w权限则不能编辑该文件

(3)x

执行权限,权限数值为1,用来确保目录可cd,文件可执行

3.修改文件和目录的权限

chmod命令,主要用到-R参数,表示将目录下的文件和子目录的权限都进行递归修改

(1)使用权限缩写方式

使用+/-/=为目录或文件增加/减少/赋予给定权限

[root@R9 aaa]# ll
total 0
drwx-wx-wx. 2 root root 6 Dec 27 21:23 a.txt
[root@R9 aaa]# chmod u-rw a.txt/
[root@R9 aaa]# ll
total 0
d--x-wx-wx. 2 root root 6 Dec 27 21:23 a.txt
[root@R9 aaa]# chmod g+r a.txt/
[root@R9 aaa]# ll
total 0
d--xrwx-wx. 2 root root 6 Dec 27 21:23 a.txt
[root@R9 aaa]# chmod ugo+rw a.txt/
[root@R9 aaa]# ll
total 0
drwxrwxrwx. 2 root root 6 Dec 27 21:23 a.txt

(3)使用权限数值方式

使用八进制的权限值来指定权限

[root@R9 aaa]# chmod 411 a.txt/ 
[root@R9 aaa]# ll
total 0
dr----x--x. 2 root root 6 Dec 27 21:23 a.txt
[root@R9 aaa]# chmod 644 a.txt/ 
[root@R9 aaa]# ll
total 0
drw-r--r--. 2 root root 6 Dec 27 21:23 a.txt

4.修改文件或模流属主和属组

同样主要用到-R参数,表示将目录下的文件和子目录的属主或属组都进行递归修改

(1)修改属主

chown命令

[root@R9 aaa]# ll
total 0
drw-r--r--. 2 sulibao root 6 Dec 27 21:23 a.txt
[root@R9 aaa]# ll
total 0
drw-r--r--. 2 sulibao root  6 Dec 27 21:23 a.txt
drwx-wx-wx. 2 root    root 19 Dec 27 21:32 b
[root@R9 aaa]# ll b
total 4
-rw--w--w-. 1 root root 6 Dec 27 21:32 b.txt
[root@R9 aaa]# chown sulibao -R b   #递归修改
[root@R9 aaa]# ll b
total 4
-rw--w--w-. 1 sulibao root 6 Dec 27 21:32 b.txt

(2)修改属组

chown或chgrp命令

[root@R9 aaa]# chown :su a.txt/   #使用冒号或者点来表示属主不变只改属组
[root@R9 aaa]# ll
total 0
drw-r--r--. 2 sulibao su    6 Dec 27 21:23 a.txt
drwx-wx-wx. 2 sulibao root 19 Dec 27 21:32 b
drwx-wx-wx. 2 sulibao root 19 Dec 27 21:32 b
[root@R9 aaa]# chown .sulibao a.txt/
[root@R9 aaa]# ll
total 0
drw-r--r--. 2 sulibao sulibao  6 Dec 27 21:23 a.txt
drwx-wx-wx. 2 sulibao root    19 Dec 27 21:32 b
​
[root@R9 aaa]# chgrp root a.txt/   #chgrp只修改属组
[root@R9 aaa]# ll
total 0
drw-r--r--. 2 sulibao root  6 Dec 27 21:23 a.txt
drwx-wx-wx. 2 sulibao root 19 Dec 27 21:32 b

二.文件和目录的特殊权限

包含有SUID、SGID、Sticky Bit

1.SUID

u+s,权限数值为4,映射在owner处,他指的是即使这个用户不具有该文件的权限,而设置SUID让其在运行进程时暂时获得该文件所有者的权限,但进队二进制文件有效。SUID的缩写s在这个文件的所有者有执行权限的情况下会反映为小写s,若没有执行权限则反映为大写S。如下演示。

(1)设置特殊权限

[root@R9 aaa]# ll
total 0
drw-r--r--. 2 sulibao root  6 Dec 27 21:23 a.txt   #此时所有者没有执行权限
drwx-wx-wx. 2 sulibao root 19 Dec 27 21:32 b
[root@R9 aaa]# chmod u+s a.txt/
[root@R9 aaa]# ll
total 0
drwSr--r--. 2 sulibao root  6 Dec 27 21:23 a.txt   #映射为大写S
drwx-wx-wx. 2 sulibao root 19 Dec 27 21:32 b
​
[root@R9 aaa]# chmod u+x a.txt/   #此时所有者有执行权限
[root@R9 aaa]# ll
total 0
drwxr--r--. 2 sulibao root  6 Dec 27 21:23 a.txt
drwx-wx-wx. 2 sulibao root 19 Dec 27 21:32 b
[root@R9 aaa]# chmod u+s a.txt/
[root@R9 aaa]# ll
total 0
drwsr--r--. 2 sulibao root  6 Dec 27 21:23 a.txt   #映射为小写s
drwx-wx-wx. 2 sulibao root 19 Dec 27 21:32 b

(2)查询设置了SUID的文件

[root@R9 aaa]# find /root/aaa/ -perm /4000  #“/”数字表示法,数值前加上 /,表示要匹配的是该数值相应的权限位被设置了,/4000表示权限为4xxx,但至少是4000
/root/aaa/a.txt
​
#如下,a.txt设置了特殊权限,并且所有者具有执行权限,那么他的权限就可以表示位4744,按4744就可以匹配到,但我设置超出他的权限那么就回匹配不到
[root@R9 aaa]# ll
total 0
drwsr--r--. 2 sulibao root  6 Dec 27 21:23 a.txt
drwx-wx-wx. 2 sulibao root 19 Dec 27 21:32 b
[root@R9 aaa]# find /root/aaa/ -perm 4744
/root/aaa/a.txt
[root@R9 aaa]# find /root/aaa/ -perm 4746

2.SGID

g+s,权限数值为2,映射在group处

(1)对于文件来说,执行程序时,用户将获得该设置了SGID的文件的所属组权限

[root@R9 aaa]# chmod g+s a.txt/
[root@R9 aaa]# ll
total 0
drwsr-Sr--. 2 sulibao root  6 Dec 27 21:23 a.txt
drwx-wx-wx. 2 sulibao root 19 Dec 27 21:32 b
[root@R9 aaa]# find /root/aaa/ -perm /2000
/root/aaa/a.txt

(2)对于目录来说,设置了SGID的目录,该目录内的文件和目录都会自动归属到该目录的所属组

[root@R9 aaa]# chmod g+s b
[root@R9 aaa]# ll
total 0
drwsr-Sr--. 2 sulibao root 6 Dec 27 21:23 a.txt
drwx-ws-wx. 2 root    su   6 Dec 27 22:02 b
[root@R9 aaa]# touch b/b.txt
[root@R9 aaa]# ll b
total 0
-rw--w--w-. 1 root su 0 Dec 27 22:02 b.txt

3.Sticky Bit

o+t,权限数值为1,映射在other处。这个特殊权限只对目录生效,表示若此用户对该目录有wx权限,那么该用户在该目录下的文件和目录只有这个用户和root才能删除,并且只能操作属于自己的文件资源。

[root@R9 aaa]# ll
total 0
drwsr-Sr--. 2 sulibao root  6 Dec 27 21:23 a.txt
d-wx-wx-wx. 2 root    root 71 Dec 27 22:16 b
[root@R9 aaa]# chmod o+t b
[root@R9 aaa]# ll
total 0
drwsr-Sr--. 2 sulibao root  6 Dec 27 21:23 a.txt
drwxrwxrwt. 2 root    root 71 Dec 27 22:16 b
​
[sulibao@R9 b]$ ll
total 0
-rw--w--w-. 1 root root 0 Dec 27 22:07 b.txt
-rw--w--w-. 1 root root 0 Dec 27 22:07 c.txt
-rw--w--w-. 1 root root 0 Dec 27 22:07 d.txt
-rw--w--w-. 1 root root 0 Dec 27 22:07 e.txt
-rw--w--w-. 1 root root 0 Dec 27 22:07 f.txt
-rw-r--r--. 1 su   su   0 Dec 27 22:21 my    #sulibao用户没办法删除su用户创建的文件
[sulibao@R9 b]$ rm -rf my 
rm: cannot remove 'my': Operation not permitted

三.ACL扩展权限

这个权限又表示给特定的用户指定特定的权限

1.设置和查看扩展权限

b目录权限为000,设置允许sulibao用户进行rwx

[root@R9 aaa]# setfacl -m u:sulibao:rwx b
[root@R9 aaa]# getfacl b
# file: b
# owner: root
# group: root
user::---
user:sulibao:rwx
group::---
mask::rwx
other::---
[root@R9 aaa]# ll
total 0
drwsr-Sr--. 2 sulibao root  6 Dec 27 21:23 a.txt
d---rwx---+ 2 root    root 81 Dec 27 22:21 b
[sulibao@R9 aaa]$ ll
total 0
drwsr-Sr--. 2 sulibao root  6 Dec 27 21:23 a.txt
d---rwx---+ 2 root    root 81 Dec 27 22:21 b
[sulibao@R9 aaa]$ cd b
[sulibao@R9 b]$ ll
total 0
-rw--w--w-. 1 root root 0 Dec 27 22:07 b.txt
-rw--w--w-. 1 root root 0 Dec 27 22:07 c.txt
-rw--w--w-. 1 root root 0 Dec 27 22:07 d.txt
-rw--w--w-. 1 root root 0 Dec 27 22:07 e.txt
-rw--w--w-. 1 root root 0 Dec 27 22:07 f.txt
-rw-r--r--. 1 su   su   0 Dec 27 22:21 my

2.setfacl常用参数

-m:设定 ACL 权限,一般需要使用“u:用户名:权限”这样的格式来指定给那个用户设置扩展权限,组也可以“g:组名:权限”

-x:删除指定的 ACL 权限

-b:删除所有的 ACL 权限

-d:设定默认 ACL 权限。只对目录生效,指目录中新建立的文件拥有此默认权限

-k:删除默认 ACL 权限

-R:递归设定 ACL 权限。指设定的 ACL 权限会对目录下的所有子文件生效

3.删除指定扩展权限操作演示

[root@R9 aaa]# setfacl -x u:sulibao b
[sulibao@R9 b]$ ll
ls: cannot open directory '.': Permission denied

四.umask权限掩码

表示通过umask值来设置新建文件或目录时默认的权限,原始情况下新建文件的默认权限值是0666,目录是0777

1.验证一下是否是通过umask来默认创建的

如何验证,我理解的是,通过原始的默认权限值去求差,如果你要新建目录默认是0733,那么就用默认的0777去减0733得出0044此umask值;若是要新建的文件默认是0622,那么就用默认的0666去减0622得出0044次umask,最后就将umask值修改为这个值即可

(1)文件

0666-预设权限值=umask值

(2)目录

0777-预设权限值=umask值

[root@R9 ~]# umask
0044
​
[root@R9 ~]# touch m
[root@R9 ~]# mkdir n
-rw--w--w-. 1 root    root      0 Dec 27 22:32 m
drwx-wx-wx. 2 root    root      6 Dec 27 22:31 n

2.永久修改umask值

[root@R9 ~]# vim /etc/profile   #在最后加上
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then    #UID大于199就设置umask为0002,即权限值为0775(目录),可自行修改umask 0002
elseumask 0022
fi
​
[root@R9 ~]# source /etc/profile   #立即生效
[root@R9 ~]# mkdir sulibao
[root@R9 ~]# ll | grep sulibao
drwxr-xr-x. 2 root    root      6 Dec 27 22:44 sulibao   #root身份创建,其UID小于199,umask值为0022,权限值为755,(目录)

 

这篇关于Linux普通权限、特殊权限、扩展权限和Umask值介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/546143

相关文章

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl