linux权限理解

前言

Linux系统中往往是多用户进行开发工作如何对多个用户进行管理呢?因此便有了今天的文章,此文章将对文件权限和用户权限进行部分讲解.

下面进入正题:

Linux下用户分为两种—普通用户和超级用户(root)

  • 普通用户会受到权限限制.
  • 超级用户不会受到任何权限的限制,可以做任何事
  • 超级用户的命令提示符时 ‘#’ 普通用户的命令提示符是‘$’

可以使用su命令来切换用户

如要root切换到user就使用su user.

普通用户切换为root就可以su root(root可省略)但是要输入对应的口令.再输入口令时Linux是不显示的.

Linux权限管理

Linux对文件的使用者进行了分类,共分为了三类

  • 文件和文件目录的所有者: u —user
  • 文件和文件目录的所有者所在的组的用户: g—group
  • 其他用户: o—others(只要不是上面用户的都是其他用户)

文件类型及访问权限介绍

image-20220706213553603

我们来看看上面内容的性质.(我通过画图软件把部分内容放大方便理解)

image-20220707154815168

文件类型

第一个 -就是我们的文件类型 -表示普通文件

文件类型共有以下几种

d: 文件夹

-: 普通文件

l: 软连接(类似windows的快捷方式)

b: 快设备文件(如硬盘等)

p: 管道文件

c: 字符设备文件(屏幕等串口设备)

s: 套接口文件

其中文件夹和普通文件是我们所常用的.(注:再Linux下一切皆文件,文件夹也是一种形式的文件.)

权限

我们权限的共有r w x(r w x顺序是不变的)三个如果没有那部分权限就会用-来代替对应部分.

  • r: Read对文件来说就是读取文件内容的权限 ;对目录来说,具有浏览该目录信息的权限.
  • w: Write对文件来说就是写入修改文件的权限; 对目录来说就是删除移动目录文件内文件的权限.
  • x : execute对文件而言,具有执行文件的权限; 对目录而说,具有进入目录的权限.
  • -: 表示不具有特定位置的权限

注意上面的文件和目录是我们理解的文件和目录,对于Linux来说都是文件.毕竟在Linux上是一切皆文件

当然有些文件虽然有着执行的权限但是没有执行功能也是正常的.

文件访问权限的设置

chmod

功能: 设置文件(包括目录)的访问权限

格式: chmod [参数] 权限 文件名

常用选择:

  • R 递归修改目录的文件权限

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

我们对使用格式在细致一些讨论一下

首先: 参数是可以省略的.

而权限的格式是——用户标识符 +/-/= 权限字符

有点难理解哈,看一下实例应该就可以理解一些了.

image-20220707174533550

上面的是省略了参数然后权限部分中: u是用户表示符-是减号x是权限字符,这个例子就是表示u这个用户对test.cpp文件的x权限被删去了(u-x都会在下面进行讲解)

用户符号

  • u: 拥有者

  • g: 拥有者同组

  • o: 其他用户

  • +: 对权限范围增加权限代号所表示的权限

  • -: 对权限范围减去权限代号所表示的权限

  • =: 对权限范围赋予权限代号所表示的权限

r w x都是权限字符在[权限](# 权限)进行了讲解这里就不赘述了.

更多的实例演示

image-20220707175351784

通过:

image-20220707175526354

变成:

image-20220707175447825

同理:

image-20220707175633311

chmod的八进制方式修改

用于一下子修改三个用户的权限.

因为我们在修改的时候rwx的位置是不变的所以我们也可以用二进制的方式表示rwx的位置是否存在.

比如: r - x 就可以表示成 1 0 1

及存在的部分可以使用1表示其位置存在不存在的权限部分可以使用0表示其不存在.

所以我们把二进制用8进制来表示这些二进制.

如八进制的7二进制就是111也就是rwx都有了的情况.

同理八进制0123456也是会被转换成二进制然后使用.

实例:

image-20220707182208502

image-20220707182306918

权限掩码

通过命令umask调用出来

image-20220707213718562

这个权限掩码是啥东西有啥用呢?

上面我们用八进制方式修改用八进制表示权限的还记的吧,这个权限掩码也是用八进制来进行权限的掩盖的.

我们只关注后三位的权限掩码第一位不关注

及0022.

所以他到底有啥用呢?

我们来创建几个新文件让大家看看就知道了.

image-20220707214327663

可以看见我创建了4个文件他们的权限都是一样的.

转换成八进制就是: 644

而目录呢?

我们同样创建4个目录看看

image-20220707214743836

ok(从创建时间可以看出我写文章写着写着跑去摸了一段时间的鱼🤣🤣)

我们可以看出他们的权限也是相同,转换成8进制就是755

其实这里我们的权限掩码就发挥了作用了.

正常我们生成的文件和目录的权限都不是644 或者755 的.

而是普通文件是 666 而目录的权限是777

我们来改变一下权限的掩码就可以看到了.

通过 umask 000 来将umask的值变成000

这时我们再创建文件或目录时就可以看到他们本来的权限默认值了.

image-20220707220911171

image-20220707221004827

其实权限掩码的作用就是: 凡是在权限掩码中出现的权限都不应该在最终权限中出现

当然这个可不是减.

而是掩盖.

比如我们设置umask的值为111时.

普通文件还是666 而目录文件也将是666

如下图

image-20220707222402578

这样就证明了他不是通过减法来进行除去的.

而是通过掩盖,及在umask位置上有1时如果默认权限对应位置有1则去掉如果没有就无视.

这也就是权限掩码的作用了.

目录权限的介绍

  • 可执行权限: 如果目录没有可执行权限,则无法cd到目录中
  • 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
  • 可写权限: 如果目录没有可写权限,则无法在目录中创建文件, 也无法在目录中删除文件.

chgrp/chown

chown

功能: 修改文件的拥有者

格式: chown [参数] 用户名 文件名

实例: chown (参数被省略了) user1(用户名) f1(文件名)

chgrp

功能: 修改文件或目录的所属组

格式: chgrp [参数] 用户组名 文件名

常用选择: -R 递归修改文件或目录的所在属组

粘滞位

我们Linux系统在root部分里开辟的有一个可以让公共共同使用的一个空间tmp

image-20220708110226316

我们系统中的所有用户都可以,通过other的身份访问这个文件夹.

image-20220708110402294

因为我们在这个公共文件夹的身份相同,所以我们可以任意的删除对方文件.

如下是案例

image-20220708111808291

我们ssw用户在看到test用户创建的文件时一生气想把test1给删除了.

于是

image-20220708113147650

就出现了权限不够的情况,为什么呢?

因为我们/tmp文件夹是有着粘滞位的

image-20220708113315307

可以看到原本是x的位置变成了t,这个就是粘滞位.

有了粘滞位的文件夹就可以做到只有拥有者本人和root用户可以删除文件夹里的内容.其他人都不可以.

如何给文件夹加上粘滞位呢?

如下:

image-20220708113826821

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

就一个挺垃圾的跑路人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值