众所周知,Linux系统的ROOT帐号如通微软操作系统的Administrator帐号一样,对于操作系统来说,有着至关重要的作用。如何管理要ROOT帐户,对于Linux系统的安全性以及稳定性至关重要。下面笔者谈谈自己在管理ROOT帐户的一些启示,供大家参考。
启示一:ROOT用户只作为备用帐户。
无论是你自己使用Linux系统,还是企业其他员工使用;又或者只是作为服务器使用,最好都不要直接使用ROOT用户。
如你公司现在员工在使用Linux系统,那么你作为Linux系统的管理员,就不能让员工直接以ROOT帐户进行登陆。而要给他们配置其他的用户,进行日常业务的办公。这主要是因为ROOT帐户对于操作系统来说,具有最高的管理权限。而Linux系统对于员工来说,很多都是陌生的。若给他们这么高的权限的话,系统有时候一不小心改变了某个文件,那么就会导致系统的崩溃。故,在实际帐户管理中,我们需要为普通用户设置一个最小权限的帐户。
其实,在Linxu系统下,普通用户与管理员用户权限的转换没有像微软操作系统那么麻烦。我们只需要通过一些简单的命令,就可以完成权限的转换动作,如此,就可以省去我们频繁注销的麻烦。
如我们某个用户的Linux系统,其除了具有一个 ROOT帐户以外,还有一个SA001的帐户。该帐户只是普通权限,无法对操作系统进行任何的配置动作,包括安装软件或者挂载其他共享文件夹的权限。笔者公司现在在企业内部网络上,还部署了一台文件服务器。现在我们需要给这台操作系统连上文件服务器,但是,用户现在利用的是SA001帐号登陆,我们该怎么办呢?
若我们直接利用SA001普通帐户,执行mount命令进行服务器连接的话,那么系统就会提示我们,这个命令必须在管理员用户权限下才能够运行。若在Windows操作系统下,我们还可以选择“打开方式”中选择以什么身份运行这个命令。但是在Linux操作系统下,我们该如何处理呢?难道需要重新启动系统吗?其实,Linux系统下,权限的转换个人以为,比Windows系统要简单的多。
此时,我们就可以在命令行下,直接输入su,然后输入ROOT帐户的密码,此时,就可以以root身份运行程序。如此的话,我们就可以在这个命令行窗口下,直接利用mount命令,挂载共享目录了。
如现在我们有两个管理员帐户,如一台文件服务器上,装了两个网络应用,分别由两个管理员管理。我们为他们分别设置了管理员帐户,如AD001与AD002,此时,需要以AD002的管理员帐户进行登陆,此时,我们就可以以su –AD002的形式,登陆进去。此时,在这个命令窗口中运行的任何程序,将都是以AD002的身份进行运行。这个操作,是否要比Windows操作系统简便许多。
不过,在这个转换的过程中,我们需要注意两个问题。一是这个权限只是针对你所登陆的窗口,若你退出这个窗口或者在其他窗口中就没有这个管理员权限。如我们现在打开两个终端,在一个终端窗口中利用su命令以管理员身份登陆。此时,我们若在这个终端中运行mount命令的话,可以正常运行。但是,此时,我们若在另外一个终端窗口运行mount命令的话,则仍然会有“没有权限执行这个命令”的错误提示。也就是说,我们在终端窗口中,以su命令,进行管理员权限转换之后,其只对当前的这个终端起效,而对于另外的端口是没有影响的。
另外一个问题,就是若在终端窗口中,利用su命令权限转换后,其对应的环境变量,仍然是原来帐户SA001的环境变量。如我们在Linux系统中,若安装了JAVA程序,并且在root用户下配置好了相关的环境变量后。此时,我们若先以普通用户SA001登陆到系统,并在终端利用su命令,切换到管理员权限之后,我们运行java命令,就会发现系统会提示“没有为JAVA配置环境变量”。可见,我们利用su命令,虽然取得了管理员权限,但是,没有取得其对应的环境变量。
如我们在利用su命令进行权限转换之后,我们还想其对应的环境变量也带过来的话,该怎么办呢?此时,我们就需要在su命令后面添加一个参数,来实现我们的需求。如我们可以以su – (小横杆)命令进行权限的转换,此时,转换过后的环境变量就是root管理员帐户所对应的环境变量。
启示二:直允许root 帐户登陆。
根据笔者的使用经验,笔者认为Linux系统在管理员帐户的管理上,其功能比Windows操作系统要强大、完善的多。
如假设我们需要对装有Oracle数据库的服务器进行恢复动作。我们都知道,在对ORACLE数据库进行恢复的时候,是不允许其他用户连接到这个数据库上面的,否则的话,就会恢复不成功。现在我需要对数据库进行恢复动作,我该如何才能够保证,在数据库恢复期间,其他用户不会连接到这个数据库服务器上呢?除了拔掉网线还有其他更好的方法呢?
如果我们以Linux系统作为数据库服务器的操作系统的话,则就有一个很实用的功能,就可以达到这个目的。
如我们可以在/etc目录中,执行touch nologin命令。执行完这个命令后,会在这个目录下,产生一个nologin为文件名字的文件。此时,当有其他用户试图连上这个服务器的时候,系统就会去判断这个目录下有否这个文件。若存在这个文件的话,则系统就会拒绝除ROOT用户以外的帐户登陆。当我们数据库恢复完成之后,再把这个文件直接删除,其他用户就可以正常登陆了。
当然,要实现这个目的,我们在帐户设置的时候,需要讲究一点技巧。如笔者现在对数据库服务器设置了两个帐户,一个是默认的root帐户,其负责对操作系统级别的维护;另一个帐户是oracle,其只负责对于ORACLE数据库相关的调整动作。如此,我们就可以利用以上的方法,在数据库恢复阶段,只允许root帐户登陆上服务器,其他用户都将不能连接到服务器上。
启示三:忘记了root用户名,我们该如何处理?
通过上面的描述,我们知道root帐户对于Linux操作系统来说,是非常重要的。假设我们现在突然忘记了root用户名的密码,我们该如何处理呢?
我们知道,微软操作系统的用户名密码忘记的话,处理起来会比较麻烦,特别是管理员帐户密码忘记的话,更是一件头疼的事情。在Linux操作系统环境中,若root用户密码忘记的话,还是比较简单的。
1、重新启动Linux系统时,当出现GRUB启动画面时,用上下的方向键选中Linux系统的启动项,然后按E键。
2、此时,Linux的启动项会有稍微的变化。此时,我们选择我们平时启动Linux系统的那一项。然后,再按E键。
3、此时,系统就会显示一个命令行,我们在ro root前面,加入single。然后按回车确认。 此时,就可以直接进入到命令行,我们就可以利用password命令更改root帐户的密码了。
从中我们可以看到,当Linux系统root帐户名密码忘记的话,我们修改起来非常的方便。这虽然给那些健忘的人提供了方便,但是,也给我们Linux系统管理带来非常大的麻烦。因为只要懂得这个方法的人,在没有授权下,就可以擅自更改 root帐户的密码。如此,他们就可以轻易的取得这台操作系统的管理员权限。
虽然Windows操作系统在管理员帐户密码忘记的情况下,处理起来麻烦,但是 至少其保障了操作系统的安全。所以,笔者还是在这方面还是比较倾向于Windows操作系统的处理方式。