【Linux】权限理解


一、shell命令以及运行原理

  1. Linux定义
    广义定义:Linux= 操作系统(OS) + 外壳程序(shell)
    狭义定义:Linux=操作系统(OS)
    在这里插入图片描述

  2. 用户与OS与shell之间的关系

在这里插入图片描述
shell的作用:
    ① 传递请求指令,让OS执行
    ② 保护OS,拒绝非法请求
    ③ 创建子进程来进行执行具有风险的事情

  • 查看进程
ps axj | grep bash

二、权限

2.1 用户

  • 用户有两种
    ① 普通用户:拥有一般权限
    ② 超级管理员(root):拥有高权限
  • 注意:两者密码不要一样,若一样会导致权限界限不清楚的问题。

2.2 权限相关指令

2.2.1 su

  • 命令su [用户名]
  • 功能:切换用户
  • 用法
# 从普通用户切换root
su -

# 从普通用户切换root,但当前目录没有改变
su 

# 从root切换普通用户
su - XXX
  • 说明
        ① root–>普通用户,无需密码; 普通用户 --> root,需要输入root密码
        ② 使用一次su系统就会增加一次进程,为了避免进程浪费,若要返回上一用户最好使用热键ctrl+d 或 输入exit

2.2.2 sudo(需添加信任关系)

  • 命令sudo [执行命令]
  • 功能:临时权限提升,以root执行后续命令
  • 用法
#eg 在普通用户下,以root创建root.txt
sudo touch root.txt
输出:[sudo]password for xxx: # 此时输入当前用户的密码

2.3 深入权限

在这里插入图片描述

  • 权限的定义:一件事情是否允许被特定的人做
    [ 解释 ]:
    ① 权限= 人 + 事物属性
    ② 事物属性有:r(读)w (写)x(执行)
    ③ r :Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
        w :Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
        x :execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
  • 目录权限的再说明
    ① 若目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目录, 即使目录仍然有-r 读权限。
    ② 若目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

2.3.1 文件权限值的表示方法

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

② 8进制数值表示方法
在这里插入图片描述

2.3.2 文件访问者的分类(人)

  • Linux用户类别分为三种
    ① 拥有者 owner
    ② 所属组 group
    ③ 其他 other
  • 用户类别 PK 用户
    用户是特定的一个人
    用户类别是一种角色

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

在这里插入图片描述
在-rwxr-xr-x 中

  • 第一位-代表标识文件类型。在Linux中不以文件后缀作为区分文件类型的方式(建立在Linux之上的gcc等除外)
    文件类型有:
        ① -普通文件(文本,动静态库,源程序等)
        ② d目录文件
        ③ c字符设备文件(键盘与显示器)
        ④ b块设备文件(磁盘)
        ⑤ p管道文件 (通信)
        ⑥ l链接文件(软链接)
  • 后9个字符,三位三位分析
    在这里插入图片描述

2.4 文件访问权限的相关设置方法

2.4.1 修改文件的拥有者

  • 指令chown
  • 功能:修改文件的拥有者
  • 语法chown [参数] 用户名 文件名
  • 常用参数-R: 递归修改文件或目录的拥有者
  • 注意
    ① 普通用户修改拥有者,需要暂时提高权限
    ② root用户修改拥有者,可以直接改
# 当前是普通用户
chown root file.txt # × 
sudo chown root file.txt # √ 

# 当前是root用户
chown zyz file.txt # √

2.4.2 修改文件的所属组

  • 指令chgrp
  • 功能:修改文件或目录的所属组
  • 语法chgrp [参数] 用户组名 文件名
  • 常用参数-R: 递归修改文件或目录的所属组
  • 注意
    ① 普通用户修改所属组,需要暂时提高权限
    ② root用户修改所属组,可以直接改
    ③ 若文件本身是你的,但是修改了所属组,可以无需权限提升而找回
    在这里插入图片描述

【补充】

chown root:root file.txt # 一次改两个权限:拥有者+所属组

2.4.3 修改文件的权限

  • 指令chmod
  • 功能:设置文件的访问权限
  • 语法chmod [参数] 权限 文件名
  • 常用参数-R: 递归修改目录文件的权限
  • 注意
    ① 只有文件的拥有者和root才可以改变文件的权限
    ② root是不受权限的约束,权限只针对普通用户
  • 使用
    ① 用户表示符 + / - = 权限字符
        u:拥有者                                                     +:向权限范围增加权限代号所表示的权限
        g:拥有者同组用                                           -:向权限范围取消权限代号所表示的权限
        o:其它用户                                                  =:向权限范围赋予权限代号所表示的权限
        a:所有用户
    ② 三位8进制数字
# eg
chmod u-x file.txt               # 修改拥有者权限,拥有者失去x的功能
chmod u+rwx,g+rwx,o+rwx file.txt # 修改所有人权限,所有人都能rwx
chmod 666 file.txt               # 666转换为110 110 110 ,修改所有人权限为rw-

2.4.4 修改权限掩码

当我们创建文件/目录时,系统会给默认权限,我们可否修改默认权限呢?

  • 指令umask
  • 功能:查看或修改文件掩码 ;root下默认掩码为0022,普通用户的默认掩码为 0002
  • 掩码的说明:掩码第一位无需关注,后三位展开为(以022为例) :000 010 010
  • 权限的计算 d e f a u l t = d e f a u l t default=default default=default & ~ ( m a s k ) (mask) mask
    d e f a u l t default default:新建文件默认权限是666,新建目录默认权限是777
  • 自定义当前用户的默认权限
umask 0333 # 333 ① 展开: 011 011 011 ② 取反: 100 100 100
# ③ 计算
110 110 110
100 100 100 &
——————————————
100 100 100 ④ 合并: 4 4 4 ⑤ 解释: r-- r-- r--
  • 注意:自定义对其他用户无影响,且退出后重新登录失去作用。如需永久修改默认权限需要更改系统文件。

2.5 粘滞位

2.5.1 引入

在Linux中有一个/tmp目录,用来存放每个用户所产生的临时文件,每个用户都可以使用这个目录,所以这个目录的所有权限都是开放的,但是此时就出现了一个很严重的安全问题——既然每个人都可以访问你的临时文件那么随便一个人就可以删除你的数据。为了解决这个问题我们引入粘滞位。

2.5.2 认识

在这里插入图片描述

  • 作用:防止其他用户随意删除自己所建的文件

  • 粘滞位的设置

chmod +t 目录
  • 说明:当一个目录被设置粘滞位,那么该目录下的文件只能由:① root ② 该目录的所有者 ③ 该文件的所有者,进行删除
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

XiYang-DING

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

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

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

打赏作者

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

抵扣说明:

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

余额充值