【Linux】1.4 基本权限


一、shell 命令以及运行原理

Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。 而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?

从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:

  • 将使用者的命令翻译给核心(kernel)处理。
  • 同时,将核心的处理结果翻译给使用者。

对比windows GUI,我们操作windows不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符,或者运行起来一个应用程序)。

shell对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运 行出结果,通过shell解析给用户。

在这里插入图片描述
注:shell 和 bash 就像是水果和苹果之间的关系,bash 是 shell 的其中一个。


二、Linux 权限的概念

权限:角色 + 事物属性(这里的事物主要是指文件)


三、Linux 权限管理

01.文件类型和访问权限(事物属性)

在这里插入图片描述

  • 文件类型:
    Linux下不用文件后缀区分文件类型
    • d:文件夹
    • -:普通文件
    • l:软链接(类似Windows的快捷方式)
    • b:块设备文件(例如硬盘、光驱等)
    • p:管道文件
    • c:字符设备文件(例如屏幕等串口设备)
    • s:套接口文件

文件后缀名的意义:给用户自己看;用于其他软件识别文件类型
例如:gcc(如下)

用 gcc 编译文件:
[root@VM-12-2-centos dir3]# gcc test2.c
[root@VM-12-2-centos dir3]# tree
.
|-- a.out
|-- dir
|-- hi
|-- test2.c
`-- test.txt
1 directory, 4 files
[root@VM-12-2-centos dir3]# ./a.out

改变文件名的后缀:
Hello World![root@VM-12-2-centos dir3]# mv test2.c test2.txt
[root@VM-12-2-centos dir3]# gcc test2.txt
test2.txt: file not recognized: File format not recognized
collect2: error: ld returned 1 exit status
👆 gcc 无法编译
  • 文件权限:
    三三为一组,分别对应—— 读、写、执行 ——rwx (顺序不可变!)
    一共三组,每组分别对应——文件拥有者、文件所属组、其他(other)

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

02.文件访问的分类(角色)

①用户分类

  • 超级用户 root ——基本不受权限约束
  • 普通用户

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

  • su - :以 root 用户重新登录,默认在用户的家目录下

  • su [username]:切换到其他用户(但要在 root 用户的情况下才可以随意切换),没指明切换到哪个用户(没写 [username])默认是切换到 root 用户,然后提示需要输入对应切换到的用户的密码

  • sudo [command]:对单条指令提权(即 以 root 的身份执行该条命令),需要输入自己的密码,认证成功后具有一定时效性,即在一段时间内对单条指令提权无需再输入密码。

  • 如果只要知道自己的用户密码就可以以 root 身份实行指令,那么所谓 权限 岂不是形同虚设?👉不是所有的用户都可以使用 sudo !只有在 “信任名单” 内的用户才被允许!

  • ctrl + d :退出

②角色划分

  • 三种角色:
    1.文件拥有者;
    2.文件所属组;(类似开放朋友圈指定好友可见的“指定好友”)
    3.其他(other).

03.文件权限值的表现方法

  • 字符表示法
Linux表示说明
r- -只读
-w-仅可写
- -x仅可执行
rw-可读可写
-wx可写和可执行
…………
rwx可读可写可执行
- - -无权限
  • 8进制表示方法(0~7)
权限符号 (读写执行)八进制二进制
r- -4100
-w-2010
- -x1001
rw-6110
………………
rwx7111
- - -0000

04.文件访问权限的相关设置方法(如何更改文件权限)

(a.)chmod 指令(更改事物属性)

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

① 方式一:用户表示符+/-=权限字符
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户

示例:

eg. chmod u+r [文件]:给该文件 拥有者 增加 读 权限
eg. chmod g+w [文件]:给该文件 所属组 增加 写 权限
eg. chmod o-rwx [文件]:给 其他人 减去 读写执行 权限
eg. chmod u+r,g+w,o-rwx [文件] :组合式写法
eg. chmod a-w [文件] :a → all 所有人

注意:用户权限匹配只有一次!当你被确认为拥有者就不会再被匹配为所属组(即使你既是文件拥有者又属于文件所属组)

② 方式二:三位8进制数字

  • 有权限:1
  • 无权限:0

如下图 rwxr-xr-x 换算成二进制 111 101 101 换算成八进制就是:7 5 5
在这里插入图片描述
如下指令:

chmod 777 [文件] 

777 → 111 111 111 → rwx rwx rwx 即设定 文件所有者、文件所属组、其他 的权限均为:可读可写可执行

(b.)chown 指令(更改角色)

  • 功能: 修改文件的拥有者
  • 格式: chown [参数] 用户名 文件名 注意:将文件拥有者由 A 用户修改为 B 用户,需要的到B用户的权限允许。但是 root 用户不受权限影响,可以直接修改。

(c.)chgrp

  • 功能: 修改文件或目录的所属组
  • 格式: chgrp [参数] 用户组名 文件名(注意:同 chown 一样需要权限)
  • 常用选项: -R 递归修改文件或目录的所属组

同时更改文件 拥有者 和 所属组 :
chown 用户名:用户组名 文件名


补充:file 指令

  • 功能说明: 辨识文件类型。
  • 语法: file [选项] 文件或目录...
  • 常用选项:
    • -c 详细显示指令执行过程,便于排错或分析程序执行的情形。
    • -z 尝试去解读压缩文件的内容。

四、目录的权限

  • 进入目录 需要什么权限? → answer:x
    在这里插入图片描述
  • 默认权限(不同的操作系统,默认权限可能不一样)
文件类型默认权限
普通文件664
目录775
权限类型含义
默认权限你看到的
起始权限系统设定的
最终权限最终设定的权限
  • 起始权限
文件类型起始权限
普通文件666
目录777

umask:起始权限 → 最终权限?(how?)

  • umask是什么? → 0022(如下) → 权限掩码
    在这里插入图片描述

超级用户默认掩码值为0022,普通用户默认为0002。

0 0 0 2(8进制)→ 转化为二进制 → 000 000 000 010

  • 普通文件 的 起始权限:666
    6 6 6 → 转化为二进制 → 110 110 110
    0 0 2 → 转为为二进制 → 000 000 010

权限掩码:在起始权限中,去掉在umask中出现的权限,不影响其他任何权限
在这里插入图片描述

  • 运算过程:最终权限 = 起始权限 & (~umask)

关于 umask 指令:

# umask //查看
# umask 0044//设置  → 更改 umask 的值

五、粘滞位

目录文件的 w 权限决定了是否能在该目录下 创建或删除 文件

一般情况下,一个普通用户是不能进入其他用户的目录的。因为每位用户的家目录默认权限为:rwx- - - - - -,特殊情况:共享目录。

背景:共享目录 开放于 所有普通用户,用于保存产生的临时文件(家目录一般只对使用者自己开放,一般由 root 提供),虽然受到权限的约束,由于 共享目录的 开放性 导致别的用户可以 删除 我的文件。

  • 为什么 别人可以删除我的文件?

    • 能访问目录就具有 w 权限,w 权限能创建文件,亦能删除文件(必须有 w 权限,不然这个共享目录就没法用)
  • 如何解决 这个“其他用户可能删除共享目录下我的文件”的问题?

    • 粘滞位
  • 操作:(sudo) chmod +t [dir] # 加上粘滞位
    在这里插入图片描述

在这里插入图片描述

  • 设置粘滞位之后谁还能删除?
  1. root
  2. 文件拥有者
  3. 文件所属组

注意:只能给目录设置粘滞位。


六、关于权限的总结

  • 目录的可执行权限是表示你可否在目录下执行命令。
  • 如果目录没有 -x 权限,则无法对目录执行任何命令,甚至无法cd 进入目录, 即使目录仍然有 -r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
  • 而如果目录具有 -x 权限,但没有 -r 权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

END

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

畋坪

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

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

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

打赏作者

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

抵扣说明:

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

余额充值