Linux基础(五):权限管理

文章目录

文件目录权限属性

权限详解

文件权限:

目录权限:

数字表示:

更改权限

chmod

文字设定法

数字设定法

chown

特殊权限

SUID

SGID

SBIT

umask默认权限

ACL权限管理


前言

本人也是菜鸟,在学习过程和写博客过程中都参考了很多的资料,写博客的目的是为了帮到一些有需求的人,同时也为了自己记录学习过程,如有不对和不妥的地方欢迎指出
本文将学习文件和目录的权限属性,权限的表示方法、修改权限、修改文件或目录的所属者及所属组、特殊权限、默认权限、ACL权限等权限管理知识


文件目录权限属性

当我们使用ll命令查看当前目录详细信息时,可以看到最左侧有十个字母
[root@linux1 wldj]# ll
总用量 0
drwxr-xr-x 2 root root 6 11月 22 20:13 a
-rw-r--r-- 1 root root 0 11月 22 20:13 a.txt
drwxr-xr-x 2 root root 6 11月 22 20:13 b
-rw-r--r-- 1 root root 0 11月 22 20:13 b.txt
drwxr-xr-x 2 root root 6 11月 22 20:13 c
-rw-r--r-- 1 root root 0 11月 22 20:13 c.txt

#详解
-                     #文件类型
rw-r--r--             #权限
1                     #inode块
root                  #所属者
root                  #所属组
0                     #大小
11月 22 20:13         #时间
a.txt                 #文件名字
这几个字母所表示的意义如下图所示:
  • 0:该文件的文件类型,d为目录文件,-为文本文件
  • 1、2、3:该文件所属者的权限,也就是这个文件的拥有者的权限
  • 4、5、6:该文件所属组的权限,这个文件拥有组的权限
  • 7、8、9:除了所属者和所属组以外其他用户的权限

权限详解

权限分为r、w、x三种权限,分别是 可读(r),可写(w),可执行(x)
文件权限:
  • 可读:能够读取文件的实际内容
  • 可写:能够编辑、新增、修改、删除文件的实际内容
  • 可执行:能够执行脚本程序
目录权限:
  • 可读:能够读取目录内的文件列表
  • 可写:能够在目录新增、删除、重命名文件
  • 可执行:能够进入该目录
数字表示:
rwx权限可以用数字来表示,r对应4,w对应2,x对应1
数字表示法是基于字符rwx的权限而来的,目的是为了简化权限的表示方式
[root@linux1 wldj]# ll
-rw-r--r-- 1 root root 0 11月 22 20:13 a.txt
例如这个a.txt文件,它的文件所属者权限为rw-,也就拥有可读可写权限,也就是拥有4和2的权限,那么这个文件的文件所属者权限为6(4+2+0)。所属组权限为r--,即4。其他用户的权限为r--,即4。所以这个文件的权限表示为644

更改权限

chmod

修改文件、目录的权限
文字设定法
语法:chmod [操作对象] [操作符] [赋予的权限] 文件/目录

操作对象:
u 用户(user),文件或目录的所属者
g 用户组(group),文件或目录的所属组
o 其他用户(other)
a 所有用户all

操作符:
+ 添加权限
- 减少权限
= 设置权限

#实例1
[root@linux1 wldj]# ll a.txt                 #查看a.txt文件的权限
-rw-r--r-- 1 root root 0 11月 22 20:13 a.txt #644,所属组没有w权限
[root@linux1 wldj]# chmod g+w a.txt          #赋予a.txt所属组w权限
[root@linux1 wldj]# ll a.txt                 #查看a.txt文件的权限
-rw-rw-r-- 1 root root 0 11月 22 20:13 a.txt #此时权限变为664,所属组获得w权限

#实例2
[root@linux1 wldj]# ll a.txt                 #查看a.txt文件的权限     
-rw-rw-r-- 1 root root 0 11月 22 20:13 a.txt #664权限
[root@linux1 wldj]# chmod o-r a.txt          #将其他用户的r权限删除
[root@linux1 wldj]# ll a.txt                 #查看a.txt文件权限
-rw-rw---- 1 root root 0 11月 22 20:13 a.txt #权限变为660

#实例3
[root@linux1 wldj]# ll a.txt                 #查看a.txt文件权限
-rw-rw---- 1 root root 0 11月 22 20:13 a.txt #权限660
[root@linux1 wldj]# chmod a=rwx a.txt        #设置a.txt文件所有用户拥有rwx权限
[root@linux1 wldj]# ll a.txt                 #查看a.txt文件权限
-rwxrwxrwx 1 root root 0 11月 22 20:13 a.txt #权限为777
数字设定法
chmod [权限] 文件/目录

#实例1
[root@linux1 wldj]# ll b.txt                   #查看b.txt权限
-rw-r--r-- 1 root root 0 11月 22 20:13 b.txt   #权限为644
[root@linux1 wldj]# chmod 777 b.txt            #赋予b.txt权限为777
[root@linux1 wldj]# ll b.txt                   #查看b.txt权限
-rwxrwxrwx 1 root root 0 11月 22 20:13 b.txt   #权限为777

chown

更改文件、目录的属者、属组
格式:
chown [属者] 文件/目录
chown :[属组] 文件/目录
chown [属者]:[属组] 文件/目录

#实例1:
[root@linux1 wldj]# ll a.txt                 
-rwxrwxrwx 1 root root 0 11月 22 20:13 a.txt   #属者为root,属组为root
[root@linux1 wldj]# chown user01 a.txt         #将所属者更改为user01
[root@linux1 wldj]# ll a.txt             
-rwxrwxrwx 1 user01 root 0 11月 22 20:13 a.txt #属者变为user01,属组不变

#实例2
[root@linux1 wldj]# ll b.txt
-rwxrwxrwx 1 root root 0 11月 22 20:13 b.txt   #属者为root,属组为root
[root@linux1 wldj]# chown :user01 b.txt        #更改所属组为user01
[root@linux1 wldj]# ll b.txt                 
-rwxrwxrwx 1 root user01 0 11月 22 20:13 b.txt #属组变为user01,属者不变

#实例3
[root@linux1 wldj]# ll c.txt
-rw-r--r-- 1 root root 0 11月 22 20:13 c.txt   #属者为root,属组为root
[root@linux1 wldj]# chown user01:user01 c.txt  #更改属者为user01,属组为user01
[root@linux1 wldj]# ll c.txt                 
-rw-r--r-- 1 user01 user01 0 11月 22 20:13 c.txt #属者和属组变为user01

特殊权限

SUID

临时拥有所属者的权限
[root@linux1 ~]# ll /usr/bin/touch
-rwxr-xr-x. 1 root root 96312 Oct 20  2021 /usr/bin/touch
[root@linux1 ~]# chmod u+s /usr/bin/touch #为用户添加s权限
[root@linux1 ~]# ll /usr/bin/touch
-rwsr-xr-x. 1 root root 96312 Oct 20  2021 /usr/bin/touch
#可以发现x变为了s,如果文件原先就没有x权限的话,就会变成rwS

说明
对文件设置SUID强制位之后,可以让对此文件没有执行权限的用户执行此文件
chmod u+s filename	对文件设置SUID强制位
chmod u-s filename	对文件取消SUID强制位

SGID

子文件继承父目录所属组
[root@linux1 ~]# mkdir /share
[root@linux1 ~]# chmod 777 /share/
[root@linux1 ~]# su - can          #切换为普通用户can
[can@linux1 ~]$ touch /share/a     #创建一个文件a
[can@linux1 ~]$ ll /share/
total 0
-rw-rw-r--. 1 can can  0 Nov 28 08:01 a  #用户和用户组为can
[can@linux1 ~]$ exit                #回到root用户
logout
[root@linux1 ~]# chmod g+s /share/  #赋予s权限
[root@linux1 ~]# ls -ld /share/     #查看/share的权限
drwxrwsrwx. 2 root root 15 Nov 28 08:01 /share/ #所属组的x变为s

[root@linux1 ~]# su - can           #切换can用户
Last login: Mon Nov 28 08:01:39 EST 2022 on pts/1
[can@linux1 ~]$ touch /share/b      #创建文件b
[can@linux1 ~]$ ll /share/
total 0
-rw-rw-r--. 1 can can  0 Nov 28 08:01 a
-rw-rw-r--. 1 can root 0 Nov 28 08:01 b #b的属组为root

概念
对目录设置了SGID强制位之后,用其他用户在目录下创建文件则会继承该目录的所属组
chmod g+s directory:对目录设置SGID强制位
chmod g-s directory:对目录取消SGID强制位

SBIT

只能删除自己的文件,不能删除其他用户的文件
[root@linux1 ~]# chmod o+t /srv/sharesmb/

[user01@linux1 sharesmb]$ touch user01   #user01创建文件
[user01@linux1 sharesmb]$ exit
exit
[root@linux1 ~]# su user02     
[user02@linux1 root]$ cd /srv/sharesmb/  
[user02@linux1 sharesmb]$ rm -rf user01  #user02无法删除user01创建的用户
rm: 无法删除 'user01': 权限不够  

umask默认权限

默认权限掩码,定义默认权限中被屏蔽或禁用的权限位
umask值用于设置用户在创建文件时的默认权限, 当我们在创建目录或文件时,他们的默认权限就是umask值决定的。root的umask值默认是0022,普通用户的umask值默认是0002
#查看默认权限
[root@linux1 ~]# umask
0022

[user01@linux1 ~]$ umask
0002

详解:
第一个0代表丢弃的权限
第二个0代表本文件/目录拥有者什么权限都没丢弃,x权限除外
第三个2代表本文件/目录的用户组丢弃了w权限,如果是文件那么他的x文件也会被丢弃
第三个2代表本文件/目录的其他用户能使用的权限只有r和x,文件除外

当root用户创建目录时,默认的权限就是用最大权限777去掉相应位置的umask值权限,即对于所有者不必去掉任何权限,对于所属组要去掉w权限,对于其他用户也要去掉w权限,所以目录的默认权限就是755
当root用户创建文件时,默认的权限则是用最大权限666去掉相应位置的umask值,即文件的默认权限是644

ACL权限管理

设置文件ACL策略规则
setfacl命令可以用来细分linux下的文件权限
chmod命令可以把文件权限分为u,g,o三个组。而setfacl可以对每一个文件或目录设置更精确的文件权限。换句话说,setfacl可以更精确的控制权限的分配
比如:让某一个用户对某一个文件具有某种权限
setfacl -m u:[用户名]:[权限(rwx)] [文件名]    #为用户设置ACL权限
setfacl -m g:[组名]:[权限(rwx)] [文件名]      #为组设置ACL权限
setfacl -x u:[用户名] [文件名]                #删除用户ACL权限
setfacl -x g:[组名] [文件名]                  #删除组ACL权限
setfacl -b [文件名]                           #删除文件的所有ACL权限

#为manager组设置对于/srv/sharesmb目录具有读写权限
[root@linux1 ~]# setfacl -m g:manager:rwx /srv/sharesmb/

#为dev组设置对于/srv/sharesmb目录具有只读权限
[root@linux1 ~]# setfacl -m g:dev:rx /srv/sharesmb/

#查看权限ACL权限
[root@linux1 ~]# getfacl /srv/sharesmb/
getfacl: Removing leading '/' from absolute path names
# file: srv/sharesmb/   #显示的文件或目录的名称
# owner: root           #文件或目录的所有者 
# group: root           #文件或目录的所有组
user::rwx               #文件所有者具有的权限
group::r-x              #文件所有组具有的权限
group:manager:rwx       #manager组具有的权限
group:dev:r-x           #dev组具有的权限
mask::rwx               #ACL掩码,表示ACL规则中分配的最大权限,如果mask是r--,即使manager组被授予rwx,实际的权限也会被限制为r--
other::r-x              #除了上面的用户以外的其他用户的权限

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值