目录
1.shell运行原理——外壳程序
(这个图只是方便理解)
操作系统的意义:对上给用户提供一个好的指令环境,对下管理好软硬件
在windows下的图形化操作界面和在Linux下利用指令去访问操作系统都不算是直接去访问操作系统,用户实际是通过操作系统提供的一个个系统调用接口去使用操作系统的,但是当普通用户自己去使用系统接口完成对操作系统的使用会产生下面的问题:
由于这些系统接口的调用是非常麻烦的且学习成本是非常高的在加上单纯的代码环境对于用户去使用是非常不友好的,使用起来不方便,适用的范围仅仅限制在对相关内容了解的专业人员
而针对于上面的问题,windows引入了图形化操作界面,Linux引入了shell外壳程序,这些是存在于操作系统和人之间的,使得人使用起来更加方便,使2个原本相互陌生的个体通过一个中间人使彼此可以实现沟通甚至熟络起来,同时这个中间人也可以拒绝帮你传达你想传达的内容(图形化操作界面是将原本一行一行的命令做成了一个个图形的形式来表现,而在Linux下是通过指令去表现的,它们俩的意义是相同的)
shell外壳程序的意义:
1.是用户和操作系统交互中间软件层
2.可以在一定程度,起到保护操作系统的作用
当我通过shell外壳程序去向操作系统传达内容时,此时shell外壳程序可以拒绝你
由此引入了Shell的最简单定义:命令行解释器(将使用者的命令翻译给核心(kernel)处理。 同时,将核心的处理结果翻译给使用者)
2.Linux权限的概念
Linux下有2种用户:超级用户(root),普通用户
超级用户:只有一个,可以在Linux系统下做任何事情,不受限制
普通用户:可以有多个,在Linux下做有限的事情
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”
关于用户的命令:
ctrl+c (异常退出)
ctrl+d(回退当前用户)
创建用户
useradd name 功能:新建用户(name是要建立的用户对应的名字)
passwd name 功能:为新建的用户设置密码(name是useradd后创建的那个名字)
过程:当输入了name后按回车会提示New password:,此时去输入
这个用户对应的密码,第一次输入密码完成后,然后按回车又会提示
Retype new password:,此时是在次输入密码,当输入的第二次密
码完成后,按回车,当提示
passwd: all authentication tokens updated successfully.
表示用户创建成功
注意(Linux有设定密码的策略,要按照这个策略去设置密码)
举例:
测试是否创建成功:
对于刚创建出来的用户它也是有权限设置的,这些用户在这个视角下就是一个个目录,假如一个路径下的一个用户想对另外一个用户去执行一些操作,前提是这个被操作的用户具有支持你行为的权限
此时这个Chen用户对应的权限是修改后的,不是刚创建时默认的
删除用户
userdel 用户名(普通用户)
不带选项使用 userdel,只会删除用户,用户的家目录将仍会在home目录下,此时去切换这个用户时,会提示这个用户不存在
但是此时在家目录下还是有Chen这个用户对应的目录,此时想清理干净可以输入命令 rm -r
userdel -r 用户名(普通用户)
为了在删除用户时完全删除家目录,我们可以使用 -r 选项。 这个选项同样会删除用户的邮件池,当userdel带了这个选项后,可以理解为这个用户彻底删除干净了
有时删除时会碰到这个问题:
出现上述情况的根本原因在于切换回root用户之后,Chen还被某个进程占用,可以按ctrl+d(回退当前用户)
切换用户
su [用户名] 功能:切换用户
在切换时注意:
当显示Password时直接输入密码,但是此时输入的密码不会在屏幕上有任何显示,当输入好密码后直接按回车,此时就切换到了root用户
权限的理解:
在Linux下一切皆文件,对于权限理解的核心就是人+事物的属性,权限就是不同的人在对某个事物进行操作时所被允许的行为
这里的人(普通用户)是指:
1.文件和文件目录的所有者
2.文件和文件目录的所有者所在的组的用户
3.其它用户(就是上面2种情况的其他情况)
对于事物的属性有以下几种:
r:read对于文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
w:write对于文件而言,具有修改内容或在目录下创建文件的权限;对目录来说,具有删除移动目录内文件或在目录下创建目录的权限
x:execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
“-”表示不具有该权限
对于文件(目录)的类型有:
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文
补充:在Linux下是不以文件后缀来区分文件类型的,如:cat对.txt和.c和.bin结尾的文件是同样的行为的,但是并不代表不可以使用,在系统层面没有意义,给自己看的,但是在Linux下安装的软件,在它看来却是有不一样的意义,例如:gcc对文件去编译时,对于.c的文件和.txt的文件是不一样的
权限的更改:
u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,
o 表示其他以外的人,a 表示这三者皆是
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限
chmod [u或g或o或a][=或+或-][rwx]....... [文件或目录名]
例如:
对于权限的修改还有另外一种方式:
chmod 八进制数 文件或目录名
(直接使权限变为八进制对应的)
''-''表示这个权限不具有,而当显示"rwx"时表示具有相关的权限,此时可以把"-"认为是二进制的0,而对于"rwx"认为是二进程的1
例如:
补充:
chown chgrp
chown 可以变更文件或目录的所有者
chgrp 可以变更文件或目录的所属群组
权限在实际当中到底有什么意义?
对于一个文件假如没有设置相关权限此时去使用相关的指令时(没有权限时):
现在把权限添加上(具有权限时):
由此可知,权限的意义是:
系统中的每个文件都拥有特定的权限、所属用户及所属组,通过这样的机制来限制哪些用户、哪些组可以对特定文件进行什么样操作,只有当具备了相应的权限时,用户才可以对这些内容执行相关的操作,操作也可以体现在对相关指令的运用上(如:和读有关的指令cat,more,less 等等)
补充:root几乎不受权限的约束,权限是用来限制普通用户(普通人)的