深度讲解Linux文件系统权限

前言

Linux中的权限是相对于用户和组而言的,阅读这篇文章前请先对用户和用户组有所了解
Linux中用户及用户组的管理

权限介绍

当我们使用ls -l时可以查看文件及目录的详细信息
在这里插入图片描述
这里可以看到最前面显示了一堆“drwx-…”,这其实就表示文件或目录的权限

  • 第一个字符:表示文件类型
字符类型
-普通文件,类似于Windows的记事本
d目录文件,类似于文件夹
c字符设备文件,串行端口设备,顺序读写,键盘
b块设备文件,可供存储的接口设备,随机读写,硬盘
p管道文件,用于进程间的通信
s套接字文件,常用于网络上的通信
llink,链接文件
  • 第2 ~ 4个字符(rwx):该文件的属主用户对该文件的权限
  • 第5 ~ 7个字符(rwx):该文件的属组用户对该文件的权限
  • 第8 ~ 10个字符(rwx):其他用户对该文件的权限
  • 第11个字符(.或+):表示是否存在ACL
    -表示没有该权限

用八进制表示用户权限

在这里插入图片描述

  • r:Read读
  • w:Write写
  • x:execute执行

文件权限针对三类对象进行定义

  • owner:属主,缩写u
  • group:属组,缩写g
  • other:其他,缩写o

另:a 表示这三种全部(all)

对于文件和目录来说,这三个权限的意义不尽相同

权限对文件的影响对目录的影响
r可读取文件列出目录的内容(文件名)
w可更改文件内容可创建或删除目录中的任一文件
x可作为命令执行文件可访问目录的内容(取决于文件权限)

设置文件和目录的一般权限

修改权限

命令格式1:chmod [选项] [ugoa][+-=][rwx] 文件或目录
命令格式2:chmod [选项] nnn 文件或目录

  • ugoa:表示加减权限的对象
  • + | - | =:表示增加、减去、赋予权限
  • rwx:用字符型表示权限
  • nnn:用三个八进制表示三组权限
  • -R:递归指定目录及以下文件
  • st:特殊权限

修改文件属主和属组

  • 改变属主
    命令格式:chown [选项] 新属主[:[新数组]] 被改变归属的文件或目录
    -R:递归指定
  • 改变属组
    命令格式:chown [选项] :新属组 被改变归属的文件或目录
    chgrp [选项] 新属组 被改变归属的文件或目录

特殊权限

众所周知,改密码这件事情实则是改变执行/usr/bin/passwd改变/etc/shadow文件,但这两个文件的拥有者都是root,那么普通用户为什么可以给自己改密码呢,这里就要用到特殊权限
在这里插入图片描述
可以看到,在/usr/bin/passwd文件的所属主的权限上写的是rws,这里的s即为特殊权限
特殊权限共有三种:SET UID(SUID)、SET GID(SGID)、Sticky Bit(SBit粘滞位)

  • SUID:是为了让一般用户在执行某些程序时获得程序拥有者的权限(仅对二进制文件有效)

  • SGID:多用于多人开发项目

    • 文件:执行时获得程序拥有者的权限

    • 目录:在该目录下减文件或目录时,将会是此目录的用户组

  • Sticky Bit:仅对目录有效

    • 在具有SBit的目录下,用户若在该目录下具有 w 及 x 权限,则该用户建立的文件只有拥有者和root用户可以删除

这三种特殊权限同样使用chmod来施加,使用u±sg±so±t;若要使用nnnn格式的话,后三位仍然是rwx的权限八进制值,第一位则是特殊权限的八进制值
在这里插入图片描述
也就是说第一位的7表示特殊权限

进程掩码 mask umask

所有文件都会有自己的权限,可是我们创建文件时一般不指定它的权限,那么它的权限是如何获得的呢,这就要收到umask的影响

查看用户当前umask
在这里插入图片描述
在当前umask下创建文件及目录:
在这里插入图片描述
修改临时的shell umask
在这里插入图片描述
永久修改umask需要修改/etc/profile文件:vim /rtc/profile

ACL

当一部分人既不是文件的属主,也不是属组,但希望短时间内获得与其他用户不同的权限,这是就要用到ACL

查看ACL权限:
在这里插入图片描述
这是可以看到权限后面有个.
在这里插入图片描述
设置ACL:setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...

选项作用
-m设定ACL(如果给用户设置,则“u:用户名:权限”;如果给组设置,则“g:组名:权限”)
-x删除指定的ACL
-b删除所有的ACL
-d设置默认ACl(仅对目录有效,指目录中新建立的文件拥有此默认权限)
-k删除默认ACL
-R递归设置ACL

给用户和用户组设置的ACL并不是最终的ACL权限,一般默认mask的权限都是rwx,与我们设定的权限相与就是我们最终设定的权限

示例:创建一个/project文件,属组里有两个用户,权限为077

[root@localhost ~]# mkdir /project
[root@localhost ~]# useradd zhangsan
[root@localhost ~]# useradd lisi
[root@localhost ~]# groupadd QQgroup
[root@localhost ~]# gpasswd -M zhangsan,lisi QQgroup
[root@localhost ~]# chown root:QQgroup /project/
[root@localhost ~]# chmod 770 /project/
[root@localhost ~]# ll -d /project/
drwxrwx---. 2 root QQgroup 6 1230 14:15 /project/

再设置一个旁听者pt,ACL为r-x

[root@localhost ~]# useradd pt
[root@localhost ~]# setfacl -m u:pt:rx /project/
[root@localhost ~]# ll -d /project/
drwxrwx---+ 2 root QQgroup 6 1230 14:15 /project/
[root@localhost ~]# getfacl /project/
getfacl: Removing leading '/' from absolute path names
# file: project/
# owner: root
# group: QQgroup
user::rwx
user:pt:r-x
group::rwx
mask::rwx
other::---

可以看到文件权限后的.变成了+,说明存在ACL

最大有效权限 mask

前面说到最终的ACL是我们设置的与mask相与之后的的结果,因为当最大有效权限都没有,ACL即便设置了也无效

设置mask

[root@localhost ~]# setfacl -m m:rx /project/
[root@localhost ~]# getfacl /project/
getfacl: Removing leading '/' from absolute path names
 # file: project/
 # owner: root
 # group: QQgroup
user::rwx
user:pt:r-x
group::rwx 
mask::r-x
other::---

示例

  1. /pub目录为公共存储目录对所有用户可以读,写,执行,但用户只能删除属于自己的文件(t权限)
    在这里插入图片描述
  2. /sc目录为生产部存储目录只能对生产部人员可以写入,并且生产部人员所建立的文件都自动归属到shengchan
    在这里插入图片描述
  3. admin用户对于/sc目录可以读,写,执行
    在这里插入图片描述
  4. 创建目录/test/data,让it组内普通用户对其有写权限,且创建的所有文件的属组为目录所属的组,此外,每个用户仅能删除自己的文件
    在这里插入图片描述
    当文件本身不存在x权限时,特殊权限会变成大写
  5. 让普通用户能使用/tmp/cat去查看/etc/shadow文件
    在这里插入图片描述
  6. 设置ACL权限,要求如下:
    /test/dir里创建的新文件自动属于webs组组apps的成员如:tomcat能对这些新文件有读写权限,组dbs的成员如:mysql只能对新文件有读权限,其它用户(不属于webs,apps,dbs)不能访问这个文件夹。
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

1ta-chi

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

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

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

打赏作者

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

抵扣说明:

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

余额充值