【Linux】-- 权限和Shell运行原理

时间:2021-12-19 00:48:06

目录

Shell的运行原理

用户切换

su -  /  su

sudo

权限

chmod

 chown

chgrp

八进制方法修改文件属性 

目录权限

粘滞位

 umask

自定义默认权限


Shell的运行原理

广义上,Linux发行版 = Linux内核 + 外壳程序

Linux 从广义上来理解它是一个操作系统 而从狭义上来理解它则是一个核心 (kernel)

针对Linux这个核心 程序员或商业公司们制作出各种不同的发行版本 比如说 centos retcap ubuntu kail等等

所以说我们用户在操作的时候并不是直接操作Linux kernel 而是通过kernel的外壳程序来和kernel沟通

shell是什么?

shell的中文翻译是外壳 我们一般认为它是一个命令解释器 用来连接用户和 linux kernel

为什么要设置一个shell外壳而不让用户直接来和 linux kernel沟通呢?

用户不擅长直接和 Linux kernel进行沟通

shell作用:

  • 传递请求指令,让OS执行命令
  • 保护 Linux kernel

shell的原理是什么

shell的原理部分涉及进程相关知识   ps axj 显示进程

shell是对于所有外壳程序的统称 在centos中这个外壳程序是 bash 它是对于一个抽象概念的实例化

用户切换

 Linux中,默认有两类用户  root :超级管理员,具有非常高的权限  普通用户:具有一般权限,需要受权限约束的

su -  /  su

su - 切换到 root 用户   su:切换的时候路径不变

创建新的Bash

【Linux】-- 权限和Shell运行原理

root 可以 su - xxx  切换到任何用户(不建议)创建新Bash

quit / ctrl + d 可以从root 回退

sudo

临时权限提升,执行后续命令,以 root 身份执行

需要普通用户的密码,需要添加信任关系

权限

权限:一件事情是否允许被特定的人做

权限约束的是人,文件本身具有天然的权限属性:r + w + x

Linux中的用户类别:

  1. 拥有者 owner
  2. 所属组 group
  3. 其他 other

【Linux】-- 权限和Shell运行原理

拥有者 / 所属组 / other : 指的是一种角色身份

root / 普通用户:指的是具体的一个人

第一列 标识文件类型

  • - : 普通文件 【文本 各种动静态库 可执行程序 源程序】
  • d :目录文件
  • c :字符设备文件 【键盘 显示器】
  • b :块设备文件 【磁盘】
  • p :管道文件 【通信】
  • l :链接文件 【软链接】
  • s :套接口文件

【Linux】-- 权限和Shell运行原理

 【Linux】-- 权限和Shell运行原理

 Linux下一切皆文件

gcc系统上层的命令 要求c文件要以.c结尾

【Linux】-- 权限和Shell运行原理

是否具有读(r / -)  是否具有写(w / -) 是否具有可执行(x / -)

chmod

修改文件权限 (永久修改)

[wzy@VM-24-2-centos lesson2]$ chmod u+x file.txt

【Linux】-- 权限和Shell运行原理

用户类别 权限 文件
chmod u(拥有者) + -            r         w         x
g(所属组)
o(other)
a(all)

root几乎不受权限约束,root如果想修改执行文件,可以手动添加权限

【Linux】-- 权限和Shell运行原理

 chown

改文件拥有者

普通用户需要 sudo

root可以直接改

[wzy@VM-24-2-centos lesson2]$ sudo chown root file.txt

【Linux】-- 权限和Shell运行原理

__:__

可以改拥有者和所属组

[wzy@VM-24-2-centos lesson2]$ sudo chown root:root file.txt

【Linux】-- 权限和Shell运行原理

chgrp

改文件所属组

普通用户需要sudo 

文件属于拥有者 所以 拥有者可以直接取回来 不用sudo

[wzy@VM-24-2-centos lesson2]$ sudo chgrp root file.txt

【Linux】-- 权限和Shell运行原理

 【Linux】-- 权限和Shell运行原理

八进制方法修改文件属性 

权限位置是确定的而且是两态的 可以用二进制表示 三个二进制可以用八进制表示

【Linux】-- 权限和Shell运行原理

[wzy@VM-24-2-centos lesson2]$ chmod 777 file.txt

【Linux】-- 权限和Shell运行原理

目录权限

r代表读目录下的内容  w代表创建文件 x 进入目录

没有x权限 有r权限 可以看文件名

粘滞位

如果目录本身对other具有w权限

other可以创建文件,也可以删别人的文件

【Linux】-- 权限和Shell运行原理

【Linux】-- 权限和Shell运行原理

 需求:other可以在特定的目录下创建文件,并写入  但是不想让任何人删掉自己的文件

[wzy@VM-24-2-centos lesson2]$ sudo chmod o+t test

【Linux】-- 权限和Shell运行原理

 粘滞位 chmod o+t dir 只能对目录

对设置了粘滞位的目录,在该目录下,只能文件的拥有者(root,目录的所有者)可以删除,其他人不能删除

有时候,有很多人,或者系统会有很多的临时数据,所有的临时文件放在系统的 /tmp  需要所有的权限放开 但是只想文件的拥有者自己删除自己的文件

【Linux】-- 权限和Shell运行原理

 umask

权限掩码 凡是在umask中出现的 都应在起始权限中去掉

【Linux】-- 权限和Shell运行原理

八进制 002

为什么系统中的文件,创建出来的默认权限,是看到的样子

默认权限:

普通文件,起始权限 666

目录文件,起始权限 777

   110 110 110
&~ 000 000 010
----------------
   110 110 100

    6   6   4

自定义默认权限

本次登陆有效

【Linux】-- 权限和Shell运行原理