【Linux系统】Linux权限(用户类别,文件访问者类别,文件类型和访问权限,文件权限值的表示方法,文件权限的设置方法,目录的权限,粘滞位,默认权限)

在这里插入图片描述

一、Linux权限的概念

权限就是特定用户特定文件某属性操作的限制
在这里插入图片描述

1.1 Linux中的用户类别

Linux下有两种用户:超级用户(root)、普通用户

  • 超级用户:可以再linux系统下做任何事情,不受限制
  • 普通用户:在linux下做有限的事情。
  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

超级用户基本不受linux权限系统的限制,下面介绍的访问者和访问权限对root用户无效

如何进行用户切换?
  • su:切换为超级用户(root)
  • su -:切换为root并返回root的工作目录
  • su username:切换为指定的普通用户
  • su - username:切换为指定的普通用户并返回指定用户的工作目录
  • 超级用户root可以随意切换到任何普通用户且无需密码。
  • 普通用户切换到root或普通用户之间进行切换需输入用户密码。

用户回退:exit / ctrl+d。不建议使用su username的方式进行回退,因为不退出登录bash进程就不会被终止,多次切换会导致后台运行的bash进程过多。

sudo指令——临时权限提升

  • 语法:sudo + 命令
  • 不切换用户,但以root权限执行这条命令
  • 需输入普通用户的密码
  • 普通用户在使用sudo命令前需添加信任关系

如何添加信任关系?

  1. 打开sudoers配置文件进行修改
vim /etc/sudoers
  1. 在表Allow root to run any commands anywhere(100行左右) 下添加信任用户
    在这里插入图片描述
  2. 在表Allows people in group wheel to run all commands(108行左右)下添加信任组
    在这里插入图片描述
  3. 保存并退出

gpasswd指令——加入或退出用户组

  • 功能: 加入或退出用户组,一般需要root权限
  • 语法: gpasswd [op] username grpname
  • 常用选项:
  • -M:加入指定用户组
  • -d:退出指定用户组
  • 举例:
sudo gpasswd -M ztt zty //加入zty组
sudo gpasswd -d ztt zty //退出zty组

id指令——查看用户信息

  • 功能: 依次显示用户id,组id,所属组
  • 语法: id username
  • 举例:
    在这里插入图片描述

1.2 文件访问者的类别

  • 文件的权限是针对不同访问者来区别设置的
  • 文件访问者分为以下三类:
    • 拥有者:owner
    • 所属组:group
    • 其他人:other

    不是拥有者,且与拥有者不在同一组就是other


1.3 文件类型和访问权限

ll指令查看文件的具体属性

在这里插入图片描述
在这里插入图片描述
详细内容点这里:详解Linux下ll命令的完整属性信息


Linux中的文件类型

  • 在Linux文件系统中,不以文件后缀区分文件类型。

说明:这句话的适用范围是Linux文件系统中。Linux系统中的命令或程序还是要通过后缀来区分文件类型的。

  • 文件属性第一部分的第一个字符标识文件的类型:
  • -:普通文件【文本,各种动静态库,可执行程序,源程序】
  • d:目录文件
  • c:字符设备文件【键盘与显示器】
  • b:块设备文件【磁盘】
  • p:管道文件【通信】
  • l:链接文件【软链接】

基本权限

  1. 读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
  2. 写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说,具有删除、移动、创建目录内文件的权限
  3. 执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
  4. “—”表示不具有该项权限

二、Linux权限管理

2.1 文件权限值的表示方法

字符表示法

在这里插入图片描述

8进制数表示法

  • 由于权限的位置是确定的而且是两态的(有或没有),所以各访问者的权限可以用二进制数表示;又因为最大是111,所以每种身份的权限可以简化为一个8进制。三种访问者即3位8进制数。

在这里插入图片描述

2.2 文件访问权限的设置方法

chmod指令——设置访问者的权限

  • 功能: 设置文件的访问权限
  • 格式: chmod [参数] 权限 文件名
  • 常用选项:
  • -R:递归修改目录文件的权限(用户至少拥有读和执行权限)
  • 说明:只有文件的拥有者和root才可以改变文件的权限

通过权限字符设置

chmod [参数] 用户标识符+/-/=权限字符 文件名

用户标识符

  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户

+/-/=

  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限

实例:

chmod u+w /home/abc.txt
chmod u-rx /home/abc.txt
chmod o-x /home/abc.txt
chmod u+w,g=wx,o-x, /home/abc.txt
chmod a=x /home/abc.txt
chmod a=rx /home/abc.txt
通过三位8进制数字设置

chmod [参数] <权限码> 文件名
实例:

chmod 664 /home/abc.txt
chmod 640 /home/abc.txt

chown指令——修改文件的拥有者和所属组

  • 功能: 修改文件的拥有者和所属组
  • 格式: chown [参数] 用户名:所属组 文件名
  • 常用选项:-R 递归修改文件或目录的所属组
  • 实例:
chown user1 f1             //修改文件的拥有者
chown user1:grp1 f1        //修改文件的拥有者和所属组
chown :grp1 f1		       //修改文件的所属组
chown -R user1 filegroup1  //递归修改访问者

chgrp指令——修改文件的所属组

  • 功能: 修改文件或目录的所属组
  • 格式: chgrp [参数] 用户组名 文件名
  • 常用选项:-R 递归修改文件或目录的所属组
  • 实例:
chgrp users /abc/f2

root可以不受限制的修改任何文件的访问权限、拥有者和所属组。因此,文件的创建者不一定是文件的拥有者。


2.3 目录的权限

  1. 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中.
  2. 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
  3. 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.
  • 目录的可执行权限是表示你可否在目录下执行命令。
    • 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
    • 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录甚至可以打开目录中的文件(已知文件名)。但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。
  • 只拥有r权限时,ll查看目录中的内容只能显示文件名;拥有rx权限才能显示详细信息。
  • chmod -R 递归修改访问者的权限时,拥有者至少需要rx权限

上面介绍的目录权限体系存在一个问题,那就是如果我们想创建一个公共目录:访问者可以在目录中创建和修改文件,但不能删除不属于自己的文件。这样的目录就存在写入权限的矛盾。如果放开其他人的写入权限,那么他就有权力删除文件中的所有文件(包括不属于自己的文件),以下是测试过程:

[root@localhost ~]# chmod 0777 /home/
[root@localhost ~]# ls /home/ -ld
drwxrwxrwx. 3 root root 4096 919 15:58 /home/
[root@localhost ~]# touch /home/root.c
[root@localhost ~]# ls -l /home/
总用量 4
-rw-r--r--. 1 root root 0 919 15:58 abc.c
drwxr-xr-x. 27 litao litao 4096 919 15:53 litao
-rw-r--r--. 1 root root 0 919 15:59 root.c
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/root.c #litao可以删除root创建的文件
rm:是否删除有写保护的普通空文件 "/home/root.c"?y
[litao@localhost ~]$ exit
logout

为了解决这个不科学的问题, Linux引入了粘滞位的概念。


2.4 粘滞位

  • 粘滞位只能对目录设置,一般是限制other权限的
  • 对于设置了粘滞位的目录,任何人都可以在目录下创建文件,但不能删除不属于自己的文件。只有文件的拥有者才可以删除文件,其他人不能删除。

注意:

  • 粘滞位是独立于rwx权限之外的,并不是与x权限绑定在一起的,只是在文件属性中的位置与o:x相同。
  • 如果想发挥粘滞位的上述功能,需要在o=rwx权限的基础上再增加粘滞位。
  • 粘滞位的设置方法: chmod +t/o+t 目录名
  • 测试过程:
[root@localhost ~]# chmod +t /home/ # 加上粘滞位
[root@localhost ~]# ls -ld /home/
drwxrwxrwt. 3 root root 4096 919 16:00 /home/
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/abc.c #litao不能删除别人的文件
rm:是否删除有写保护的普通空文件 "/home/abc.c"?y
rm: 无法删除"/home/abc.c": 不允许的操作
  • 实际应用: 事实上,所有用户在运行过程中产生的临时文件都存放在系统的/tmp路径下。所有用户在/tmp路径下均可创建、修改、读取、删除属于自己的临时文件,但不能对其他用户的临时文件进行操作。
  • 当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
  1. 超级管理员删除
  2. 该目录的所有者删除
  3. 该文件的所有者删除

2.5 默认权限

新建文件的权限配置就是默认权限。

默认权限的由来

  1. 起始权限码(default0)
    • 普通文件的起始权限码:666
    • 目录文件的起始权限码:777
  2. 利用权限掩码将起始权限码转换为默认权限
    • 调用umask指令查看权限掩码(默认为0002)
    • 将权限掩码的指定位关闭:
      • default = default0 & (~mask)
    • 经过转换后权限码变为:
      普通文件的默认权限码:664
      目录文件的默认权限码:775
  3. 根据文件类型对默认权限进行调整
    最后再根据文件类型进行调整,如可执行程序a.out具有执行权限。
    在这里插入图片描述

自定义默认权限

通过umask+权限掩码,设置权限掩码,从而改变默认权限

注意:自定义默认权限只在本次登录中有效。

umask指令——显示或修改权限掩码
  • 功能:显示或修改权限掩码(默认为0002)
  • 语法:umask [权限掩码]
  • 实例:
    在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

芥末虾

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

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

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

打赏作者

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

抵扣说明:

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

余额充值