Bootstrap

【Linux】Linuxの权限与权限基本问题-[详解](3)

前言

  • 大家好吖,欢迎来到 YY 滴 Linux系列 ,热烈欢迎!
  • 本章主要内容面向接触过Linux的老铁,主要内容含:

欢迎订阅 YY 滴Linux专栏!更多干货持续更新!以下是传送门!

订阅专栏阅读:YY的《Linux》系列 ❀❀❀❀❀
【Linux系列-P1】 Linux环境的搭建
【Linux系列-P2】Linux的基本知识与指令
【Linux系列-P3】Linux的权限
【Linux系列-P4】Linux基本工具[yum][vim]

目录

一.Linux的用户&用户指令

1.用户

2.用户指令 

一.【su类】 

二.【 exit / ctrl d】

三.【sudo】 

二.权限

1.文件属性 

2.属性的基本要素 

3.文件权限值的表达方式 

4.权限相关指令 【文件访问权限的相关设置方法】 

a)chmod(设置文件的访问权限)

参数:【字符表示方法】

 参数:【2进制表示】

b)chown(修改文件的拥有者)

c)chgrp(修改文件或目录的所属组)

三. 起始权限问题

1.相关指令 umask

2.原理剖析 

四.粘滞位 【t 权限】

1.原理剖析 

一.Linux的用户&用户指令


1.用户

Linux下有两种用户:超级用户(root)、普通用户

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

2.用户指令 


一.【su类】 

命令:su + [用户名]

功能:切换用户。

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

注意区分: su  -    

  •    利用【su - 】切换成超级用户的原理是【重新登陆】,而【su】只是【单纯切换 

 图示: 


二.【 exit / ctrl d】

命令:exit / ctrl d

功能:返回超级用户root(从root,su到普通用户后)


三.【sudo】 

命令:sudo + 指令 

场景:【信任白名单中的普通用户】

功能:提高普通用户的权限,【再输入普通用户的密码后】完成一些普通用户完成不了的指令

注意要点:正常我们用 【adduser指令 创建的普通用户】是无法完成sudo提权的,因为如果普通用户只需要输入自己的密码就能拥有超级用户的权限去完成指令,十分不合理;只有添加到系统的信任白名单(/etc/sudoers)即配置文件中,才能成功执行;


二.权限


1.文件属性 

引入:在根目录下,输入 ll 时,会出现图示情况,这些代表什么?

回答,上图示中,出现的是文件的属性

属性的具体细分如下


2.属性的基本要素 

  a)三种基本身份

  • 文件和文件目录的所有者:u---User(拥有者)
  • 文件和文件目录的所有者所在的组的用户:g---Group(所属组)
  • 其它用户:o---Others(其他)

 b)文件类型

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

 c)三种基本权限

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

注意要点:

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

3.文件权限值的表达方式 

a)字符表示方法

b)2进制 / 8进制 表示 


4.权限相关指令 【文件访问权限的相关设置方法】 


a)chmod(设置文件的访问权限)

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

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

常用选项:

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

  • 参数:【字符表示方法

用户表示符+/-=权限字符:

  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限

用户表示符:  

  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户

例:

# chmod u+w /home/abc.txt
# chmod o-x /home/abc.txt 

  •  参数:【2进制表示

三位8进制数字:

  • 即用8进制方式,依次排布

图示:

例:

# chmod 664 /home/abc.txt
# chmod 640 /home/abc.txt

b)chown(修改文件的拥有者

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

常用选项:

  • -R 递归修改文件或目录的所属组

例:

# chown user1 f1
# chown -R user1 filegroup1

c)chgrp(修改文件或目录的所属组

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

常用选项:

  • -R 递归修改文件或目录的所属组

例:

#chgrp users /abc/f2
#chgrp -R users /abc/f2

三. 起始权限问题


1.相关指令 umask

a)umask

功能: 查看或修改文件权限掩码

格式:umask 权限值 说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户 默认掩码值为0022普通用户 默认为0002;(正常应该只有三位,分别代表rwx,这里是采用了将第一位的0当作用二进制表示的方式

常用选项:

  • 查看权限掩码:umask 
  • 设置权限掩码:umask 044 / 其他

2.原理剖析 

引入:新建文件夹默认权限=0666 新建目录默认权限=0777 但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。

原因:

  • 创建文件或目录的时候还要受到 umask 的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask;用直观感受理解就是——凡是在umask权限掩码中出现的权限(0022/0002),不会再在最终权限中出现;

YY的粗暴理解:

  • 在umask权限掩码二进制下,有一些位为1;则最终掩码二进制的位置不能再其位置上出现1,统统为0;其余照搬默认掩码;

图示:(普通用户,即umask权限掩码为0002的情况)

  • 新建文件夹的最终权限664

  •  新建目录的最终权限= 775


四.粘滞位 【t 权限】

引入:

  • 众所周知,普通用户的权限为700,即它在家目录下创建的文件,其他普通用户都无权查看;
  • 因此为了共享项目,我们有时不能把文件建立在家目录下;而是应该建立在一个共有的,系统默认自带的【共享目录tmp】 【目录文件】下
  • 重点:目录文件的w权限是支持修改和删除的!也就是任何一个普通用户都有权力删库跑路,这是非常不能接受的;

1.原理剖析 

于是乎,我们引进了【粘滞位】:

  • 给目录设置,(一般是共享目录);大家可以在共享目录下创建各自的文件,并进行自己的增删查改;只能允许文件各自的拥有者(普通用户)或者root(超级用户)有权力删除;【 t 】是一种特殊的 x 权限!

代码演示:

# chmod +t /home/ # 加上粘滞位

;