shell外壳+文件权限
- 一.shell原理:
- 1.对比:windo GUI 和 shell
- 1.windo GUI
- 2. shell
- 2.为什么?是什么?怎么办?
- 1.为什么有shell
- 2.是什么?
- 3.怎么办?
- 4.补充:
- 二.linux权限管理:
- 1.基本概念:
- 1-1:用户切换
- 2.文件类型和访问权限:
- 1.文件类型:
- 2.访问权限类型:
- 2-1:文件权限值的表示方法:
- 2-2:文件权限的设置方法:
- 2-3:快速设置文件三个分区的权限
- 3.文件(目录)拥有者的改变:
- 4.文件(目录)所属组的改变:
- 5.补充root
- 6.umask 权限掩码
- 7.关于目录权限的三个情况:
- 3.文件共享tmp
- 1.文件共享:
- 2.粘滞位:
一.shell原理:
Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?
从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:将使用者的命令翻译给核心(kernel)处理。同时,将核心的处理结果翻译给使用者。
1.对比:windo GUI 和 shell
1.windo GUI
我们使用的windo系统就满足图形化的一种交互给日常用户去使用的,是通过图形操作进行与操作系统的互联,通过图形化的这一个外壳实现自己的操作通过解释器与核心进行互联核心处理之后的结果返回出来到我们的图形化界面上面。
2. shell
关于shell 就是把用户输入的命令通过他的解释给核心,核心接收信息进行相关的操作,然后通过sheel把结果翻译并且展示出来:(两个外壳本质是一样的)
2.为什么?是什么?怎么办?
1.为什么有shell
1.用户是不善于直接和操作系统进行交互的所以需要一个shell外壳
2.是什么?
1.shell通过解释命令给内核,并且显示翻译内核的结果。
3.怎么办?
1.关于正常的命令:shell自己执行指令和内核互联完成这个命令,并且显示翻译内核的结果。
2.关于用户自定义的指令:shell不知道这个命令的正确性质,不会自己去执行指令,而是会去创建一个新的进程去执行这个命令。
3.shell一般完成简单并且没有风险的命令,创建的进程一般完成不是很容易并且有一定风险的命令。
4.shell相当于一个程序这个程序如果挂了你与操作系统之间的连接就挂了所以创建新的进程去解决容易出问题并且非常难的操作是一种处理问题的一种策略。
4.补充:
ps aux : 查看linux系统的进程列表展示:
top 实时显示linux系统的进程列表并且3秒更新一次。
每一次启动shell外壳程序都使用不同的进程号如果同时用用同一个账号连接两次Linux服务器他们的每个程序的进程都是不相同的如果在一个里面kill了sheel程序另一个连接不会收到任何影响:
二.linux权限管理:
1.基本概念:
linux有两种用户类型:
1.超级用户root #
2.普通用户username $
3.# 是超级用户的命令提示符 $是普通用户的命令提示符。
1-1:用户切换
- su 【用户名】 普通用户和root用户都适用
2.直接 su 切换root
3.sudo + 【一条命令】 使用root权限执行一条命令:
root切换到普通用户不需要输入密码:
普通用户切换到root用户需要输入root密码
通过sudo可以使用root权限执行一条命令
1.那么这个时候就有就有一个问题出现了,我们普通用户只要sudo一下输入一下密码就有root权限执行命令那么还要root有什么用呢?
其实并不是这样的在/etc/sudoers 有这样的一个配置文件需要root权限可以在配置文件中加入用户,如果当前执行sudo的用户并不在这个配置文件中那么命令不会执行并且报错:
2.文件类型和访问权限:
1.文件类型:
通过命令file可以查看文件详细信息:
补充:d:文件夹
-:普通文件(源代码,文档,音乐,视频,库 , 可执行文件 等等在linux下都是普通文件)
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等):支持随机访问
p:管道文件
c:字符设备文件(例如屏幕等串口设备):键盘 显示器 不支持随机访问
s:套接口文件
2.访问权限类型:
>1.只有文件的拥有者和root可以改变文件的权限。
2-1:文件权限值的表示方法:
2-2:文件权限的设置方法:
chmod
功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
参数类型:
u 拥有者
g 所属组
o other(其他)
常用选项:
R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限
参数和权限这个地方怎么输入呢?
① 用户表示符+/-=权限字符
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
去除所有权限:chmod a-rwx text1
添加所有权限:chmod a-rwx text1
2-3:快速设置文件三个分区的权限
去除所有权限:chmod a-rwx text1
添加所有权限:chmod a-rwx text1
3.文件(目录)拥有者的改变:
chown
功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
常用选项:-R 递归修改文件或目录的拥有者:
补充:
1.如果普通用户想要把自己创建的一个文件更改拥有者为其他用户这个操作是不被允许的。
2.如果普通用户只想要把自己的这个文件的拥有人给到这个用户通过普通用户的身份做不到,通过sudo 进行命令提权!
4.文件(目录)所属组的改变:
c)chgrp
功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组
5.补充root
>在root下不受任何权限的控制!!!!!!!!!!!!
补充·兴建组
userpadd 组名
6.umask 权限掩码
d)umask
功能:
查看或修改文件掩码
==新建文件夹默认权限:0666 ==
==新建目录默认权限:0777 ==
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到
umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是:== mask & ~umask ==
格式:umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。
目录对于X:可执行权限对于目录来说是可以进入这个目录。
普通文件对于X:可执行权限对于普通文件来说没有意义!对于一个可执行文件就有意义!
普通用户创建文件:
超级用户创建文件:
7.关于目录权限的三个情况:
1.对于一个目录有没有r权限,如果进入这个目录你不知道这个目录中有什么或者在目录外面想要通过ls看一下绝对路径目录中的内容你都看不了!
2.对于一个目录有没有W权限,说明你没有在这个目录中创建或者删除文件的权限:
3.对于一个用户没有文件的执行权限就不可以进入这个目录!
3.文件共享tmp
1.文件共享:
linux下在root目录下有一个tmp目录专门用来进行文件共享的!
1.这个tmp命令拥有者和所属组root ,普通用户都是other 用户对于这个目录有rwt的权限—》这个t就是粘滞位:
2.我们现在试一下把粘滞位给去掉变成正常的一个目录看一下!
2.我们在这个tmp目录下使用两个用户创建了两个目录,我们用其中一个用户去删除另一个用户的文件我们发现是可以删除的因为一个文件可不可以删除是看这个文件的所在的位置而不是这个文件是谁的!
2.粘滞位:
为什么会有粘滞位!
因为防止公共目录下other用户进行任意的文件删除增加了一个粘滞位的概念防止other用户在tmp目录下的不正常操作!
通过增加粘滞位的操作是不是确保公共空间文件的安全性!
不允许同other下乱删除文件!