Linux基础

Linux基础,第1张

就像我们了解的Windows和Mac OS,linux也是一个 *** 作系统。如下图,linux就是系统调用接口和内核那两层。

通过上面的说明,我们知道了 Linux 其实就是一个 *** 作系统最底层的核心及其提供的核心工具,任何人均可取得核心码与可执行这个核心程序,并且可以修改。此外,由于linux参考POSIX设计规范,于是 兼容UNIX *** 作系统,故可称为Unix Like的一种。

为了让一般使用者能够接触到linux,很多的商业公司和非盈利团体,就将linux kernal(含tools)与可运行的软件整合起来,加上自己具有创意的工具程序,这个工具程序可以让用户以光盘/DVD或者透过网络直接安装和管理linux系统。这个 kernal+softwares+tools的可完全安装 ,我们称其为 linux distribution(可完全安装套件、linux发布商套件)

对于linux来说,所有的程序和系统装置都是文件, 一切都是文件。

由于利用 Linux 来开发产品或distributions 的社群/公司与个人很多,若是每个人都用自己的想法来配置文件放置的目录,就会造成个人不能使用他人的linux系统的PC。因为你根本不知道一些基本的配置,文件在哪里,这就造成了混乱。所以,就有所谓的 Filesystem Hierarchy Standard(FHS) 标准出炉了。

也就是说,FHS 的重点在于规范每个特定的目录下应该要放置什么样子的数据而已。

事实上,这个 FHS仅是规范出在根目录 ( / ) 底下各个主要的目录应该是要放置什么样的文件而已。 FHS 定义出两层规范出来,第一层是 / 底下的各个目录应该要放置什么样内容的文件数据,例如 /etc 应该要放置设定档, /bin 与 /sbin 则应该要放置可执行档等等。第二层则是针对 /usr 及 /var 这两个目录的次目录来定义的。 例如 /var/log 放置系统登录文件、 /usr/share放置共享数据等等。

在一个文件系统中,我们总有一个被称为 根目录 的东西,这个根目录里包含了所有其他目录和文件。

在Windows中,可以有好几个根目录,比如说C盘(C:\)是你的硬盘的根目录,H盘可能是你的光盘驱动器的根目录。

Linux中有且只有一个根目录,就是 / 。

如果以较为完整的树状目录来视察的话, 可以将整个 Linux 的树状目录绘制成下图:

Linux是一个真实的、完整的 多用户多任务 的 *** 作系统,多用户多任务就是可以在系统上建立多个用户,而多个用户可以在同一时间内登录同一系统执行各自不同的任务,而互不影响。例如某台Linux服务器上有4个用户,分别是root、www、ftp和MySQL,在同一时间内,root用户可能在查看系统日志,管理维护系统;www用户在修改自己的网页程序;FTP用户可能在上传软件到服务器;MySQL用户在执行自己的sql查询,每个用户互不干扰,有条不紊地进行着自己的工作,而每个用户不能越权访问,比如www用户不能执行MySQL用户的查询 *** 作,FTP用户不能修改www用户的网页程序,由此可知, 不同用户具有不同的权限,每个用户在权限允许的范围内完成不同的任务,Linux正是通过这种权限的划分与管理,实现了多用户多任务的运行机制。

Linux下用户是根据角色定义的,具体分为三种角色:

超级用户 :系统管理员,拥有对系统的最高管理权限,默认是root用户

普通用户 :只能对自己目录下的文件进行访问和修改,具有登录系统的权限,例如上面的www、FTP用户等

虚拟用户 :也叫“伪”用户,这类用户最大的特点就是不能登录系统,他们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。例如系统默认的bin、adm、nobody用户等,一般运行的web服务,默认就是使用的nobody用户,但是nobody用户是不能登录系统的。

Linux是一个多用户多任务的分时 *** 作系统,如果要使用系统资源,就必须向系统管理员申请一个账户,然后通过这个账户进入系统。这个账户和用户是一个概念,通过建立不同属性的用户,一方面,可以合理的利用和控制系统资源,另一方面也可以帮助用户组织文件,提供对用户文件的安全性保护。

每个用户有用一个唯一的用户名和用户口令。

用户组是具有相同特征用户的逻辑集合 ,有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有10个用户的话,就需要授权10次,显然这种方法不太合理;另一种方法就是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有的用户就具有了和组一样的权限,这就是用户组。 用户分组是Linux系统中对用户进行管理及控制访问权限的一种手段,通过定义用户组,很大程度上简化了管理工作。

用户和用户组的关系有:

一对一:即一个用户可以存在一个组中,也可以是组中的唯一成员

一对多:即一个用户可以存在多个用户组中,那么此用户具有多个组的共同权限。

多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限

多对多:多个用户可以存在多个组中。

linux的语言是c语言写的,c语言是严格区分大小写的,linux命令中大小写也是完全不同的。

终端展现:

登录linux终端后,linux默认的命令行提示信息的格式:

说明 :有些命令即使你使用su root 切换到root用户,仍无法执行。所以还是建议使用su – root

x (access directory): x 与能否进入该目录有关

简单地说,Linux是一套免费使用和自由传播的类Unix *** 作系统,它主要用于基于Intel x86系列CPU的计算机上。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。

Linux最早由一位名叫Linus Torvalds的计算机爱好者开发,他的目的是设计一个代替Minix的 *** 作系统,这个 *** 作系统可用于386、486或奔腾处理器的个人计算机上,并且具有Unix *** 作系统的全部功能。

Linux以它的高效性和灵活性著称。它能够在个人计算机上实现全部的Unix特性,具有多任务、多用户的能力。Linux可在GNU(“不是UNIX”工程的缩写)公共许可权限下免费获得,是一个符合POSIX标准的 *** 作系统。Linux *** 作系统软件包不仅包括完整的Linux *** 作系统,而且还包括了文本编辑器、高级语言编译器等应用软件。它还包括带有多个窗口管理器的X-Windows图形用户界面,如同我们使用Windows NT一样,允许我们使用窗口、图标和菜单对系统进行 *** 作。

Linux之所以受到广大计算机爱好者的喜爱,主要原因有两个,一是它属于自由软件,用户不用支付任何费用就可以获得它和它的源代码,并且可以根据自己的需要对它进行必要的修改和无约束地继续传播。另一个原因是,它具有Unix的全部功能,任何使用Unix *** 作系统或想要学习Unix *** 作系统的人都可以从Linux中获益

1、超级用户概念与重要性在所有Linux系统中,系统都是通过UID来区分用户权限级别的,而UID为0的用户被系统约定为是具有超级权限。超级用户具有在系统约定的最高权限范围内 *** 作,所以说超级用户可以完成系统管理的所有工作。我们可以通过/etc/passwd 来查得UID为0的用户是root,而且只有root对应的UID为0,从这一点来看,root用户在系统中是无可替代的至高地位和无限制权限。root用户在系统中就是超级用户。 在系统中,每个文件、目录和进程,都归属于某一个用户,没有用户许可其它普通用户是无法 *** 作的,但对root除外。root用户的特权性还表现在root可以超越任何用户和用户组来对文件或目录进行读取、修改或删除(在系统正常的许可范围内);对可执行程序的执行、终止;对硬件设备的添加、创建和移除等;也可以对文件和目录进行属主和权限进行修改,以适合系统管理的需要(因为root是系统中权限最高的特权用户)。 与超级用户相对的就是普通用户和虚拟(也被称为伪装用户),普通和伪装用户都是受限用户,但为了完成特定的任务,普通用户和伪装用户也是必须的。Linux是一个多用户、多任务的 *** 作系统,多用户主要体现在用户的角色的多样性,不同的用户所分配的权限也不同,这也是Linux系统比Windows系统更为安全的本质所在。 由于超级权限在系统管理中的不可缺少的重要作用,为了完成系统管理任务,我们必须用到超级权限;在一般情况下,为了系统安全,对于一般常规级别的应用,不需要root用户来 *** 作完成,root用户只是被用来管理和维护系统之用;比如系统日志的查看、清理,用户的添加和删除。 在不涉及系统管理的工作的环境下,普通用户足可以完成,比如编写一个文件,听听音乐;用gimp 处理一个图片等...... 基于普通应用程序的调用,大多普通用户就可以完成。 当我们以普通权限的用户登录系统时,有些系统配置及系统管理必须通过超级权限用户完成,比如对系统日志的管理,添加和删除用户。而如何才能不直接以root登录,却能从普通用户切换到root用户下才能进行 *** 作系统管理需要的工作,这就涉及到超级权限管理的问题。 获取超级权限的过程,就是切换普通用户身份到超级用户身份的过程;这个过程主要是通过su和sudo来解决。 2、超级用户在系统管理中的作用 (1)对任何文件、目录或进程进行 *** 作 但这种 *** 作是在系统最高许可范围内的 *** 作,有些 *** 作就是具有超级权限的root也无法完成。比如/proc 目录,/proc 是用来反应系统运行的实时状态信息的,因此即便是root也无法对其进行写 *** 作。 (2)对于涉及系统全局的系统管理 硬件管理、文件系统管理、用户管理以及涉及到的系统全局配置等等......如果执行某个命令或工具时,提示无权限,大多是需要超级权限来完成,比如用adduser来添加用户,这个只能用通过超级权限的用户来完成。 3、超级用户的授权 (1)su命令 su命令就是切换用户的工具。比如我们以普通用户beinan登录的,但要添加用户任务,执行useradd ,beinan用户没有这个权限,而这个权限恰恰由root所拥有。解决办法无法有两个,一是退出beinan用户,重新以root用户登录,但这种办法并不是最好的;二是我们没有必要退出beinan用户,可以用su来切换到root下进行添加用户的工作,等任务完成后再退出root。我们可以看到当然通过su 切换是一种比较好的办法。通过su可以在用户之间切换,如果超级权限用户root向普通或虚拟用户切换不需要密码;而普通用户切换到其它任何用户都需要密码验证。 su 在不加任何参数,默认为切换到root用户,但没有转到root用户家目录下,也就是说这时虽然是切换为root用户了,但并没有改变root登录环境;用户默认的登录环境,可以在/etc/passwd 中查得到,包括家目录,SHELL定义等。 (2)sudo命令 su 的确为管理带来方便,通过切换到root下,能完成所有系统管理工具,只要把root的密码交给任何一个普通用户,他都能切换到root来完成所有的系统管理工作,但通过su切换到root后,也有不安全因素;比如系统有10个用户,而且都参与管理。如果这10个用户都涉及到超级权限的运用,做为管理员如果想让其它用户通过su来切换到超级权限的root,必须把root权限密码都告诉这10个用户;如果这10个用户都有root权限,通过root权限可以做任何事,这在一定程度上就对系统的安全造成了威协,我们绝对不能保证这10个用户都能按正常 *** 作流程来管理系统,其中任何一人对系统 *** 作的重大失误,都可能导致系统崩溃或数据损失,所以su 工具在多人参与的系统管理中,并不是最好的选择,su只适用于一两个人参与管理的系统,毕竟su并不能让普通用户受限的使用,这时最好是针对每个管理员的技术特长和管理范围,并且有针对性的下放给权限,并且约定其使用哪些工具来完成与其相关的工作,这时我们就有必要用到 sudo。 通过sudo,我们能把某些超级权限有针对性的下放,并且不需要普通用户知道root密码,所以sudo 相对于权限无限制性的su来说,还是比较安全的,所以sudo 也能被称为受限制的su ,另外sudo 是需要授权许可的,所以也被称为授权许可的su。 sudo 执行命令的流程是当前用户切换到root(或其它指定切换到的用户),然后以root(或其它指定的切换到的用户)身份执行命令,执行完成后,直接退回到当前用户,而这些的前提是要通过sudo的配置文件/etc/sudoers来进行授权。 (3)编写/etc/sudoers文件 sudo的配置文件是/etc/sudoers ,我们可以用他的专用编辑工具visodu ,此工具的好处是在添加规则不太准确时,保存退出时会提示给我们错误信息。配置好后,可以用切换到授权的用户下,通过sudo -l 来查看哪些命令是可以执行或禁止的。 /etc/sudoers 文件中每行算一个规则,前面带有#号可以当作是说明的内容,并不执行;如果规则很长,一行列不下时,可以用\号来续行,这样看来一个规则也可以拥有多个行。 /etc/sudoers 的规则可分为两类;一类是别名定义,另一类是授权规则;别名定义并不是必须的,但授权规则是必须的。 具体使用可以查看man sudoers。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/9028556.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-24
下一篇2023-04-24

发表评论

登录后才能评论

评论列表(0条)

    保存