shell命令以及运行原理

目录

一、命令解释器

1、什么是命令行解释器

shell和bash联系

2、为什么用命令行解释器

作用

存在意义

二、Linux权限

1、用户分类

2、Linux权限管理

1)权限身份

2)文件类型和访问权限

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

[a. chmod](#a. chmod)

[格式一:用户表示符 +/-/= 权限字符](#格式一:用户表示符 +/-/= 权限字符)

格式二:三位8进制数字

[b. chown](#b. chown)

[c. chgrp](#c. chgrp)

[d. umask(权限掩码)](#d. umask(权限掩码))

3、共享目录

1)问题引入

[2) 粘滞位](#2) 粘滞位)

3)tmp文件

一、命令解释器

1、什么是命令行解释器

python 复制代码
[xiaoming@moonshot ~]$ xxx
------------------------------------------------------------------
          |
          v
       bash命令行
  • xiaoming:用户名
  • moonshot:主机名
  • ~:当前目录
  • $:命令行提示符
  • xxx:输入指令过程(本质输入字符串)

指令的本质就是编译好的程序和脚本,存放在系统特定路径下(Linux中存放在/usr/bin/下)

所有的指令最终都要在OS内部运行,但OS使用难度比较高,因此用户不能直接和OS打交道,故用户命令行解释器。

命令行解释器:1)在Windows中称为GUI 2)在Linux中称命令行,bash/sh,shell

shell和bash联系

shell是命令行解释器的总称,bash,sh是不同种类的解释器,上边bash命令行即为bash的样子。

2、为什么用命令行解释器

作用

对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。

存在意义

  1. 进行命令行解析
  2. 保护OS,对于用户非法请求直接拦截

二、Linux权限

1、用户分类

超级用户:可以再linux系统下做任何事情,不受权限限制

普通用户:在linux下做有限的事情。

超级用户的命令提示符是"#",普通用户的命令提示符是"$"

命令:su [用户名]

功能:切换用户

su/su -:将普通用户变为root,使用Ctrl+D返回普通用户

暂时对一条指令提权:sudo command
注:只有将普通用户添加到系统的信任白名单(/etc/sudoers)中后才可以使用sudo

2、Linux权限管理

1)权限身份

  1. 文件和文件目录的拥有者:u---User
  2. 文件和文件目录的所有者所在的组的用户:g---Group
  3. 其它用户:o---0thers

2)文件类型和访问权限

使用ll指令可查看

a. 文件类型(Linux中文件名后缀没有直接的意义,系统是通过第一位进行文件区分)

  • d:文件夹
  • -:普通文件(文本,可执行程序,库 基本都属于普通文件)
  • l:软链接(类似Windows的快捷方式)
  • b:块设备文件(例如硬盘、光驱等)
  • p:管道文件
  • c:字符设备文件(例如屏幕等串口设备)
  • s:套接口文件

b. 基本权限

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

rwx相对位置固定 ,每个位置只有是或否含义(可用八进制方案表示)

判断当前登录用户属于哪一组:将登陆用户与文件属性信息中显示的拥有者和所属组比较,只要配对成功,就结束,均不等时为Other

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

a. chmod

功能:设置文件的访问权限

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

参数常用选项:

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

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

权限值的格式:

格式一:用户表示符 +/-/= 权限字符
  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限

用户表示符:

  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户
格式二:三位8进制数字

chmod 664 /home/abc.txt

b. chown

功能:修改文件的拥有者

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

常用选项:-R 递归修改文件或目录的所属组

chown -R user1 filegroup1

c. chgrp

功能:修改文件或目录的所属组

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

常用选项:-R 递归修改文件或目录的所属组

d. umask(权限掩码)

凡是在umask中出现的权限,不会在最终的文件权限中出现

格式:1)修改:umask 权限值 2)查看:umask

说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。

新建目录默认权限是0777,新建文件默认权限是0666,但普通用户创建新文件时权限是0664,创建新目录时是0775,原因在于:

新建文件:110 110 110

umask: 000 000 010

操作后文件:110 110 100 (664)

故文件显示出的权限为:文件权限 & ~mask

3、共享目录

1)问题引入

a. 普通用户的家目录权限是700,故在家目录下创建的文件和目录别人都看不到,但有时多个用户想进入文件进行数据共享,因此共享文件不能放在任何一个人的家目录中,故用root在根目录下创建一个shared目录(目录的u和g均为root)-------> 任何人只要在根目录进入共享目录就可以文件操作

b. 一个用户无法访问和修改某个文件,但其可以删除该文件,因为一个文件能否被删除不是由该文件权限决定,而是由该文件所处目录决定,如果去掉共享目录的Others w权限,每一名用户都无法在创建删除目录中的文件 -----> 无法实现共享

2) 粘滞位

给目录设置权限,一般是共享目录,大家可在目录中进行各自文件的增删改查,但只允许文件拥有者或root能删除该文件,其他人一概不允许。

chmod o+t shared

t是一种特殊的x权限

3)tmp文件

在根目录下已存在一个共享目录

相关推荐
麒麟而非淇淋10 分钟前
Day3 微服务 微服务保护(请求限流、线程隔离、服务熔断)、Sentinel微服务保护框架、分布式事务(XA模式、AT模式)、Seata分布式事务框架
java·运维·微服务
高兴蛋炒饭16 分钟前
Nginx的介绍以及配置使用
linux·服务器·nginx
工业通讯探索者35 分钟前
Profinet转EtherNet/IP网关连接AB PLC的应用案例
运维·服务器·数据库·网络协议·自动化·信息与通信
Elastic 中国社区官方博客1 小时前
如何 cURL Elasticsearch:进入 Shell
大数据·服务器·数据库·elasticsearch·搜索引擎·ssh·全文检索
Dusk_橙子1 小时前
在Linux中,如何配置负载均衡器以分配网络流量?
linux·运维·负载均衡
Mirilla1 小时前
华为iotda sdk发送消息无法更新quickstartpython问题解决
java·服务器·前端
搬码后生仔1 小时前
使用docker desktop提示 需要更新WSL
运维·docker·容器
ChaITSimpleLove1 小时前
如何删除 Docker 中的悬虚镜像?
运维·docker·容器·dangling images·悬虚镜像
Lang_xi_2 小时前
Linux中的tty和pts概念和区别
linux·运维·服务器
c的s2 小时前
在一台服务器上使用docker运行kafka集群
服务器·docker·kafka