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

相关文章

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

redis过期key的删除策略介绍

《redis过期key的删除策略介绍》:本文主要介绍redis过期key的删除策略,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录第一种策略:被动删除第二种策略:定期删除第三种策略:强制删除关于big key的清理UNLINK命令FLUSHALL/FLUSHDB命

Spring Security+JWT如何实现前后端分离权限控制

《SpringSecurity+JWT如何实现前后端分离权限控制》本篇将手把手教你用SpringSecurity+JWT搭建一套完整的登录认证与权限控制体系,具有很好的参考价值,希望对大家... 目录Spring Security+JWT实现前后端分离权限控制实战一、为什么要用 JWT?二、JWT 基本结构

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效