目录
1.大部分指令就是文件
2.用户执行某种功能的时候,不是直接让操作系统执行对应的指令的,而是先交给外壳程序
外壳程序是什么?
介于用户和操作系统之间的软件(命令行解释器)。
为什么要有外壳程序?
- 用户不善于和OS之间交互
- shell外壳的存在,可以对请求进行合法性检查,变相的保护OS
外壳程序实现原理?
bash基本都会给我们创建一个子进程(子进程帮用户进行命令行解释),bash只需要进
行等待就行了。
shell和bash的区别:shell——所有外壳程序的统称;bash——特定的一个外壳程序
Linux权限
一、权限概念的引入
1、什么是权限?
举例:vip、门禁
权限,就是通过一定的条件,拦住一部分人,给另一部分人权力,来访问某种资源。(决定有与无,能与不能的问题)
2、权限的本质?
权限和人有关
权限和事务的属性有关
权限 = 人(用户、角色) + 事务的属性
3、Linux中的用户
- root —— 超级管理员,不受权限约束
- 其他(普通用户)
Linux中有三种角色:拥有者 所属组 other
4、Linux中文件的权限
文件属性权限一般有三种:r——读;w——写;x——可执行权限
每一组第一个字符代表:是否具有读权限 如果有权限,就是r,否则,就是-
每一组第二个字符代表:是否具有写权限 如果有权限,就是w,否则,就是-
每一组第三个字符代表:是否具有执行权限 如果有权限,就是x,否则,就是-
住:一个文件能否执行 = 是否具有可执行权限 + 该文件确实可以执行
二、对权限的操作
1、快速掌握修改权限的做法
一个文件的权限,谁能修改?
- a.文件的额拥有者
- b.root
a)chmod
chmod功能: 设置文件的访问权限格式: chmod [ 参数 ] 权限 文件名
- R -> 递归修改目录文件的权限
- 说明:只有文件的拥有者和root才可以改变文件的权限
①用户表示符+、-、=权限字符
- +:向权限范围增加权限代号所表示的权限
- -:向权限范围取消权限代号所表示的权限
- =:向权限范围赋予权限代号所表示的权限
- 用户符号:
- u:拥有者
- g:拥有者同组用
- o:其它用户
- a:所有用户
组合用法:
chmod u-r,g+w,o-rwx test.txt
2、对比权限有无,其表现差异
将拥有者读写执行权限全部删除后
发现:对于普通用户,都要受到对应权限的约束,即使这个用户是这个文件的拥有者。
但是root用户不受权限约束
对用户的身份进行识别,只识别一次。依次从拥有者、所属组、other向后匹配,一但匹配成功就停止。
用root用户将文件test1.txt文件的拥有者变更为root
发现Treant可以顺利执行所属组的rwx权限
修改文件test1.txt的所属组
用户Treant已经不属于文件test1.txt的所属组,就无法执行rwx权限。
引出改变文件拥有者、所属组的Linux命令:
b)chown
chown功能 :修改文件的拥有者格式 : chown [ 参数 ] 用户名 文件名
功能 :修改文件或目录的所属组格式 : chgrp [ 参数 ] 用户组名 文件名常用选项 : -R 递归修改文件或目录的所属组
//修改文件的拥有者:
chown username filename
//修改文件的所属组:
chgrp username filename
//同时修改拥有者和所属组:
chown username1:username2 filename
普通用户无法直接改变文件的拥有者、所属组,需要暂时提权(强制)
sudo chown root test2.txt
或直接用root用户
权限的意义:保护普通用户的文件的一般的安全性
3、修改权限的第二套做法
chmod 8进制数字 /home/abc.txt实例:# chmod 664 /home/abc.txt# chmod 640 /home/abc.txt
4、了解文件类型
Windows是用 后缀名 区分文件类型的,
但Linux不用 后缀名 区分文件类型(但并不是说Linux的文件不用后缀)。
Linux系统不以文件后缀名作为区分文件的类型,并不代表Linux上的工具(例如:gcc)也是如此。
Linux通过文件的第一个属性列区分文件类型。
Linux文件类型:
- d:文件夹
- -:普通文件
- l:软链接(类似Windows的快捷方式)
- b:块设备文件(例如硬盘、光驱等)
- p:管道文件
- c:字符设备文件(例如屏幕等串口设备)
- s:套接口文件
目前只需记住 ‘ - ’ 和 ‘ d ’即可,剩余文件类型会再以后展开学习。
附:要想进入一个目录需要什么权限? 需要x权限
目录的r权限:决定用户是否能查看此目录下的文件信息
目录的w权限:决定用户是否能在此目录下新建、修改、删除文件
目录的x权限:决定用户是否能够进入该目录
如上图,为何Linux创建文件时,默认权限会有差异?
创建的普通文件,起始权限是:0666,没有x;
创建的目录文件,起始权限是:0777,包含x
其实,Linux具有一个权限掩码
创建文件的时候,要从起始权限中过滤掉(按位取反)在umask中出现的权限
权限掩码是可修改的(且权限掩码在不同系统是不同的)
修改umask为 0000 后,重新创建的目录权限就变成了777
补充:
删除一个文件,和此文件没有关系(不管这个文件对当前用户开放了什么权限),
而是和此文件所在目录的权限有关系。
而Linux默认将用户家目录仅对自身开放权限,别的用户rwx权限全部关闭。
如果想在Linux下由多个用户创建一个共享文件,可被多个用户共同访问,应该怎么做?
答:这个共享文件不能再各个用户的家目录下创建,只能在系统的非用户目录下创建。
但是这种目录,其他人也可以进行修改删除等操作,所以就需要一个粘滞位。
命令:
chmod +t dirname/
现在就只有目录的拥有者和root才能够删除文件,而其他人只能新建文件 。