登入xshell以后,显示的为命令行,后面输入的就是命令+选项
shell命令以及运行原理
广义上,Linux发行版=Linux内核+外壳程序(shell,bash)
狭义上,Linux=Linux内核
一般是谈广义上
linux严格意义上来说是一个操作系统,称之为“核心”,但一般用户是不能直接使用核心(kernel)。而是通过核心的外壳程序,也就是所谓的shell,来和kernel沟通
从技术角度来讲:shell简单定义:命令行解释器,主要包含
1、将使用者的命令翻译给核心kernel处理
2、将核心的处理结果翻译给使用者
上图就是外壳,用户将命令送给shell,shell将命令送给操作系统,操作系统反馈给shell,shell在反馈给用户。对于非法请求,shell是有权利去拒绝的
shell:
1、传递请求指令,让操作系统执行指令(执行命令是创建子进程来执行具有风险的事情)
2、保护内核
此时,提到了进程的概念,在这里我们理解进程就当做:程序运行起来就是一个进程
结论:shell本身就是一个进程
因此,为什么会有命令行解释器:
1、与操作系统直接交互命令
2、直接或者间接的保护操作系统
3、命令行解释器的工作原理:一些命令直接由shell自动实行了或者是shell创建子进程去执行这些命令
如果shell是一种职业/统称,那么bash就是一个具体从事该行业的人
对比windows GUI ,我们操作Windows不是直接操作Windows内核,而是通过图形接口,点击,从而完成我们的操作
shell对于linux, 有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核,反馈结果在通过内核运行出结果,通过shell解析给用户
axj可以显示系统的所有进程
Linux权限的概念
Linux中默认有两类用户
1、root:超级管理员,具有非常高的权限
2、普通用户:具有一般权限,需要受权限约束的
为了安全起见,root和普通用户密码一定不要设置为同一个(如果设置一样,权限界限不清楚)
当前是普通用户,切换为超级用户:su -
这里该输入root密码还是普通用户?——root的密码
su - 切换为超级用户,su - 用户名再次切换为普通用户
ctrl+d可以直接回退到root
建议使用exit回到普通用户,不要使用su -
因此
用户回退:exit/ctrl+d
su - 用户名后,进程会增加,因此每一次su后,都会增加bash
因此每一次切换用户后,按ctrl+d回退就不会增加
想创建一个文件,不想用root想暂时提升权限而不变为root,就用sudo
此时直接touch就是普通文件,用户就是我自己zmm
sudo:临时权限提升,执行后续命令,以root身份执行
此时用的密码是zmm的密码,而不是root的密码
passwd + (用户名,root不用加)可以更改密码
sudo创建就是root权限
如果使用不了sudo需要添加环境配置,需要增添信任关系
在后续提vim的时候会添加
Linux权限管理
权限约束的是人以及人的操作
文件本身就具有天然的权限属性:r,w,x(执行)
理解什么是权限:一件事情是否允许被特定的人做
权限在今天默认是文件的权限
权限=人+事物的属性
左侧:文件的拥有者
右侧:文件的所属组
Linux的用户类别:
1、拥有者owner
2、所属组group:自己可以看到,并且同组可以看到,但是别人不能看到,为了组内协同
3、其他other
但是上图为什么拥有者和所属组是同一个身份:一个人自成一组
对比拥有者,所属组,other 与 root,普通用户的关系:
root和普通用户:指的是具体的一个人
拥有者,所属组,other指的是一种角色身份
因此拥有者,所属组,other必须要对应到root/普通用户身上
花圈的一行中有十个字符
第一列标识文件类型:Linux系统中,不以文件后缀作为区分文件类型的方式,以属性中第一列有关
-:普通文件[文本,各种动静态库,可执行程序,源程序]
d:目录文件(如mkdir)
c:字符设备文件:键盘与显示器
b:块设备文件:磁盘
p:管道文件:通信
l:链接文件:软连接
后续在进行补充
为什么上述键盘灯都属于文件?Linux下一切皆文件
因为Linux系统不以后缀区分,所以把test.c移到test上
但是gcc编译会发现报错,因为gcc是系统上的命令(刚刚提到的是Linux系统不以后缀区分)
第一列之后的以3个字符3个为一组(33为一组)
绿色的表示拥有者
蓝色的表示所属组
黄色的表示其他人
rw-:(读权限,写权限,执行 )(不能交换)r表示是否具有读、w是否具有写、-是否具有可执行
如果第一个位置上为r表示是,为-表示否
第二个位置如果是w表示是(也就是具有写权限),为-表示否
第三个位置上如果是x是代表具有可执行权限,-表示否
因此对于绿色的rw-表示拥有者具有读、写权限,但是不可执行
对应文件的属性 ——里面的拥有者、所属组、其他人表示特定的人群
修改权限
此时权限就约束了我,无法读test.c