Linux的基本原则或哲学思想
1.有目的单一的小程序组成:组合小程序完成复杂任务(手动完成)
2.一切皆文件小程序,体积小,目的单一,在以后的学习的当中不断地体现的Linux的哲学思想,或者叫Linux的基本原则,Linux的基本原则,或者叫哲学思想都行啊,有这样几点,首先第一个是对Linux,当然我们说过他的自由哲学思想我们已经说过了,接下来我们就说说其他的,第一Linux由小程序,就是他的每一个程序都体积非常小,而且目的单一,叫由目的单一的小程序组成,这是第一点。这个特点使得Linux上很多的程序或者一个复杂的系统,通常会有许许多多的小程序,我们必须要手动把它融合起来,才能组建成一个符合我们需要的系统。尤其是将来我们自己配置服务的时候,需要装很多软件,因此结果就是我们需要组合小程序,完成复杂任务,这需要我们自己手动进行了。第二点,就是一切皆文件,对Linux而言,它的所有东西都保存为文件格式,甚至于连设备的访问入口,都是展现表示文件的。后面我们讲到Linux的目录结构的时候,会给大家细讲每个目录下大概放在什么文件,甚至这些设备对应的访问入口是什么样的文件,这些文件如何进行创建等等,后面都会讲到。第二叫一切皆文件。Ok。第三点就要尽量避免捕获用户接口。尽量很少跟用户进行交互,避免捕获用户接口,说白了就是不跟用户交互,一个程序用户只要发起一个进程之后,这个过程当中一般而言不需要用户再输入任何信息。简单例子,比如过来看我们Linux系统,我们输入个命令,ls,中间不需要你输入任何东西,命令就执行结束了,包括ifconfig等等,这是我们第3点。第4点,配置文件保存为纯文本格式。配置文件保存为成文本格式,因此在我们Linux上要想配置一个服务的话,你只需要拿一个简单的文本编辑器足以完成所有功能。我们需要各位以与以前不同完全不同的方式来理解一个操作系统,所以对这些的基本概念各位一定要做到心中有数,不然的话你无法能够深入精确的理解Linux到底是怎么工作,这在此前恐怕各位是接触不到的,知道几个基本原则,大致有这样几点,后面我们说过后续的课程当中逐渐的会体现出这些特点或者原则。刚才我们提到过对Linux而言它的操作系统,我们用户要想跟系统进行交互,必须要通过一个shell接口来实现,这个shell有可能是图形化的,也有可能是命令行的,但不管怎么讲,我们可以把它统一泛称为shell,所以这是一个人机交互接口,那在图形化的人机交互接口下,我们如何去执行一个程序?很简单,刚才给大家解释过,我们只需要双击一个图标,对于程序是不是可以运行起来了?那在非图形界面下怎么去执行一个程序?好,那先说第一个。GUI接口,刚才我们已经说过了,而对于CLI接口而言,这就需要我们去输入命令,给出执行文件的路径。在这CLI接口当中,他有一个叫做称为称之为叫做命令提示符的东西,命令提示符,说白了就是给你个提示符号,在这个符号后面你可以输入命令,明白意思吗?叫做命令提示符,它有个单词叫做★prompt,就表示你可以立即输入命令了。对于Linux而言,命令提示符还有两种不同的表现形式,首先管理员的展现为#号,而普通用户的展示为KaTeX parse error: Expected 'EOF', got '#' at position 690: …(shell)下,管理员的都是#̲号,普通用户都是,那我们怎么去输入命令,怎么去输入命令,或者说我们可用命令哪些,这里我们先不管它,我的命令格式是什么?★命令格式对这Linux而言,我的命令格式通常有三部分组成,第一部分那就是命令本身。也就意味着在命令提示符下,你第一个先输的必须得是个可执行程序的路径,或者说必须得是个命令或者脚本的名字,其他的一律会报错的。Ok所以这一句话我们称为命令,命令后也可以跟选项!注意一定要有空格隔开之后是选项,选项是什么呢?举个简单例子,过来看,我们输入lss,这显示我们当前的文件,ls-l用另外一种格式来显示,看到了吗?ls-a又是一种样子,而这里-什么-什么,他们就称作叫选项。选项的作用是用来修正命令的执行方式的,或者叫修改命令的执行方式,叫选项,选项还有短选项和长选项之分。短选项刚才各位看到了,我们使用一个杠来引导。知道了吧?使用一个横杠来引导的,一个横线,后面通常跟一个字符,而长选项通常使用两个横线来引导,后面跟一个单词,跟一个word,而这里跟了一个字母,一个character,或者跟的是一个字母,这是长选项短选项它俩的区别,当然很多命令都同时把一个选项既有短格式又有长格式,我们可以根据自己的需要来选择来使用,选项后面,选项可以有多个,各位还需要注意。选项可以同时使用多个,你像刚才这里我lss使用了-a,一个使用-l,对不对? lss是什么命令,回头我会解释的,你可以使用lss-a-l,同时使用,明白了吗?-a又-l,两个选项一块用,如果是短选项的话,多个选项彼此之间可以组合起来,短选项一般而言多个选项可以组合,就使用一个横杠把这个选项一块来写,比如说-a又写个-b,你可以使用直接使用-ab这样,注意-ab之间就不能有空格了,★否则多个选项之间必须得用空格来隔开,一定要记得。又来看。这里我们刚才-a-l你可以写成ls-al结果是一样的,ls-la也行,结果也一样,因为它的次序并不是特别关键,但是有一种情况下比较关键,等一会再说,哪一种比较关键。长选项通常不能组合,必须要分开来写,好,这是选项,各位一定要记得如果有多个选项,并且没有组合,中间一定没有空格,如果组合了就一定不能使用空格,长选项通常不能组合。选项后面跟的是参数,参数是什么?参数指的是命令的作用对象,这个命令对谁生效?命令的作用对象,生效在什么地方?对于不同的命令来讲,它能够接受的参数是否能够接受参数,接受的参数个数等等,都可能是不尽相同的。你像刚才这里我们压根就没有接任何参数,lss,它实际上是有默认参数的。你还可以使用给个路径ls /etc展示为完全是另外一种样子,知道了吧?是不是?那就意味着它的作用目录不一样,不带参数的时候默认是当前目录,指定参数那就是指定的目标目录,甚至于它还可以同时带多个参数,你比如说lss可以指定一个目录,再指定另外一个目录,两个参数,它会显示两个目录的内容。当然后面我会讲lss的使用方法好,这就叫参数。你们命令大多数都是这种格式,★命令 选项 参数!如果有多个选项彼此间用空格隔开,一定要记得这是命令的使用格式,那我们如何获取命令帮助,这个是一个比较大的话题,我们明天再细讲,现在来看一看怎么去实现我们用户的登录和切换的,因为有些同学之前从来没学过,所以我们还是来说一说,我们装完以后刚启动系统的时候应该会是这种样子对吧?可能会展现这种格式,这其实就是一个登录提示符,是一个称作叫login的程序打印给我们的登录提示符。操作系统是一种稀缺资源,计算机也是一种稀缺资源,不是每个人都能够随意获取的,因此它需要让那些具有使用凭证的用户才能使用。注意叫做使用凭证。使用凭证指的是什么意思啊,我们造这个系统为什么会有用户的概念,用户到底是用来干什么的?想过这个问题没有?如果没有用户的话,你的windows一启动以后就直接进入了,而且任何人启动你能不能主机都能够直接进入并使用计算机对不对?都能获取你的任意文件,所以他没法限定资源的使用者。因此其实用户只是实现使用平衡的一种机制,我不知道各位有没有看过那种国外的电影,比如说我们要进入一个高度戒备森严的区域的时候,可以刷指纹刷手掌刷虹膜是不是都可以,这些都是生物识别技术,他们到底用来干什么?验证使用者的身份,你到底有没有权限使用,我到底要不要你允不允许你进来,是不是这个概念?那用户呢,是不是也是同样的东西?用来标识一个资源获取者的身份的。但是各位有没有明白,用户本身用户名,大家都知道你的叫root,我的也叫rooter,是不是这个道理。我们如何去验证用户的身份?要靠什么?靠与之对应的密码,这叫什么?叫认证手段或者叫认证方式。像刚才我们所说的刷指纹的,刷手掌的刷虹膜的,这种我们称叫认证机制,而用户指的是你认证通过了,我怎么去能够在整个系统里面标示你到底能够获取哪些资源。同样道理,到一个公司里边,大家都拿着,有员工卡都能进入来回出入,但是经理和普通员工他所能够操纵的资源是不是不一样?都能进入,你也有密码我也有密码,没错,但我怎么去界定彼此的身份,怎么就知道你到底能够使用哪些资源,我能够使用哪些资源,这是靠用户来实现的。所以说白了★用户就是我们使用标识,或者叫使用凭证。我说这样你是不是能理解?好,因此我们这里就需要给个用户名来进行登录,所以我们首先输入用户名,这是Linux默认用户管理员 root,名称无法修改,一般来讲,而且它的ID号为0,等一会儿我会解释哈。Password的默认是redhat,密码是redhat!注意Linux严格区分大小写所以你root写成大写redhat密码写成大写也是不可以的,这和windows不一样, Windows它的密码是默认的,Linux是严格区分大小写,任何一位写成大写或者小写不对应,都是视为错误的。我们登录进来以后大家看,它就打印了一个交互式接口给我们,这个我们称为叫命令提示符,刚才给大家解释过了还记得吧?而windows你登录进来以后,这个桌面其实也就是一个交互式界面,只不过命令界面你输入命令交互式图形界面你双击鼠标点击菜单来选择而已,它的执行方式不一样,但是其实对于内核来讲,这并没有什么不同,因为对内核而言,无论前端是shell还是前端是图形界面,他们最终都会把用户的操作转化为对应的命令并转交给内核的。所以在内核看来这并没有什么不同,只是在用户看来有所不同而已。好,那我登录进来以后,注意我们登录的是管理员用户,事实上我们的Linux还有一个特性,他给我们提供的登录界面可不止这一个,当然各位都是笔记本,可能你的键盘和键盘映射方式不一样,未必都能够同时使用,但是可能你可以多试几次比如说我们按着ctrl+alt+F2,按一下松开,过来看,我们这里又显示个登录,看到了吗?我们按ctrl+alt+F1又回来了是不是?我还可以再登陆一次,ctrl+alt+F2又登了一个用户,再按ctrl+alt+F3又登录,这是多个虚拟登录界面,他有多个,这个我们把它称为叫虚拟终端,叫做虚拟终端,Linux终端有很多种,我们后面会讲到的,他模拟你是一个是一个多用户的环境,而且有多个不同的显示器,所以给你虚拟出来假的几个假的显示器,我们把它称作终端,叫terminal。Terminal,我把它称叫终端,事实上Linux终端有很多种,有物理终端,有控制台,有虚拟终端,有模拟终端等等,将来这些我们都会细细的去讲,而且各位还可以自己去,操作这些终端,我们可以在这终端之间来回进行切换,一共有6个终端我们可以进行切换的。一般而言 ctrl+这是默认的,其实到底有几个我们可以自己定义的,从f1f6(ctrl+alt+F1F6)之间我们都可以切换。如果说我们是自,根据我们的指令装的Linux,这里我们使用start x命令加个&符号,注意这里有空格 startx &,因为这是&符号,这符号各位应该认识,这表示我们的程序在后台运行,你不加也没事,回车,各位来看可以启动同一界面,稍等那么这个我们称为叫图形终端,这实际上是alt加f7,当然第一次如果你之前从来没启动终端终端服务,ctrl+alt+F7切换过来的,此时我们使用ctrl+alt+F1还可以切换回去了,又回到我们ctrl+alt+F1了,ctrl+alt+F2是另外一个界面,f3又是一个界面,ctrl+alt+F7,又回到我们的同一个界面了,可以来回之间进行切换,当然还是那句话你的笔记本未必能够这样使用,因为键盘格式不一样,可以试一试。Linux的灵活之处在于它可以启动多个图形界面的,在图形界面下,如果我们想执行命令的话,只需要点右键,open terminal,我们点open terminal以后也会打开一个终端,但这个终端被称为叫所以我们点,这个终端我们称为叫模拟终端假的,在里边我们就可以输命令了。当然我们这里不做多余的演示,会用就可以了,知道从哪打开或者是你通过什么application或者system里面去找,应该在system找一找啊, accessories ->terminal,那我们后续的学习过程几乎都用不着图形界面的,你也甭管他,知道怎么启动就行。事实上我刚才说过,在我们Linux上我们还是应该介绍一下我们的图形界面的类型Linux的图形界面有三个.第一个叫做 Gnome C第二个叫做KDE :C++第三个叫XFace:你们有没有X过?对于Gnome而言,Gnome使用C开发的KDE是使用C++开发的而XFace是一个简洁的适合用在嵌入式平台上的轻量级的桌面系统。而据说乌班图也出了一个Linux主机操作系统,sorry,手机操作系统,据说界面挺漂亮的,好像有公司已经在研发乌班图手机了,回头可以看看,XXXXX,乌班图本身也是一个Linux,乌班图还有多种不同的版本,Gnome版、KDE版、XFace版,分别所提供的桌面不一样,但是在我们的鸿蒙系列上,系统上它两个桌面都提供了,一个是KDE,Gnome,只不过我们刚才装的时候默认装的只装了Gnome,它有两种完全不同的风格的桌面系统,一个叫KDE,一个叫Gnome,这是图形化的界面。而对于命令行界面来讲,它也都是一些程序,有很多,像刚才我们默认那个时候是bash(shell),除此之外它还有cahzahkshtcsh等等等等,有一个就行事实上,bash(shell)是用的最广泛的,而且也是功能最强大的开源的shell,这也是绝大多数的Linux默认使用的需要shell。所以我们学习使用的是bash(shell),bash当然它有shell就叫bsh,就是默认shell,它也有一个默认shell,这个叫做shell。事实上bash(shell)也是shell的链接,还是bash(shell)。回头我们会讲,今天先给大家一个概貌上的认识,回头我们会展开的慢慢去一个一个解释。无论如何各位明白,shell其实就是让我们用户输入命令的,并且将命令的结果能够取回到当前屏幕上来的一个用户接口,或者叫人机交互接口而已。我们还说过任何跟shell启动或者任何跟shell相关的启动程序,只要shell关了,那个程序也关掉了,还记得吧?好,这是我们所提到的一些相关的概念,希望各位能明白这些东西都是什么,接下来我们来说说怎么去切换用户的。假装我们当前系统上,装上系统以后默认有两个用户,一个叫root,一个叫student,好像还有一个叫visit。有这样几个用户,我们怎么完成用户切换,我想从root用户换到另外一个普通用户该怎么换?我们有个命令叫switch user,简写为su,switch user,这也是Linux的重要哲学思想之一,能简写绝不全写。所以su 指的是switch user,所以简写为su。# su [-1] 用户名★★★中括号可以省略★命令 选项 参数转换用户,切换用户。命令的使用方法很简单,假如以他为例来介命令的使用,su,使用一个选项,当然选项有没有都可以,后面跟上参数,参数是用户名,这是参数,就可以切换到另外一个用户了。各位需要注意,我的命令这里如果我加一中括号的话这里,#su[-1] 用户名,这表示这是一个可省略的,这表示可省略,但是你不要在命令行直接敲这个格式,这边你可以不用su,直接加用户名就行。我使su student回车,这样就切换到student的用户了,但有同学说了这里还是想要root,这个我们回头再解释,要想退回来,我们什么都没教,exit,千万不要再输一次啊,使用exit的表示退回原来的位置,但这个不加任何选项,这边我们只需要了解它的简单使用就行,我们要使用su-l student的话,过来看这次就没再出现root,这次我们称为叫完全切换,上面这个我们称为叫半切换,等会我们会解释它俩什么不同,这就是实现用户切换的,很简单,要想退回来仍然是exit,像刚才我们使用这个命令,这就叫命令,这就叫选项,这叫参数,他只需要接受一个参数,而选项是可省略的。那刚才我提到过,装完以后默认我的管理的密码叫redhat对不对?那我想换个密码怎么办?另外一个命令叫passwd,简写,它是password的简写,叫做passwd,回车以后就用于修改当前用户的密码,连输两次即可。各位需要注意,对于管理员而言,你可以随意改成其他密码。而对于普通用户来讲,一般默认策略是必须要符合密码复杂性规则,我们密码就所谓叫密码复杂性规则,什么意思?密码必须要足够复杂,它指的是什么呢?大家应该知道,如果我们使用密码只使用数字,你想象一下,数字一共只有10个是不是?那就意味着你使用6位密码,我从头到尾暴力去猜,暴力破解,我1个1个猜,我猜多少次才能猜出来?6个对吧?10个6次方次,是不是?10个6次方次,100万听起来很大,但是对计算机而言很快就完成了,能明白吗,所以这叫10的6次方。这是只有数字,那如果我们使用数字和小写字母,那是猜多少次,仍然是6个密码,我使用数字和小写字母随意组合,一共要猜多少次,26个字母加10个字符是不是?那就是36个6次方。你说这是不是要复杂多了,难猜多了,那要再加上大写字母,那就是62的6次方,是不是?能理解吧?如果我把键盘上能用的字符都给它用上去,都是我的科学范围,包括一些标点符号什么一些特殊字符,那是不是更难猜了。假如说是100个,总体起来那就是100个6次方,你可以算一下,如果你填密码,使用密码的时候只使用数字和使用任意字符,你看它的复杂度有多少区别,破解程度有多大区别,看到了吗?所以我说你的密码要足够复杂,而且尽量不要只使用数字,通常我们要怎么用?4类字符中你使用3种至少。数字,大写字母小写字母,特殊字符从4种选3那就足够复杂了。第二长度不要太短,你想的再多你就一个密码,那也很容易破解,是不是这样子?所以要足够长才行。这就是为什么我们的无线密码是那么长,我们的无线就是这样子的,如果有同学想登陆的话,你可以登陆无线10个密码,可是得等一会猜了是吧?当然我只是让你记住邮箱地址的,否则其实我随便改几个,比如改成大写的,这个改成126.com,大写字母小写字母,字符复杂特殊字符这些数字都有。就这么一长一串要暴力破解的话,一般来讲没有3年5年它是猜不出来了,计算机再快。因为你可以算一下它有多少次方,你得猜多少次,这给各位也提一个醒,就是你平时使用的邮箱什么之类的密码尽可能要复杂一点,不要仅使用数字,不要使用别人一猜的东西,比如说你的生日,你的姓名,你的生日姓名,什么之类的组合尽量不要一块,不要这样用,尤其在互联网上,很容易破解的事实上。当然我这里也是,我使用password一敲回车改一改就可以改自己的密码了,让它复杂一点就可以,输一遍再输一遍即可。当你输一遍密码不符合规则的时候,它会提示你,看到没有?叫BAD Password,这密码不咋地,OK,it is based on the dictionary word。这是词典中有,那就意味着暴力破解是很容易的。你再长暴力破解也很容易,因为词典中有,而且要暴力破解字典都行,这时候我们称叫字典攻击。对吧?所以我们说你不要使用生日,因为从1900年起到什么2012年结束中间的任何一个每一天,这里边都有,一个一个猜,按照每天一个一个猜,所以不要使用生日,很容易猜,所以这叫密码复杂性规则。好,这是第二点,就是要足够长,第一个要足够复杂,第二个足够长,写出来吧★1.第一个,使用4种字符类别至少3种★2.第二要足够长,一般来讲要大于7位至少。★3.第三,不要使用易记的字符,你比如说不要使用语句什么之类的,就是使用那些最好使用随机字符串,随机的,一时就不当,你自己也记不住了,是吧?怎么办?这就很困难,找一个记事本把它记下来,记事本如果丢了那就麻烦了。所以实际上没有万无一失,万无一失的安全性,尽可能复杂一点就行。★3.这第三点使用随机字符串。★4.第4点要定期更换,比方说你每2个月更换一次,别人花了半年好不容易破解出来,其实你4个月之前都已经更改了。第四要定期更换。★第五,循环周期要大,循环周期要足够大。什么意思?我让同学输入密码,第一次用123,第二次我说改改成456,再改又回到123,再改要456,明白吗?★尽可能不要使用最近使用的密码,就就表示叫循环周期要足够大。一般而言我们在复杂性要求里边会有,比方说你不能使用过去曾经24个曾经使用的密码,在24之内是不允许重复的,各位要尽可能做到这种,你不能改来改去都改成上一次一样了,或者上上上次一样,这是不合适的,这是我的密码复杂性的几个基本法则,各位要注意的。事实上将来我们会教给各位怎么去生成随机数字化,用于做密码,而且你可以把这个字符串保存下来,将来使用一个密码把它们加密起来,进行保存。事实上讲到后来的rhs333的时候,我们会细讲各种加密机制以及每一种加密方式的优势劣势等等,我们都会讲到。好,那么这是我们的Linux密码,因为我们知道密码是用户获取资源时候的凭证对吧?验证,只要用户有了密码,就可以拥有你获取资源的所有的权限了,所以一般而言我的密码必须要尽可能保密,不能让别人知道了,但是这种东西是很容易丢失的,而且一不小心都有可能被别人窃取。因此我们就有了很多的其他的额外手段,比如说刷指纹,不支持你输密码,必须要刷一下指纹才能进去。一般而言别人把你指纹盗走也是可以的。现在有很多这种机制也能,从电影中你都应该看到的,等于是,还有一种刷虹膜,是吧?眼底的虹膜,每个人的虹膜都是不一样的,所以你第一次只要把你的虹膜信息保存进去,以后要刷一下虹膜就可以进入了。盗取别人虹膜也简单,用一种特殊眼镜能复制虹膜。当然还有一种机制,把人砍倒了,眼球给他抠出来也可以是吧?你听起来挺暴力,很多电影不都这么演的吗?刷指纹把手给砍下来拿着走了。但是不管哪种机制,各位明白,这实际上就是加强认证复杂程度的。用网上银行的同学也知道,现在网上银行用各种机制来反破解对吗?
修改一点内容看能不能发表


![[Linux]----马哥Linux运维共208讲(初级+中级+高级+必备软件+PPT)01 [Linux]----马哥Linux运维共208讲(初级+中级+高级+必备软件+PPT)01](http://www.mshxw.com/aiimages/31/642465.png)
