Linux权限(Linux用户,Liunx文件相关权限,Linux目录相关权限)

Linux权限管理

Linux用户

Linux操作系统下一般分为两类用户。

第一类是 root–超级管理员

第二类是 非root–普通用户

如何在root下创建普通用户

首先使用下面命令创建出用户

adduser 用户名

在使用下面命令给这个用户设置密码

passwd 用户名

在这里插入图片描述

但是在不同的环境下可能存在差异,上图是在Ubuntu下创建新用户,不需要输入passwd指令,直接就可以创建并输入密码。

在这里插入图片描述

如何在root下删除用户

使用下面命令将用户删除

userdel -r 用户名

普通用户如何切换为超级用户

su -

本质是以root身份重新登陆一次

或者使用

su

本质是用户身份切换成为root

然后输入超级用户的密码就可以转换成超级用户。

在这里插入图片描述

超级用户如何切换为普通用户

原本登录时是普通用户

exit或者ctrl + d

原本登录时是超级用户

su 用户名

普通用户切换为另一个普通用户

su 用户名

需要输入另一个普通用户的密码

以root身份执行一条指令

sudo 指令
输入登录用户密码

如果我们输入sudo就可以以root的身份执行指定的命令,那么root的密码不就毫无意义了?

实际情况是一般root是不会让新建普通用户以root身份执行命令,在linux下有一个配置文件为 /etc/sudoers。这个配置文件类似于一张名单。一个用户用户名在该配置文件中,才允许这个用户执行sudo,一个用户用户名不在该配置文件中,不允许这个用户执行。

root和普通用户的区别

  1. 权限级别: root用户是Linux系统中的超级用户,拥有对系统的完全控制权限,可以执行任何操作,包括读取、写入和执行系统中的任何文件和目录。而普通用户则只能访问和操作其拥有权限的目录和文件,其权限受到严格的限制。
  2. 系统运维工作: root用户主要用于进行系统关键运维工作,如安装、升级软件、系统配置、管理用户和组、设置文件权限、管理进程等。这些操作通常需要较高的权限,因此只能由root用户执行。而普通用户则只能执行一些基本的操作,如文件编辑、软件使用等。
  3. sudo命令: 为了降低直接使用root用户的风险,Linux系统提供了sudo命令。sudo命令允许普通用户以管理员的身份运行指定命令,而无需知道root用户的密码。这使得普通用户可以在需要时执行一些需要较高权限的操作,同时降低了系统被入侵的风险。

结论

  • 普通用户切换成root,需要输入root的密码
  • root账号变成普通,不用认证

在讲解linux文件权限时,我们要先了解下面内容

权限永远决定的是让不让你干这件事情,权限一定是限制人的。对应的操作对象,一定要有对应的满足人的需求的属性!!!

所以要了解权限必须要知道

  • Linux群体(人)
  • Linux操作对象的属性 — 文件权限属性

文件访问者的分类

  • 文件和文件目录的所有者:u— User
  • 文件和文件目录的所有者所在的组的用户:g—Group
  • 其它用户:o—Others
  1. 所有者(Owner)

    • 每个文件和目录在Linux系统中都有一个所有者,通常是创建该文件或目录的用户。

    • 所有者具有对该文件或目录的特定权限,例如读取(r)、写入(w)和执行(x)。

  2. 所属组(Group)

    • 除了所有者之外,每个文件和目录还属于一个特定的用户组。这个组可以包含多个用户。
    • 组成员具有对该文件或目录的特定权限,这些权限可能与所有者的权限不同。
  3. 其他用户(Others)

    • 除了所有者和所属组的成员之外,系统中的其他所有用户都被视为“其他用户”。
    • 这些用户具有对该文件或目录的特定权限,这些权限通常是最受限制的。

    我们都知道创建这个文件的人是所有者,所有者和所有组以外的是其他用户,这是一件很合理的事情,但是为什么会存在一个所属组?

    假设一个公司只有两个研发小组(A,B),在同一个linux服务器上开发,公司让两个团队做一个事情,假设同时开发一个项目,最终竞选出一个比较优秀的作为最终的产品(赛马机制)

    当A组的一个成员写了一个代码,假如没有所属组的话,领导想要看这个代码,那么就要个other添加可读的权限,但是B组的成员对于这个文件也是other也能看见,那么这时候就需要所属组,将A组所有成员设置为一个组,如果领导想看就把领导拉入到所属组中,对于other权限不变为不可读。

    更改文件拥有者

    在root下

    chown 用户名 文件名
    

    在普通用户下

    但是把一个文件的拥有者进行更改是要争的别人的同意,那么我们只能通过指令提权来实现

    sudo chown 用户名 文件名
    

    更改文件所属组

    在root下

    chgrp 所属组 文件名
    

    在普通用户下

    但是把一个文件的拥有者进行更改是要争的别人的同意,那么我们只能通过指令提权来实现

    sudo chgrp 所属组 文件名
    

文件类型和访问权限

文件的属性

在这里插入图片描述

文件的类型

文件的类型帮助我们了解我们这个文件将来属于哪一个类别,可以被用哪些软件操作

在windows下,文件类型通过后缀标识。

Linux系统的文件类型不通过后缀区分,但不代表工具不考虑后缀,例如gcc编译器。

对于文件后缀的态度,虽然Linux不通过它识别文件类型,但依旧推荐使用后缀。

Linux下的文件类型

-:普通文件,文本,源代码,图片,视频,库,可执行文件等等。

d:目录文件

b:block,设备文件一般支持随机访问(磁盘)

c:char,字符设备文件,不支持随机访问(键盘显示器)

l:链接文件

p:管道文件

s:socket文件

查询文件类型指令

file 文件名 //查询文件类型

文件的访问权限

r:读权限

w:写权限

x:执行权限

一个文件的前10个字符首先第一个字符代表是文件的类型,后9个字符是三三一组分为3组,每组代表的是文件对这一类访问者的权限。

在这里插入图片描述

以所有者权限为例第一个位置就是读权限有读权限就是rwx,无读权限就是_-wx。第二个位置就是写权限,有就是rwx,无就是r-x。第三个位置就是执行权限,有就是rwx,无就是rw-。

所以-表示没有对应的权限。

修改权限

我们把 拥有者user简称u,所属组group简称g,其它用户other简称o。想要修改权限要使用下面命令。想要修改文件权限,一般来说这个文件的所有者一般要是你。

chmod u/g/o+或者-r/w/x 文件名

例如删除一个file.txt文件拥有者的写权限

chmod u-w file.txt

在这里插入图片描述

也可以对所有类型的访问者添加或删除权限

chmod a+或者-r/w/x 文件名

例如删除file.txt文件的u/g/o的所有权限

chmod a-rwx file.txt

在这里插入图片描述

因为三位一组我们也可以用二进制来理解,我们用0表示无该权限1表示有该权限,那么三位表示成一个角色所对应的权限,那么转换成八进制就是0 - 7。

下面我们举例说明

权限符号八进制二进制
r–4100
-w-2010
–x1001
rw-6110
r-x5101
-wx3011
rwx7111
0000

验证有无权限的对比表现

无读权限

文件内容无法被读取

在这里插入图片描述

无写权限

无法向文件内写入内容
在这里插入图片描述

Linux文件可执行,必须具有可执行权限x,你必须真的是一个可执行程序。

权限在root下形同虚设!!!

目录的权限

读取(r)

  • 允许目录的权限所有者查看目录中的文件列表。

删除读权限后

在这里插入图片描述

写入(w)

  • 允许在目录中创建新的文件或子目录。
  • 允许删除目录中的文件或子目录(只要用户有足够的权限来删除特定的文件或子目录)。
  • 允许重命名或移动目录中的文件或子目录(只要用户有足够的权限来重命名或移动特定的文件或子目录)。
  • 允许对目录本身进行写操作,例如通过chmodchown更改权限或所有权。

执行(x)

  • 允许用户进入目录,即“cd”到该目录。

删除可执行权限后

在这里插入图片描述

总结

  • x决定是否可以进入目录
  • r决定是否可以进行对文件属性信息进行查看的权利
  • x决定是否可以在目录下进行新建删除文件

权限掩码

对于目录来说,目录一般都需可执行,所以起始权限为777。

对于文件来说,能够执行的文件不占大多数,所以起始权限为666。

但是我们发现我们创建的普通文件默认的权限不是666,而是664,创建的目录文件不是777,而是775。

在这里插入图片描述

在Linux中,权限掩码(umask)是一个用来控制新创建文件和目录的默认权限的八进制数。当用户在Linux系统中创建新的文件或目录时,系统会使用umask值来确定新文件或目录的初始权限。

查看权限掩码(umask)

umask

只看查询到的后三位002,002对应的是三个八进制数字,转换成二进制数为 000 000 010。

在这里插入图片描述

umask工作原理

从起始权限中去掉在umask中出现的权限,这里所谓的去掉并不是简单的减去分为3种情况。

初始权限umask最终权限
110
101
010

我们以初始权限666,umask002为例子。

  110 110 110
- 000 000 010
——————————————
  110 110 100  = 664

更改权限掩码

umask 0-7/0-7/0-7

粘滞位

inux下的粘滞位(Sticky Bit),其最常见的用法是在目录上设置。一旦设置了粘滞位,只有目录内文件的所有者或者root用户才可以删除或移动该文件。如果不为目录设置粘滞位,任何具有该目录写和执行权限的用户都可以删除和移动其中的文件。

粘滞位的作用主要是保护目录下的文件免受非目录所有者的删除、移动或重命名等操作影响。在实际应用中,粘滞位通常用于/tmp目录,以防止普通用户删除或移动其他用户的文件。这是因为/tmp目录往往是用于让所有用户共享的临时存储空间,通过设置粘滞位,可以保证临时文件在不同用户之间不会被误删除或篡改。

例子

假如小A创建了一个文件夹,但是root在小A的文件夹中创建了文件,并且设置了对other属性是不可读不可写的,那么小A看到root在自己创建的文件夹中存放了文件,小A就直接把root的文件删除了。

结论

一个文件能否被删除,并不取决于文件本身,而取决于文件所处的目录,拥有者是否具有w权限!!!

如果我们需要在一个特定的目录下实现文件的共享呢,这时系统会为我们在根目录下创建一个tmp目录。

tmp目录被所有用户所共享,可以把自己的临时文件建立到这个目录下面。

在这里插入图片描述

我们在一个用户在里面创建文件,另一个用户可以根据这个文件的other的权限,来读写执行。但是我们发现我们无法删除被人的文件了。

在这里插入图片描述

是因为我们给other新增加了一个权限t,其实t是在x的基础之上创建的权限。我们称之为粘滞位

粘滞位是给目录中的other设置的一个权限位,具有x的意义,同时也进一步对目录的权限进行特殊限定,该目录里面的文件,只有root或者文件的拥有和有权利进行删除。其他人一律不允许。

本专栏为“小菜”linux学习之路
该文章仅供学习参考,如有问题,欢迎在评论区指出。

  • 19
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值