Linux权限理解(内含粘滞位)

作者主页: 翻转的乌龟

专栏链接: Linux

目录

  • 前言
  • 一、shell命令及其运行原理
  • 二、权限管理
    • 01.用户的分类
    • 02.文件类型和访问权限(事物属性)
    • 03.权限的表示方法
    • 04.文件权限的相关设置方法
    • (1)chmod(设置访问权限)
    • (2) chown(修改文件拥有者)
    • (3)chgrp(修改所属组)
    • (4)file(辨识文件类型)
  • 三、默认权限与权限掩码(umask)
  • 四、目录权限(粘滞位)
  • 总结

前言

一、shell命令及其运行原理

shell 是包裹在 Linux 内核 kernel 之外的外壳层,因为我们不能直接对操作系统进行操作,故而出现shell外壳帮助我们操作Linux内核。

Linux权限理解(内含粘滞位)_第1张图片

他们之间的关系就像翻译一样,不会英语的我听不懂英文,英国人也听不懂我说话,所以shell就像一个翻译一样,给我们翻译我们两人都说了什么,方便我们理解。

shell外壳的作用

  1. 对用户的指令进行解析,将解析的命令传给Linux操作系统,然后将运行的结果返回给用户。
  2. 是对Linux内核的一种保护。
  3. 执行命令时,创建子进程来进行执行

shell是对linux操作系统内核的外部程序的总称,而就像bash这种是Centos下的一种外壳程序。
就像职业与个人一样,老师是职业统称,但李老师就是XX中学下的数学教师。

二、权限管理

什么是权限?

权限=人+事物属性
权限是用来限制用户的某些行为,当然如果事物本来没有这个属性,自然也就没有这个权限
例子:
腾讯视频的VIP和普通用户,vip权限更大,当然你不能在腾讯视频上面写代码,因为它没有写代码的属性。

01.用户的分类

Linux中用户分为两类:

  1. root(超级管理员),几乎可以干任何事情;
  2. 普通用户,权限受到限制;
  3. 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

命令: su [用户名]
功能:切换用户。
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。

Linux权限理解(内含粘滞位)_第2张图片

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

  1. 文件和文件目录的所有者: u User(中国平民 法律问题)
  2. 所有者所属组: g Group(XX省XX市XX区)
  3. 其他用户: o o—Others (外国人)

ls-l可以查看文件的权限

Linux权限理解(内含粘滞位)_第3张图片
权限的前三位:文件的所有者权限
权限的中间三位:文件所属用户组的权限
权限的最后三位:其他用户的权限

文件类型 >:

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

基本权限 >:

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

03.权限的表示方法

r/w/x 这三种字符来表示权限的方法是文件权限值的 字符表示方法 ,通常我们通过命令获取到的文件的属性中的权限即是采用这种方法表示出来的,也可以用二进制、八进制表示。下面附有八进制表示。

字符表示方法:

Linux表示 说明
r – – 只读 (4)
– w – 仅可写 (2)
– – x 仅可执行 (1)
r w – 可读可写 (6)
– w x 可写可执行 (3)
r – x 可读可执行 (5)
r w x 可读可写可执行 (7)
– – – 无权限 (0)

Linux权限理解(内含粘滞位)_第4张图片

04.文件权限的相关设置方法

在Linux中,我们可以通过相关的命令来设置文件的访问权限,但需要说明的是:只有文件的所有者和root才能修改文件的权限。

(1)chmod(设置访问权限)

功能: 设置文件的访问权限
格式: chmod [参数选项] 权限 文件名
常用选项: R -> 递归修改目录文件的权限
chmod命令权限值的格式: (其中权限代号可用字符表示法或者八进制表示法)

  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限
    用户符号 : u(拥有者)、g(拥有者所属组)、o(其他用户)、a(所有用户)

Linux权限理解(内含粘滞位)_第5张图片

Linux权限理解(内含粘滞位)_第6张图片

(2) chown(修改文件拥有者)

功能: 修改文件的拥有者
格式: chown [参数] 用户名 文件名

注意:要执行chown命令需要有root超级用户的权限,普通用户用sudo,
格式为:sudo chown [参数] 用户名 文件名 ,

Linux权限理解(内含粘滞位)_第7张图片

(3)chgrp(修改所属组)

功能: 修改文件或目录所属组
格式: chgrp [参数] 用户组名 文件名
常用选项: R -> 递归修改文件或目录的所属组
注意:root用户才有权限修改文件或者目录所属组

Linux权限理解(内含粘滞位)_第8张图片

(4)file(辨识文件类型)

功能: 辨识文件类型
格式: file [选项] 文件或目录
常用选项:

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

Linux权限理解(内含粘滞位)_第9张图片

三、默认权限与权限掩码(umask)

文件的默认权限是0664
目录的默认权限是0775
权限掩码默认为0002

Linux权限理解(内含粘滞位)_第10张图片

默认权限是这样,但是实际上我们见到的都是最终权限
==最终权限= 起始权限&(~umask码)==这就是为什么是664 775的原因

umask

功能: 查看或修改文件掩码
格式: umask 权限值
说明:新建文件的起始权限为:0666;新建目录的起始权限为:0777,但实际上当我们查看我们创建的目录和文件的属性时,看到的权限往往不是上述的值。原因就在于创建文件和目录时还要受到umask 的影响。假设起始权限是 mask ,则实际创建出来的文件的权限是:mask & (~umask)。将文件现有的存取权限减去权限掩码后,即可产生建立文件时的预设权限。超级用户默认掩码值为:0022;普通用户默认掩码值为:0002。

Linux权限理解(内含粘滞位)_第11张图片

四、目录权限(粘滞位)

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

Linux权限理解(内含粘滞位)_第12张图片

粘滞位诞生背景

工作中通常会有共享目录,方便大家把代码放入其中进行信息交互,由于共享目录都有所有权限会导致别人进入你的目录中删除你的代码,这是我们不愿意看到的,但是共享目录又必须有w权限去让别人创建文件,能创建就能删除,很难搞,所以粘滞位诞生了,让其他人不能随便删除你的文件。

通过命令 chmod (用户符号)+t 目录 即称为为目录设置粘滞位。粘滞位是针对目录而言的概念,通常需要为共享目录设置粘滞位。通过为目录设置粘滞位,可以在保证目录共享的同时防止其他用户删除共享目录中非所有者的文件。
当一个目录被设置粘滞位后,则该目录下的文件只能由:

  • 超级管理员(root)删除
  • 该目录的所有者删除
  • 该文件的所有者删除

Linux权限理解(内含粘滞位)_第13张图片

Linux权限理解(内含粘滞位)_第14张图片

总结

  1. 目录的可执行权限表示的是用户可否在目录下执行命令。
  2. 如果用户没有对目录的 x (可执行)权限,则无法对目录执行任何命令,甚至无法通过 cd 命令进入目录,即使用户对目录仍然有 r (可读)权限。
  3. 如果用户对目录具有 x (可执行)权限,则用户可以执行命令,通过 cd 进入目录,但由于没有对目录的可读(r)权限,所以在目录下,即使可以执行 ls 命令,但仍然没有权限读出目录下的文件。

如果感觉写的不错的话,麻烦来个三连支持一下,让我们下次见!!

你可能感兴趣的:(Linux,linux,运维,服务器)