终端
在Linux/unix世界里,终端是一个非常基本、重要的概念。那么终端到底是什么呢?
终端——人与机器交互的接口;
我愿意把计算机分成以下概念:
计算机 = 主机 + 终端; 终端 = 输入设备 + 输出设备;
人和机器是两个独立的实体,当人使用机器时,必须借助某种接口才能与机器交流信息。计算机的接口包括显示器、键盘、鼠标、扬声器、麦克风等。CPU、内存、硬盘、光驱、显卡、网卡等其他硬件属于主机。
Linux/unix将这种实现人机交互的接口称为终端。
系统结构
内核
系统内核是操作系统最基本的部分。它完成系统最核心的功能,是对硬件资源进行控制管理的系统集合。
出于安全考虑,用户是不能直接操作的,只能通过操作系统提供的特定接口完成对内核的访问。
系统提供的调用接口,能完成内核中一个个单独的功能。
简单来说,就是系统内部由大佬编写的一些高度集成的功能程序,每个程序有不同的调用接口。
但问题出现了,系统调用接口也不是那么好用的。不是所有的人都是大佬程序员,那怎么办呢?
这就需要知道shell程序的知识啦!
shell
开发者对系统调用接口封装实现了一个个独立功能的程序,(比如浏览目录内容的功能程序)普通用户想要浏览目录,只需要执行这个程序就可以了。
出于用户的角度,实现了一个命令行解释程序shell:捕捉键盘的输入,执行对应的程序。(比如输入ls命令,就执行ls程序),在根目录下有一个目录bin,内部就存放了系统中的命令功能程序,当我们在终端中输入命令名称之后,shell捕捉到我们键盘输入的命令,知道我们要执行的哪个命令,就会在/bin目录下去找到对应的程序,执行,完成功能。
总结
当一个终端被打开时,默认会执行一个程序,这个程序就是shell,之后我们输入指令,shell就会找到并执行我们指令对应的功能程序,完成对应的功能。
我们也可以认为,shell在终端上为我们提供了一个显示界面,通过这个界面用户可以访问操作系统内核的服务。
最明显的体会,就是在windows下,桌面的UI界面就是一个shell。cmd就是终端。
权限
用户不能直接访问内核,这是不是一种权力的限制呢?
Linux时一个多用户操作系统,可以多个用户同时操作;如果有“傻瓜”用户对一些重要文件进行了修改,就可能造成悲剧,这时权限的作用就可见一斑了。
①用户对系统的操作权限:
Linux将用户分为两类:管理员用户(root)+ 普通用户
我们可以进行用户切换,切换之后,就拥有指定用户的权限。
命令:
su 切换用户
sudo 这不是一个单独的指令,与其他命令搭配使用,对当前命令进行临时提权。
②文件的访问权限:
对于访问用户的分类:
文件所有者 u ,
文件所属组g ,
其他用户o;
对于访问操作的分类:
可读 r (可以浏览),
可写 w (在目录中创建删除文件),
可执行x(可进入)
文件权限的表示方式:
所有者 所属组 其他用户
rwx rwx rwx
rwx r-- --- -表示没有对应的权限
111 111 111 二进制1/0表示对应权限的有无
7 7 7 八进制数也可以表示权限
umask 查看设置文件权限掩码,比如设置umask 002,
实际上是将文件权限修改为 775 / 111 111 101 / rwx rwx r-x
权限 = 掩码取反=八进制的777-掩码
权限相关指令:
切换用户 su
临时提权 sudo
添加用户 useradd 设置密码 passwd
设置文件权限掩码 umsak,通过掩码的改变就可以改变 chmod 修改文件权限
----特殊功能:粘滞位 每个人(其他用户)只能在目录中创建或删除自己的文件,不能删除别人的。由root用户设定。
修改文件所有者 chown chown san work/
修改文件所属组 chgrp