【Linux】shell命令以及运行原理和Linux权限的理解

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

🚀 作者简介一名在后端领域学习并渴望能够学有所成的追梦人。
🐌 个人主页蜗牛牛啊
🔥 系列专栏🚲Linux
📕 学习格言博观而约取厚积而薄发
🌹 欢迎进来的小伙伴如果小伙伴们在学习的过程中发现有需要纠正的地方烦请指正希望能够与诸君一同成长 🌹


文章目录

一、shell命令以及运行原理

Linux严格意义上说的是一个操作系统我们称之为“核心kernel”但是一般用户不能直接使用kernel而是通过kernel的“外壳”程序也就是所谓的shell来与kernel沟通。从技术角度shell的最简单定义就是命令行解释器主要作用是将使用者的命令翻译给核心kernel处理同时将核心的处理结果翻译给使用者。
对比windows GUI我们操作windows 不是直接操作windows内核而是通过点击图形接口从而完成我们的操作比如进入D盘的操作我们通常是双击D盘盘符或者运行起来一个应用程序shell 对于Linux有相同的作用主要是对我们的指令进行解析解析指令给Linux内核。反馈结果在通过内核运行出结果通过shell解析给用户。

如下图所示框起来的我们通常称之为命令行在命令行输入一个命令是shell帮我们执行的它自身也是一个指令一个程序。

在这里插入图片描述

用户并没有直接访问操作系统在操作系统外面包裹了一层软件层叫shell外壳程序。
shell外壳程序是包裹在操作系统外层的一层软件层核心工作命令行解释或者操作解释用来将用户的操作解释给操作系统让操作系统去执行执行完毕将结果经过shell再交给用户这样的软件层称为外壳程序。


shell存在的意义帮忙进行命令行传递和返回结果保护操作系统
shell是外壳程序的统称而bash是centos7下具体使用的命令行解释器用生活中的例子来说shell相当于媒婆这个职业而bash相当于一个姓王的媒婆属于媒婆这个行业其中的一个。

二、Linux权限

1.Liux权限的概念

Linux下有两种用户超级用户root、普通用户。超级用户可以在Linux系统下做任何事情不受限制普通用户在Linux下只能做有限的事情。权限是限制人的就好比你在某些视频网站看某些视频需要开通vip一样但是访问的对象可能没有这种属性权限比如你在视频网站刷算法题这显然是不可能的。一件事情是否允许被“谁”做权限=“人用户”+“事物属性文件”

root用户和普通用户互相切换问题
指令su在同一个bash下进行身份切换。
从普通用户切换到root用户需要输入root用户密码。

在这里插入图片描述

从root用户切换到普通用户可以直接切换su指令后面直接要普通用户名。

在这里插入图片描述

su -让我们的root重新登录进入到root用户家目录中。

在这里插入图片描述
我们还可以在普通用户下切换到其他普通用户只要输入其他用户密码。如下图为从用户nmz切换到用户zhangsan。

在这里插入图片描述

2.Linux的文件属性和权限

ll指令下显示的更多文件属性中各个字符的含义如下所示。

在这里插入图片描述
在Linux下不用文件后缀区分文件类型往往用文件属性中第一列的第一个字符来区分文件类型以d开头的表示是目录-开头的表示是普通文件、文本、可执行文件、归档压缩文件等b表示块设备bloc磁盘c表示字符设备如键盘或者显示器p表示管道文件s表示网络socket文件l表示链接文件link。但是在编译C语言等程序文件时是使用gcc编译的这里的不用文件后缀指的是Linux操作系统下并不代表gcc等编译软件不需要文件后缀。

Linux中的角色划分文件拥有者、文件所属组和文件的other。Linux中root和普通用户可以是文件拥有者或者是问价所属组亦或文件的other。当用户不是拥有者和所属组的时候默认是other。描述文件权限可以从文件拥有者、所属组和other各自拥有的权限描述
三个角色有各自的权限第一列中除第一个字符外后面的9个字符都表示权限且三个字符为一组。r字符表示可读w表示可写x表示可执行权限-表示该位置无对应权限。
三个字符的位置以及含义是确定的文件自身具有权限属性
下图中a.out文件中文件的拥有者是root文件的所属组是root拥有者权限是可读可写可执行所属组权限是可读不可写可执行other拥有的权限是可读不可写可执行。
在这里插入图片描述

可以通过chmod指令修改文件拥有者、所属组和other的权限。但是一般情况下改一个文件的权限必须是文件的拥有者或者是root才可以更改。命令选项中u表示修改文件拥有者权限g表示修改文件所属组权限o表示修改other权限a表示给所有角色增加权限可以用-删除权限也可以用增加逗号,的方式对不同角色的权限进行增加或者删除。
当有些文件没有执行权限时即便在root用户也不能执行也会受到权限的约束其原因是文件的安全性避免危险性但是在root用户下可以通过添加执行权限执行。

在这里插入图片描述

更改权限的八进制方案我们可以认为有权限的时候为1没有权限的时候为0。下图中test.c文件权限用二进制表示为011 100 101转化为八进制是345要是想更改为给所有角色增加rw权限即rw-rw-rw-用二进制表示为110 110 110转化为八进制是666。
在这里插入图片描述

chown指令用来修改文件的拥有者chgrp指令用来修改文件所属组。
但是如下图所示显示权限不允许可以通过sudo指令提升权限或者在root用户下修改。因为把一个东西给被别人的时候要经过别人的允许但是在Linux中只有root能够强制把文件的角色修改。sudo指令可以提升单条命令的权限使其以root身份运行。
当一个文件的拥有者是普通用户所属组是其他用户包括root用户此时更改所属组不需要提升权限或者root用户下运行可以直接更改。
su指令输入的是root用户密码而sudo指令需要输入的是当前用户的密码。但是当我们使用sudo命令时会显示nmz is not in the sudoers file. This incident will be reported.这是因为我们还没有取得权限后续文章会具体讲解这一问题。

在这里插入图片描述
在这里插入图片描述

我们可以先尝试在root用户下修改文件角色也可以同时修改拥有者和所属组。更改拥有者和所属组为其他用户之后可能导致当前用户无法读取文件但是root用户不会受到影响。
权限修改之后如果没有对应的权限不能执行对应操作没有权限访问。但是root用户不会受到影响。可以通过chown指令同时将文件的拥有者和所属组都更改此时需要权限提升或者root用户下运行。

在这里插入图片描述
在这里插入图片描述

file显示文件类型。

在这里插入图片描述

目录的权限当我们进入一个目录时需要的权限是x权限对于目录来讲在没有r权限的目录下我们无法查看当前目录下的文件名和文件属性在没有w权限的目录下无法直接在该目录下创建新文件。但是在root用户下不受限制。
如下图所示在普通用户下当拥有者没有r读权限和w写权限时仍然能够进入到dir1目录中当在普通用户下去掉x权限之后不能进入目录。

在这里插入图片描述
在这里插入图片描述

当去掉r权限留下wx时可以进入创建新的文件和目录但是不能查看当前目录下的文件。

在这里插入图片描述

当去掉w权限留下rx时可以进入查看文件和目录但是不能创建新的文件和目录。

在这里插入图片描述

当我们创建一个新的普通文件和目录时他们都有自己的默认权限不同的操作系统默认权限是不一样的。我们先了解几个概念默认权限最终呈现出来的权限、起始权限系统设定的、最终权限和默认权限相似。

在这里插入图片描述系统为了更好的控制文件权限系统会有默认的权限掩码。
权限掩码在起始权限中去掉在umask中出现的权限不能影响其他任何权限。比如要得到10111010的后四位通过它&00001111得到00001010从而得到后四位其中00001111被称为掩码。在Linux中可以通过umask指令查看当前系统的权限掩码也可以通过在umask后添加八进制数字改变权限掩码,如想改变权限掩码为007在umask后面加上007umask 007

在这里插入图片描述

最终权限=起始权限&(~umask)。普通文件的起始权限是从666rw没有x开始的目录文件的起始权限从777开始的rwx

在这里插入图片描述

扩展
背景未来在使用Linux时可能会有一些共享目录被所有的普通用户共享用来保存普通用户产生的临时数据。
准备共享目录通常是由root提供的/home就相当于一个共享目录。
在root目录下创建一个公共目录public同时将权限放开然后在不同的用户下在这个目录里创建文件。
在这里插入图片描述

虽然在同一个目录下但是使用的时候还是会受到权限的约束但是删除时候不会受到权限的影响。普通用户也能删除任何文件不会受到权限的影响因为有w写权限。

在这里插入图片描述


为什么拦不住删除能够在特定目录下创建或者删除文件由该目录的w权限决定。当w权限没有之后同样不能删除文件但是此时也不能创建文件了失去了其作为共享目录的意义。

文件被所有人共享的时候受权限约束但是拦不住别人删我的文件所以为了能够让大家共享文件且不让其他人随便删除别人的文件引入了粘滞位粘滞位只能给共享目录添加且只能在root用户下可以添加。添加粘滞位之后只能由目录中文件的拥有者和超级用户能删别的不能删。当我们只想让拥有者root用户除外能够删除自己的文件时可以设置粘滞位。
chmod +t 共享目录名给共享目录添加粘滞位增加粘滞位之后不让删除。

在这里插入图片描述

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: shelllinux