【linux】linux权限的详细讲解

一、Linux 权限的概念

1.1、用户分类

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

超级用户:可以再linux系统下做任何事情,几乎不受权限的限制;
普通用户:在linux下做权限范围内的事情;
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”;

在这里插入图片描述

1.2、切换用户

inux 切换用户的指令是:su;

在 Linux 中,如果我们要从超级用户切换到普通用户,直接 “su username” 即可,没有任何限制:
在这里插入图片描述

但是如果我们要从普通用户切换到超级用户,就需要输入 root 密码;普通用户切换到 root 用户有两种方式:

  1. su:切换到 root 的当前目录;
  2. su -:直接切换到 root 的根目录;

注:Linux 出于安全考虑,从键盘输入的密码在终端上是不会回显的,也就是说我们输入密码时屏幕不会显示任何东西;

在这里插入图片描述

2.3、用户提权

在工作中我们使用Linux的时候可能会出现这样一种状况:当前有一条指令必须拥有超级用户的权限才能执行,但我们不想切换用户,想直接让普通用户以root用户的身份去执行该指令;
sudo 指令可以满足我们的需求

但是我们执行 sudo 指令发现了两个奇怪的现象:
在这里插入图片描述

1、使用 sudo 指令让我们拥有root用户的权限,按理来说应该提示我们输入root密码,但事实是它让输入我们自己用户的密码;
2、我以test的身份执行 sudo 指令,它提示test用户不在 sudoers file 内,sudo 失败;(而如果我们不在 sudoers 文件中,那么自然也不能通过 sudo 指令提权,我们后面讲vim的时候一起解决)

上面这些现象是由 sudo 的机制造成的:sudo 存在的目的是为了 给受信任的用户提供最少的执行障碍,受信任的用户是指被添加到 sudoers 文件中的用户;也就是说,当我们存在于 sudoers 文件中时,说明 root 用户充分信任我们,所以当我们使用 sudo 指令提升权限时只需要输入自己的密码即可;

注:sudo 的有限时间为15分钟,即当我们使用 sudo 提权成功后,后面15分钟内再次使用 sudo 指令不需要再次输入密码;

二、Linux 权限管理

2.1、引入

权限即你是否可以做这件事情,比如:听网易云vip歌曲的时候,只有vip身份的用户才可以听,普通身份用户无法听

权限认证和身份(人)与属性有关

权限的认证跟身份有关(权限也和人也有关)。比如:网易云vip音乐关心的你是否是vip,这跟你的身份有关。
权限的认证还跟事物的属性有关。例如:你想在网易云上听周杰伦的《反方向的钟》,尽管你有vip可以听网易云音乐上所有的歌曲,可是网易云上买不到周杰伦的《反方向的钟》的版权,网易云上不能满足你的要求,那么你在网易云上就没有听周杰伦的《反方向的钟》的权限。这个事物的属性要满足你想要做的事情你才能有对应的权限。

2.2、文件访问者的分类

在 Linux 下,文件的访问者被分为三类:

所有者:文件和文件目录的所有者 – u (user);
所属组:文件和文件目录的所有者所在的组的用户 – g (group);
其他用户:除所有者和所属组用户之外的用户 – o (other);
关于文件的所有者和其他用户相信大家都很容易理解,但是为什么会有一个所属组呢?我们以一个例子说明:

假设一家刚起步的很穷的公司要开发一款产品,该公司的老板奉行竞争理念,所以他把手下的人分为了两个组,让他们来研发同一款产品,最后哪个组的产品更优哪个组就拿额外的奖金;
但是呢由于公司很穷,只买得起一台主机,这时候问题就出现了:两个组的成员公用一台主机,那么组内成员的代码如何进行共享呢?
如果我把文件设置为私有,这样虽然另外一组的人看不到我的代码,但同时我的队友也看不到;而如果我把文件设置为共有,那么又可能有代码泄露的风险;

为了解决这种情况,Linux 设计出了所属组的概念,我们可以把多个用户归为一个组,让组内的成员共享文件,组外的成员则受权限限制;

2、文件类型和访问权限
我们在 Linux 中查看一个文件/目录时,文件前面通常会出现很长一串字符:在这里插入图片描述
他们对应的含义如下:在这里插入图片描述
第一个字符代表文件类型,后面九个字符三三一组分别代表文件拥有者、所属组和其他用户的权限,其中文件的权限一共分为三类:

r – 读权限:Read 对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限;
w – 写权限:Write 对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限;
x – 可执行权限:execute 对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限;

注:其中对应位置上有代表权限的字符说明该用户拥有对应权限,如果显示 - 则代表该用户没有对应权限;在这里插入图片描述

  • 文件类型
    Liunx 中一共有七种文件:
  • d:目录;
  • -:普通文件 (可执行程序也属于普通文件);
  • l:软链接(类似Windows的快捷方式)
  • b:块设备文件(例如硬盘、光驱等)
  • p:管道文件
  • c:字符设备文件(例如屏幕等串口设备)
  • s:套接口文件

文件后缀与文件类型
在之前我们就提到,Linux 中不以文件的后缀名来区分文件类型,文件后缀属于文件名的一部分;但这并不不代表我们不可以使用文件后缀来区分文件类型 – 意思就是虽然在 Linux 眼中文件后缀没用,但是我们可以把文件后缀当作对用户的一个提示符号;

同时,Linux 中不区分文件后缀并不代表 Linux 下的各种工具,比如 gcc、g++ 区分文件后缀

三、文件权限值的表示方法

3.1、字符表示法在这里插入图片描述

3.2、八进制数值表示法

rwx
111
有的地方就是1

在这里插入图片描述

四、设置文件权限

4.1、chmod 指令

使用chmod指令可以完成对指定身份(拥有者u,所属组g,其他人o)的权限(读r,写w,执行x)的修改

chmod [参数] 权限 文件名;

注意:只有文件的拥有者和root才可以改变文件的权限;

  • 1.chmod 指令权限值的格式
  • 用户表示符 +/- 权限字符:
    用户符号:
  • u:拥有者;
  • g:拥有者同组用户;
  • o:其它用户;
  • a:所有用户;

+/-的意义:

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

为了演示方便我提前吧权限全都置零了

  • 用户
    在这里插入图片描述
    在这里插入图片描述

  • 在这里插入图片描述

  • 其他用户在这里插入图片描述

  • 所有人在这里插入图片描述

  • 2.三位八进制数字
    文件的权限一共三种 – 读写执行,所以用三个二进制位就可以表示全部情况,如果用八进制则只需要一位:

rwx
111
有的地方就是1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2、chown 指令

修改文件的拥有者;

chown [参数] 用户名 文件名;

注意:当我们使用 chown 指令将属于我们的文件赋给别人时,需要获得别人的同意,所以在一般情况下我们是不能改变文件的拥有者的;只有 root 不受权限的约束,可以直接将属于 A 的文件赋给 B,而不需要征得 A 和 B 的同意;在这里插入图片描述
在这里插入图片描述

4. 3、chgrp 指令

修改文件或目录的所属组;

chgrp [参数] 用户组名 文件名;

注意:和修改文件的拥有者一样,我们也不能直接修改文件的所属组,需要征得别人的同意,而 root 不受权限约束;在这里插入图片描述

4.4、umask指令

inux下文件的默认权限如下 – 普通文件的默认权限是0666(读写),目录文件的默认权限是0777(读写执行),其中第一位数字代表这是三位八进制数,后面三位数字分别代表拥有者、所属组和其他人对文件的权限;但是我们发现,我们平时创建的文件的权限和上面的好像并不相同在这里插入图片描述

这是因为创建文件或目录的时候除了受默认权限的约束之外,还要受到 umask (文件掩码) 的影响;假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask;

权限掩码的作用是将在其中出现的权限 在起始权限中全部去掉,因为一个权限在 umask 中为1,那么其按位取反后再与默认权限按位与得到的结果一定为0;如果 umask 中为0,则其按位取反后与默认权限按位与后不影响默认权限的值;

查看或修改文件掩码;

umask 权限值;

注意:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限;超级用户默认掩码值为0022,普通用户默认为0002;在这里插入图片描述

修改文件掩码:可以看到,当我们把文件掩码设置为000后,此时创建出的文件的最终权限就等于文件的默认权限;在这里插入图片描述

4.5、file 指令

辨识文件类型;

1.-c 详细显示指令执行过程,便于排错或分析程序执行的情形;
2. -z 尝试去解读压缩文件的内容;

在这里插入图片描述

五、目录的权限

目录权限所代表的含义如下:

  • 可执行权限:能否进入目录 – 如果目录没有可执行权限, 则无法cd到目录中;
    在这里插入图片描述

  • 可读权限:能否查看目录中的文件内容 – 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容;
    在这里插入图片描述

  • 可写权限:能否在目录中创建与删除文件 – 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件;在这里插入图片描述

所以如果我们要进入一个目录,就必须有可执行权限;这也就是为什么普通文件的默认权限是666,而目录文件的默认权限是777的原因;

六、粘滞位

在一个Linux系统中通常有很多用户,那么有时就会有这样一种需求 – 不同的用户需要在一个公共的目录下进行临时文件的增删查改,这个公共目录通常由 root 用户创建,然后将目录权限修改为777;
在这里插入图片描述

但是这里出现了一个问题:由于这个公共目录的权限是777,所以任何一个用户都可以删除此目录下的文件,无论该文件是否属于自己;如下
在这里插入图片描述

可以看到,对于test 来说,ljm.txt 这个文件是不可读不可写且不可执行的,test也确实不能对它进行这些操作;但是 test 却能够直接删除 ljm.txt,因为 ljm.txt 处于 tmp 这个目录之下,而这个目录对于 tst 是可读可写可执行的;

为了出来上面这种不科学的情况,Linux 引入了粘滞位的概念;

粘滞位是权限的一种特殊情况,它不影响不同用户在公共目录下的读写执行操作,但是它可以禁止不同用户之间互删文件;粘滞位设置的方式很简单,只需要在目录已有权限基础上加上 t 即可,并且添加时不用指定用户,Linux 会自动识别;
在这里插入图片描述

注:当一个目录被设置为 “粘滞位” 以后,该目录下的文件只能由文件的所有者或者 root 删除,其余用户不能删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值