运维培训——第一部分 Linux系统知识
Linux基础培训
概述
1 Linux历史
什么是Linux简单地说,Linux是一套免费使用和自由传播的类Unix操作系统,它主要用于基于Intel x86系列CPU的计算机上。
Linux的出现,最早开始于一位名叫Linus Torvalds的计算机业余爱好者,当时他是芬兰赫尔辛基大学的学生。他的目的是想设计一个代替Minix(是由一位名叫Andrew Tannebaum的计算机教授编写的一个操作系统示教程序)的操作系统,这个操作系统可用于386、486或奔腾处理器的个人计算机上,并且具有 Unix操作系统的全部功能,因而开始了Linux雏形的设计。
2为什么需要Linux?
如果你真的喜欢计算机,Linux绝对是你梦想中的操作系统。它比现在所有其他的操作系统更加有意思。
代码开放的Linux的安全性和性能是由基于每个人都可以阅读,批评和改进的全面解决方案,也是当今科学计算领域的集中体现。
3 Linux对我会有用吗?
只有你自己可以回答这个问题。Linux是一个成熟,强壮,安全和应用广泛的类似于Unix的操作系统。Linux的强壮和应用广泛来自于一定的代价-为了安装和维护Linux可能要求你必须是一个计算机的行家。Linux在操作系统和应用程序正确安装完毕后,相对来说很方便使用。
4 Linux对新手来说太难了
可能是这样的。但问题是:你是不是真的想要学习它?本书的作者里没有一个是计算机科学背景的,但是我们天天在使用它而且我们喜欢它。
5 Linux有什么好处?
Linux可以给你:
一个新潮,非常稳定,多用户,多任务的环境。
标准的平台。
无法超越的计算能力,可移动性和适应性。
6 Linux和Unix有什么不同?
Linux和UNIX的最大的区别是,前者是开发源代码的自由软件,而后者是对源代码实行知识产权保护的传统商业软件。
另外两大区别:
1) UNIX系统大多是与硬件配套的,而Linux则可运行在多种硬件平台上.
2) UNIX是商业软件,而Linux是自由软件,免费、公开源代码的.
7 Linux和Windows区别
Linux 的应用目标是网络而不是打印。
Windows最初出现的时候,这个世界还是一个纸张的世界。Windows的伟大成就之一在于您的工作成果可以方便地看到并打印出来。这样一个开端影响了 Windows 的后期发展。
同样,Linux 也受到了其起源的影响。Linux 的设计定位于网络操作系统。它的设计灵感来自于 Unix 操作系统,因此它的命令的设计比较简单,或者说是比较简洁。由于纯文本可以非常好地跨网络工作,所以 Linux 配置文件和数据都以文本为基础。
8主流操作系统介绍
Windows Server
优点:操作易用性是除了XP以外最人性化的版本,安全性是目前为止Windows全系列服务器产品中最好的,线程处理速度跟随硬件的发展有不小的提升,管理能力也有不小的提升,是目前Windows服务器中主流产品。
缺点:安全性能仍有待更加完善,由于管理功能的增加,需要处理的线程更加繁杂,如果使用同样的硬件,2000系列比2003系列产品在处理速度上会稍快。
Unix
有IBM Aix、HP unix、SUN Solaris等
优点:支持大型文件系统与数据库,传承了UNIX一贯的高能级系统安全性、稳定性,对于系统应用软件的支持比较完善。
缺点:沾染了Unix系操作系统的通病,人性化界面肯定谈不上好了;由于IBM-AIX属于非开源代码,技术层面未能得到有效推广,使得相关维护人员的雇佣成本比较高,不利于占有率更多的中低端市场的进一步推广与普及;SUN对于源代码的开放时日尚短,目前也还没有享受到开源代码比较新颖的技术创新推动;两者面向企业的服务器端都是采取收费服务的方式,用户在享受两家高稳定性与安全性的硬件产品同时与服务器操作系统技术支持服务之时,“物美价廉”的想法是可以作罢了。
Linux
有小红帽系列、红旗Linux、SuseLinux等
Unix的历史久于linux。Linux的思想源于Unix。
优点:源代码的开放,使得该类服务器操作系统的技术完善从民间得到了其他厂商无法比拟的雄厚力量,在此基础上所形成的一件服务器操作系统成品是任何力量都不可忽视的,因而其所具有的兼容、安全、稳定的Linux特性也是其他服务器操作系统厂商不容易实现的。
缺点:由于其是基于Unix系统所做的开发修补,属于类Unix模式,这就决定了其系统的兼容性相比其他服务器操作系统兼容的软件来说,还是具有一定差距的;Linux的操作基本也是利用输入代码命令进行应用实现的方式,使得其在人性化方面还是处于相当的劣势,其后果必然导致维护成本的相对偏高。
1 Linux文件系统的层级和结构
Linux上的一切都可以被认为是一个文件。
分区可以联想为文件系统设备节点,例如/dev/hda1。
硬件组成部分可以联想为节点文件,例如/dev/dvd。
被检测到的设备被记录到相应文件,存放在/proc目录下。
Unix和Linux的目录结构是根据官方的“文件系统层级标准(FHS)”制定的。
1.1 Linux文件系统和目录
一些主要的目录结构被主流的Unix/Linux操作系统所使用。这些目录组织起用户文件、驱动、内核、日志、程序、应用程序和更多不同分类。“文件系统层级标准(FHS)”的标准使基于其他Unix操作系统的用户更容易理解基本的Linux。
任何一个“文件系统层级标准(FHS)”开始于根目录,众所周知是一个正斜杠符号(/)。所有的其他目录(如表1-1)都是根目录的子目录。除非他们是独立挂载的,也可以在相同的分区找到这些文件作为根目录。在如下表中,如果不安装相应包将不能看到表中的某些目录。表中展现的只是“文件系统层级标准(FHS)”的一部分。
表1-1:基本文件系统层级标准目录 |
|
目录 |
描述 |
/ |
根目录,在“文件系统层级标准(FHS)”里是最顶级目录,所有其他目录都是根目录的子目录,根目录总是挂载在某个分区上。 |
/bin |
基本的命令行应用程序集。不能被独立挂载;否则当用急救盘时,将很难找到这些应用程序。 |
/boot |
包含Linux启动文件集,包含Linux内核。默认100M,通常对于一个标准模块化内核是足够大的。 |
/dev |
从软驱到终端等一切硬件和软件的设备驱动。不能单独挂载。 |
/etc |
最多的基本配置文件目录。 |
/home |
几乎所有用户的家目录。 |
/lib |
内核程序库文件和各种各样命令行应用程序。不能单独挂载。 |
/media |
可移除设备的挂载点。包括软驱,DVD光驱和U盘。 |
/misc |
通过自动挂载器的本地目录标准挂载点。 |
/mnt |
逻辑挂载点;通常用于可移除设备。 |
/net |
通过自动挂载器的网络目录标准挂载点。 |
/opt |
第三方应用文件的存储位置。 |
/proc |
当前正在运行的内核相关的进程集,包括设备分配,例如IRQ端口,I/O地址,DMA信道,IP转发的内核配置设置。 |
/root |
root用户的家目录。 |
/sbin |
系统管理命令集。不能单独挂载。 |
/selinux |
关于Linux当前加强安全配置设置。 |
/smb |
标准的微软网络共享目录的自动挂载点。 |
/srv |
通常用来给非红帽系统作为网络服务器使用 |
/tftpboot |
TFTP服务器安装后产生该目录。 |
/tmp |
临时文件。默认,红帽企业版Linux定期删除该目录的所有文件。 |
/usr |
所有用户可访问的小程序。包括很多系统管理命令和应用。 |
/var |
可变数据,包括日志文件和打印机缓冲。 |
被挂载的目录经常被称为卷。卷可以有多个分区。
在Linux里,“文件系统”有一些不同的意思。例如:
1、一个文件系统可以是参照“文件系统层级标准”;
2、一个单独的分区;
3、一个ext3格式;
4、一个文件系统设备节点,例如/dev/sda1表示挂载一个目录的分区。
1.2多样的介质设备
大多数的PC机有多种基本类型的介质,包括PATA,SATA和SCSI硬盘、软驱、DVD/CD等等。其他介质是通过PC机端口,如串行,并行,USB和IEEE1394。可以使用Linux管理所有这些类型的介质。
大多数介质是自动检测识别的。介质设备在/dev目录下记录。典型介质设备如表1-2所述。
Table 1-2: Media Devices |
|
Media Device |
Device File |
Floppy drive |
First floppy (Microsoft A: drive) = /dev/fd0 |
PATA (IDE) hard drive |
First drive = /dev/hda |
SATA or SCSI hard drive |
First drive = /dev/sda |
Parallel port drives |
First drive = /dev/pd1 |
USB drives |
Varies widely |
IEEE 1394 drives |
IEEE 1394 |
1.3了解/dev下的设备
查看/dev目录下的文件,使用ls-l/dev|more命令。查看一下列表,列表很长。有一个奇怪的现象就是有一些设备是链接到其他地方,也很好理解是什么连接什么。例如:虚拟设备文件/dev/cdrom和/dev/dvd很容易就识别真实的设备并链接。其实,这些设备在Linux系统安装的时候就已经被链接到设备文件上了。例如:如果你安装了打印机和DVD刻录机,如下命令将展示出可能的部件和设备文件的链接情况。
#ls –l /dev/par0
Lrwxrwxrwx 1 root root 3 Mar2909 :37 /dev/par0->lp0
#ls –l /dev/dvd
Lrwxrwxrwx 1 root root 3 Mar2909 :37 /dev/dvd->hdd
这些命令展现的是/dev/par0直接链接到第一个打印机端口,/dev/dvd直接链接到第四个PATA驱动器。
2基本的文件操作和处理
Linux是作为Unix的一个克隆发展起来的,也就是具有相同功能,却是不同代码。两个系统的本质就在于命令行。文件操作和过滤的基本命令可对文件做很多处理。
2.1基本文件操作
两个基本命令组用来管理Linux文件。一组帮助你找到Linux文件和目录。另外一组实际上做一些创建文件的操作。记住一点,在任何一个Linux系统里,有一个很好的功能就是命令补全特性。输入一个或几个首字母,使用TAB键,可以补全命令,文件名或者路径。
几乎大部分Linux命令都有很多可选项,可选项能让你做得更多。如果你对这些命令缺少了解,可以使用man帮助。学习这些开关。并且对这些选项多做尝试,只有练习,练习,再练习才能真正理解这些命令的能量。
2.2登录退出
用户登录系统时为了使系统能够识别自己必须输入用户名和密码经系统验证无误后方能进入系统
在系统安装过程中可以创建两种帐号超级用户帐号和普通用户帐号。
Linux使用者一般为普通用户而系统管理员一般使用超级用户帐号完成一些系统管理的工作,如果只需要完成一些由普通用户帐号就能完成的任务,建议不要使用超级用户帐号,以免无意中破坏系统用户。登录分两步进行,第一步输入用户的登录名,系统根据该登录名来识别用户;第二步输入用户的口令,该口令是用户自己选择的一个字符串,对其他用户是保密的,是在登录时系统用来辨别真假用户的关键字。
login
超级用户的用户名为root密码在安装系统时已设定系统启动成功后屏幕显示下面的提示
localhostlogin:
这时输入超级用户名"root"然后键入回车键此时用户会在屏幕上看到输入口令的提示
localhostlogin:root
Password:
这时需要输入口令,输入口令时口令不会在屏幕上显示出来如果用户输入了错误的口令就会在屏幕上看到下列信息loginincorrect.这时需要重新输入当用户正确地输入用户名和口令后就能合法地进入系统屏幕显示
[root@loclhost/root]#
此时说明用户已经登录到系统中可以进行操作了这里"#"是超级用户的系统提示符普通用户在建立了普通用户帐号以后就可以进行登录了不论是超级用户还是普通用户需要退出系统时在shell提示符下键入exit命令即可还有其他退出系统的方法但上面一种是最安全的
reboot
以root用户登录Linux操作系统后执行reboot命令可以重新启动Linux系统
[root@loclhost/root]#reboot
shutdown
shutdown命令可以安全地关闭或重启Linux系统它在系统关闭之前给系统上的所有登录用户提示一条警告信息该命令还允许用户指定一个时间参数可以是一个精确的时间也可以是从现在开始的一个时间段精确时间的格式是hh:mm表示小时和分钟时间段由+和分钟数表示系统执行该命令后会自动进行数据同步的工作该命令的一般格式
shutdown[选项][时间][警告信息]
命令中各选项的含义为:
-k并不真正关机而只是发出警告信息给所有用户
-r关机后立即重新启动
-h关机后不重新启动
-f快速关机重启动时跳过fsck
-n快速关机不经过init程序
-c取消一个已经运行的shutdown
需要特别说明的是该命令只能由超级用户使用
例1系统在十分钟后关机并且马上重新启动
#shutdown –r +10
例2系统马上关机并且不重新启动
#shutdown –h now
Halt
关闭服务器命令
说明:若系统的runlevel为0或6,则关闭系统,否则以shutdown指令(加上-h参数)来取代
参数:
-n:在关机前不做将记忆体资料写回硬盘的动作
-w:并不会真的关机,只是把记录写到/var/log/wtmp档案里
-d:不把记录写到/var/log/wtmp档案里(-n这个参数包含了-d)-f:强迫关机,不呼叫shutdown这个指令
-i:在关机之前先把所有网络相关的装置先停止
-p:当关机的时候,顺便做关闭电源(poweroff)的动作
范例:
halt -p关闭系统后关闭电源。
halt -d关闭系统,但不留下纪录。
Poweroff
直接关闭服务器电源。
2.3基本内容
Linux里的一切都可以归纳为文件。目录是作为承载其他文件作为容器的特殊类型的文件。驱动器是文件。早前讨论过,设备是特殊类型的文件。关联USB硬件的节点也是文件,等等。对这些文件的了解,你需要一些基本命令告诉你这些文件在哪里,那个文件什么情况,怎么处理。
波浪线TheTilde(~)
首先,每一个Linux用户都有一个家目录。你可以使用这个波浪线来表示任何当前活动用户的家目录。例如,root用户,在任意目录,执行cd~命令,就回到/root目录。Oracle用户,在任意目录执行cd ~,就回到/home/oracle目录。在任意目录,执行ls~命令,查看用户家目录内容。(只输入cd命令,后面不跟任何内容,可以达到同样目的)
路径Paths
关于Linux目录有两种路径概念:绝对路径和相对路径。绝对路径是基于根目录(/)的完整路径结构。相对路径是基于当前目录的路径结构。
相对路径在前面不包含斜杠(/)。
绝对路径和相对路径的区别非常重要。尤其是当你创建一个脚本,绝对路径是必须的。否则,脚本在其他路径执行将导致非预期结果。
(.)当前目录;(..)上级目录。
Pwd
在很多情况下,相对于根目录(/)不知道自己在哪个位置。Pwd命令将打印出相对于根目录你所在的目录。一旦你知道你所在的位置,你将决定是否到别的目录。
Cd
在Linux里使用cd命令,引用期望到达的绝对路径,可以很容易改变目录。如果你用相对路径,要根据当前工作目录设置最后目标目录。
Ls
最基本的命令,用来列出当前目录下的文件列表。ls命令,配合正确的可选项,也是相当强大。正确使用ls命令,可以告诉你关于文件的一切内容,例如文件的创建日期,最后访问日期,文件大小。也可以帮你组织你所期望的文件列表。比较重要的应用包括:
Ls –a 展现隐藏文件
Ls –l 长列表形式
Ls –t 基于时间的列表
Ls –I 基于节点码
Ls –ltr 显示最近变化的文件列表(组合可选项)
Mkdir
创建一个目录
$ Mkdir aaa
Rm
删除档案及目录
参数:
-i删除前逐一询问确认。
-f即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r将目录及以下之档案亦逐一删除。
补充说明:执行rm指令可删除文档或目录,如欲删除目录必须加上参数"-r",否则预设仅会删除文档。
Du
统计目录(或文件)所占磁盘空间的大小。
查看当前目录下user目录的大小,并不想看其他目录以及其子目录:
Du –sh user
-s表示总结的意思,即只列出一个总结的值
2.4查找文件
有两个基本命令用来文件搜索:find和locate
Find
Find命令通过目录和子目录来搜索要查找的文件。例如,如果你想找xorg.conf(GUI配置文件)所在的目录,可以使用如下命令,从根目录开始搜索:
#find / -name xorg.conf
如果是老机器,配置比较低,从根目录搜索范围大,耗时长。如果你知道该文件在/etc子目录下,你可以在/etc目录下开始搜索,使用如下命令:
#find /etc –name xorg.conf
Locate
如果find命令太耗时,RHEL5有一个默认数据库,记录所有文件和目录的信息。使用locate命令搜索几乎瞬间完成。而且locate搜索不需要全名。不足的地方就是locate命令数据库正常是每天更新一次,记录在/etc/cron.daily/mlocate.cron脚本里。可以执行updatedb命令来马上更新数据库。
2.5查看文件
现在你知道了如何查看和了解不同的文件,是时候开始学习如何读文件,复制文件,移动文件操作了。大部分Linux配置文件时文本文件。Linux编辑器是文本编辑器。Linux命令也是被设计来读文本文件的。如果有异议的话,可以使用命令file*在不同的目录检查文件类型。
Cat
读文本的最基本命令就是cat。Cat filename命令将使filename内容全部显示。也可以添加多个文件名,将多个文件的内容按照顺序输出到屏幕。也可以重定向输出到指定文件。
More and less
比较大的文件就需要按照期望的情况来满屏显示。Linux有两个这样的命令:more和less。使用more filename命令,可以从头到位一屏幕一次显示文件内容。使用less filename命令,可以使用PAGEUP和PAGEDOWN键上下双向查看内容,且支持vi风格的搜索功能。
Head and tail
Head和tail命令是独立的命令,相同的使用方法。默认情况是head filename命令查看文件前10行;tail filename查看文件的后10行。可以指定显示行数的选项-nx或-x
如:tail –n15 /etc/passwd或tail -15 /etc/passwd(查看最后15行)
2.6创建文件
很多命令可以用来创建新文件。可以使用文本编辑器创建一个新文件,如vi。
Cp
复制命令,建立副本。
Cp 源文件(原目录) 目标文件(目标目录)
Cp aaa bbb
Mv
在Linux里如果你不能给一个文件改名,那么就移动它。Mv命令彻底给这个文件一个新标签。
1.移动文件夹或文件: mv 源文件名称(或:源文件夹名称) 目标文件夹
如: mv /www/images.zip /www/images/images.zip 文件移动
mv /www/images /www/newwebsite/images 文件夹移动
2.重命名文件 夹或文件:mv 源文件名称(或:源文件夹名称) 新文件名称/新文件夹名称
如: mv /www/images.zip /www/img.zip 文件重命名
mv /www/images /www/img 文件夹重命名
注意:rename命令也可以对文件进行重命名操作,与mv命令的区别就是rename命令可以对文件进行批量重命名,mv不能。Rename只能对文件进行重命名。Mv命令也可以对目录进行重命名。推荐使用mv命令。
Ln
你可以创建一个链接文件。链接文件在设备文件中使用较多,如/dev/dvdwriter和/dev/par0。在确保多用户在他们各自目录里面拥有同一个文件的副本非常有用。
硬链接包含一个文件的副本。硬链接是在同一个区块被创建。Inode码相同。可以在一个目录里面删除硬链接文件,在其他目录该文件依然存在。例如,如下命令将在当前目录下创建Samba配置文件smb.conf的硬链接。
#ln /etc/samba/smb.conf smb.conf
软链接是一个文件的重定向(可以理解为快捷方式);如果创建一个软链接文件,该文件指向源文件。如果删除源文件,软连接文件丧失功能,但软链接文件依然在。如下命令创建一个软链接:
#ln –s /etc/samba/smb.conf smb.conf
2.7文件过滤
Linux里面有很多命令可以帮助你过滤文件内容。简单几个命令就可以帮助你搜索,校验或分类文件内容。有一些特殊的文件类型,该文件类型包含其他文件类型。通俗说法就是“tarball”。(即压缩包tar包,例如.tar.gz或.tar.bz2扩展名的。)
Sort
你可以使用很多种方式进行文件内容排序。默认情况是sort命令按照文档内容每一样第一个字母按照字母顺序进行排序。例如,执行sort/etc/passwd命令,将对文档内容按照所有用户名进行排序。
Grepandegrep
Grep命令在一个文件内搜索关键条目。结果返回包含关键条目的整行内容。例如:
Grep ‘root’ /etc/passwd(locate命令本质上就是另一个版本的grep命令)
Egrep命令更加宽松;允许在搜索关键条目中出现特殊字符进行搜索这些特殊字符,如+,?,|,(,and)。Grep命令也可以在搜索关键条目中搜索这些特殊字符,但是需要使用反斜杠进行转义处理。易用性较差。
Wc
Wc命令是wordcount的简写,即单词计数,能统计出文件中有多少行,多少单词,多少字符。Wc命令的选项也很简单易用,wc –w filename返回文件中有多少个单词。
Sed
Sed命令是streameditor的简写,即流编辑器。允许你搜索,修改文件中的指定的词或者文本流。例如,如下命令将替换opsys文件中每一行第一个Windows单词为单词Linux。然后把结果写到文件newopsys。
# sed 's/Windows/Linux/' opsys>newopsys
如果一行有多个Windows,那么第二个就不会被改变,加上一个参数g将修改每次遇到的该单词。
# sed 's/Windows/Linux/g' opsys>newopsys
2.8文件编辑
vi
--命令行模式
打开文件vi filename
搜索内容/Michael注意vi的搜索是大小写敏感的
保存文档:w或:wq(保存退出)简化为:x
关闭文档:q
放弃修改:q!
编辑文档x(删除当前高亮字符)
dw(删除当前高亮词)
dd(删除当前行)
p(put放置缓冲区的内容)
U(undo恢复先前的修改)
--输入模式
输入内容i(在光标的当前字符之前插入内容)
a(在光标的当前字符之后插入内容)
o(在光标的当前行之下新建一行)
Esc按键(退出输入模式进入命令行模式)
基本操作方向键
pageup
pagedown(ctrl+f)
vipw编辑密码文件/etc/passwd
visudo编辑/etc/sudoers--授权特别用户执行特别的命令,不需要root密码
练习2.8-1使用vi创建一个新用户
在这个练习中,你将使用vi命令,通过编辑/etc/passwd文件创建一个新用户。当然你也可以通过其他方式创建新用户,这次练习帮助你检验
命令行方式的vi技能。
1、打开命令行界面,root用户登录,输入命令vipw,该命令使用vi编辑器打开/etc/passwd文件。
2、让光标走到该文件的最后一行。你应该已经知道很多种方式去通过命令行达到该文件的最后一行,包括向下方向键、pagedown、命令G、甚至K键
3、复制该行。如果你对vi很熟悉的话,应该知道可以使用yy命令把该行复制到缓冲区,然后通过p命令可以粘贴任意次数。
4、改变用户名,用户ID,组ID,用户注释和新用户的家目录。如果你对Linux或Unix有基本的了解,应该知道在/etc/passwd文件中每一行用户的具体家目录。例如:gb,501,501,GordonBrown,and/home/gb。确保相应的用户名对应相应的家目录。
5、按ESC键回到命令行模式。执行:w命令保存文件,然后执行:q命令退出vi。(也可以使用组合命令:wq,保存并退出)
6、使用root用户,执行passwdnewuser命令,授予该用户新密码。
7、在/home目录下创建该用户名的目录,且把/etc/skel目录下的文件复制到/home/user里。
2.9管理命令
在本书中,你将使用大量的管理命令。但是任何一个正在成长中的Linux管理员都应该熟悉至少两个最基本的管理命令:ps和who。
Ps
Ps命令可以让你知道Linux计算机正在运行什么,这是很重要的。Ps命令有很多关键可选项。当你是这去诊断一个问题,得到所有运行进程的列表是很平常的一件事,然后查找特别的程序。例如,如果firefox浏览器突然崩溃了,你就要杀掉相关的进程。psaux|grepfirefox命令将帮助你识别你将要杀掉的进程。
Kill
kill命令可以用于终止后台进程kill命令是通过向进程发送指定的信号来结束进程的kill命令的语法格式很简单,大致有以下两种方式
1、kill[-s信号]进程号,其中发出的信号既可以是信号名也可以对应数字
如kill-91234命令将终止PID(进程号)为1234的进程
2、kill –l 该命令显示信号列表
Who and w
如果你想知道当前登录到你的系统都有哪些用户的时候,就可以使用who和w命令。这两个命令可以帮你识别都有哪些用户登录了,他们终端连接情况,登录的时间,正在运行的进程。
注意:如果你怀疑一个用户名已经被泄密,就可以使用w命令来检查当前正在登录的用户查看终端。如果那个用户正在办公室,但是终端显示一个远程shell连接,这就需要注意。当然w命令也可以识别当前进程就是那个用户本人在运行。
date
1、显示当前的时间
# date
Fri Nov 26
15:20:18 CST 1999
2、设置时间为下午14点36分。
# date -s
14:36:00
Fri Nov 26
14:15:00 CST 1999
3、设置时间为1999年11月28号。
# date -s
991128
Sun Nov 28
00:00:00 CST 1999
Uname
uname 命令可用于大多数 UNIX 和类 UNIX 系统以及 Linux。
功能说明:uname用来获取电脑和操作系统的相关信息。
语 法:uname
[-amnrsvpio][--help][--version]
补充说明:uname可显示linux主机所用的操作系统的版本、硬件的名 称等基本信息。
参 数:
-a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
-m或–machine
显示主机的硬件(CPU)名
-n或-nodename 显示主机在网络节点上的名称或主机名称
-r或–release
显示linux操 作系统内核版本号
-s或–sysname
显示linux内核名称
-v
显示显示操作系统是第几个
version 版本
-p
显示处理器类型或unknown
-i
显示硬件平台类型或unknown
-o
显示操作系统名
–help
获得帮助信息
–version
显示uname版本信息
2.10文件系统管理
Fdisk应用
很好用的通用的磁盘管理工具。Fdisk有很多命令,了解更多需要进入专家模式。
有很多问题需要修改物理硬盘分区,本节讲解Linux命令fdisk应用。
使用fdisk:启动,获得帮助,退出
/dev/had驱动器是PATA/IDE硬盘。计算机或许有其他硬盘,可以通过df和mount命令查看。
关于fdisk还有更多的命令参数,运行x命令获得fdisk额外功能。
fdisk应用:简要介绍
在fdisk命令提示行里,使用命令p显示分区表。查看当前分区表的全部信息。假设有空余空间,可以使用n命令创建一个新分区,或者是主分区(p)或者是逻辑分区(l)。如果不存在扩展分区,也可以创建一个包含逻辑分区的扩展分区。记住只能创建四个主分区,对应数字1-4。主分区中的一个可以重新指定成一个扩展分区。生于分区是逻辑分区,数字等于或大于5。Linux的fdisk应用不能允许在一个硬盘上创建16个分区。
标准格式化文件系统
Linux是Unix的克隆版。Linux文件系统早期是基于Unix可用文件系统发展起来的。第一个Linux操作系统使用的是扩展文件系统(ext)格式。直到几年后,红帽Linux系统使用第二扩展文件系统(ext2)格式。RHEL可以使用其他文件系统,如表4-1所示。
表2.10-1一些Linux标准文件系统类型 |
|
文件系统类型 |
描述 |
ext |
第一个Linux文件系统,仅应用在早期版本的操作系统。 |
ext2 |
ext3格式的基础,默认RHEL文件系统。 |
swap |
Linuxswap文件系统结合专用swap分区。安装RHEL需要至少创建一个swap分区 |
MS-DOSandVFAT |
微软早期文件系统格式 |
ISO9660 |
CD-ROM标准文件格式。 |
NTFS |
微软NT/2000/XP/2003文件格式。当前仅支持只读。 |
/proc |
Linux虚拟文件系统。虚拟意味着在真实硬盘空间并不存在。文件只在需要的时候被创建。用来支持内核配置核显示设备状态。 |
/dev/pts |
LinuxOpenGroup'sUnix98PTY支持的实现 |
NFS |
网络文件系统,这个系统大多用在Linux核Unix计算机之间共享文件核打印机。 |
CIFS |
通用的互联网文件系统是基于微软和IBM网络协议的SMB服务器的后继者。Linux可以使用CIFS和SMB服务器与微软操作系统进行共享文件和打印机。 |
使用mkfs命令创建文件系统
有很多命令可以帮助你创建Linux文件系统。所有命令都是基于mkfs命令。
例如:mkfs.ext2和mkfs.ext3。
如果你重新格式化一个已存在的分区,有两点需要注意:
1、 备份该分区的数据
2、 卸载该分区(unmount)。
有两种方式格式化一个分区。例如,格式化成ext3格式或ext2格式:
#mkfs-text3/dev/sdb5
#mkfs.ext3/dev/sdb5
或
#mke2fs/dev/sdb5
mkfs.msdos(ormkfs.vfatormkdosfs),mkswap
管理ext2/ext3文件系统属性
文件系统属性能帮助你控制其他人对不同文件的操作。这方面的关键命令是lsattr和chattr。最熟悉的应用就是保护文件不被删除,甚至是root用户。例如,管理员可以执行如下命令保护/etc/inittab文件。
#chattr +i /etc/inittab
如果想删除该文件,会得到如下结果:
#rm /etc/inittab
rm:removewrite-protectedregularfile'/etc/inittab'?y
rm:cannotremove'/etc/inittab':Operationnotpermitted
如上所示,对/etc/inittab文件加上了不可改变属性。
#lsattr /etc/inittab
----i--------/etc/inittab
文件系统管理和自动挂载器
在你使用目录里的文件之前,需要把一个格式化成可读文件系统的分区上挂载目录。Linux通常使用/etc/fstab配置文件来自动处理挂载任务。当启动Linux时,指定目录被挂载到配置的分区。挂载选项需要一些说明,特别是那些可移除介质。
如果链接丢失或介质被移除会遇到问题。当你配置一个服务器的时候,你可以挂载远程计算机。也可以临时使用可移除介质,如U盘或Zip驱动器。自动挂载进程能比较合适,众所周知的是sutofs。能在需要的时候自动挂载制定目录,固定一段期间后,自动卸载目录。
管理/etc/fstab
Linux在/etc/fstab文件中存储本地和远程挂载的文件系统信息。使用文件编辑器打开这个文件。每一行配置不同的文件系统。/etc/fstab文件的大致内容如下所示:
LABEL=//ext3defaults11
LABEL=/boot/bootext3defaults12
none/dev/ptsdevptsgid=5,mode=62000
none/procprocdefaults00
none/dev/shmproctmpfs00
/dev/hda3swapswapdefaults00
LABEL=/usr/usrext3defaults12
LABEL=/tmp/tmpext3defaults12
LABEL=/var/varext3defaults12
LABEL=/home/homeext3defaults12
如上所示,每个文件系统有六个相应区域,从左到右在表4-4进行介绍。记住,这是一个配置文件。你可以在/etc/mtab文件里查看实际挂载的分区。
表2.10-2/etc/fstab文件的字段描述,从左到右 |
|
区域名 |
描述 |
标号 |
列出挂载的设备。如果挂载了,你将在/etc/mtab文件里找到相应分区。例如,如果你在这个文件看到/etc/hda2,可以通过e2label/dev/hda2命令核对标号。 |
挂载点 |
标记挂载文件系统的目录 |
文件系统格式 |
描述文件系统类型。有效地文件系统类型包括ext,ext2,ext3,msdos,vfat,devpts,proc,tmpfs,udf,iso9660,nfs,smb,swap |
挂载选项 |
下面章节介绍 |
转储值 |
或0或1.值1代表当你退出Linux,数据通过dump(8)命令自动保存到硬盘。 |
文件系统检验顺序 |
在启动进程执行过程中,通过fsck(8)命令决定文件系统顺序。根目录(/)文件系统应该设置成1,其他本地文件系统应该设置成2.类似于/mnt/cdrom的可移除文件系统应该设置为0,意味着在Linux启动进程执行过程中不检验。 |
练习2.10-1:创建一个新的LVM分区
LVM比本章先前介绍的一些内容要更加重要。关于LVM的详细内容,
增加一个新硬盘。
1、 创建新分区。把一个或多个这样的分区添加到LinuxLVM文件系统里。这样做可以使Linuxfdisk应用程序容易操作。
2、 备份/home。指定LVM文件系统给/home分区。
3、 使用vgscan应用程序扫描LinuxLVM文件系统为其他LVM命令创建一个数据库。
4、 使用pvcreate/dev/partition命令为集合创建卷。
5、 使用vgcreategroupname/dev/partition1/dev/partition2…命令增加期待的卷到一个指定卷组。
6、 现在可以创建一个逻辑卷。使用lvcreate-LxyM-nvolnamegroupname命令,其中xy是卷的大小,groupname是先前创建的卷组名。
7、 最后你可以使用mkfs命令把该逻辑卷格式化成希望的文件系统(通常为ext2或ext3),执行lvcreate命令返回相应的设备名。
挂在其他分区
Mount命令可以用来挂载本地和网络上的分区到指定目录。挂载点不固定;你可以挂载一个CD驱动器或者一个Samba共享服务器到一个已有相应授权的任意空目录。
基于“文件层级标准”,已有标准的挂载点。如下命令挂载一个VFAT文件系统的软驱,一个指定ISO9660标准的CD,和一个Zip驱动器。这些设备在系统中是不同的。如果不信,可以使用dmesg|less查看启动信息。
#mount-tvfat/dev/fd0/mnt/floppy
#mount-tiso9660/dev/cdrom/mnt/cdrom
#mount/dev/sdc
Df
说明:df命令可显示所有文件系统对i节点和磁盘块的使用情况。
该命令各个选项的含义如下:
-a显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统。
-k以k字节为单位显示。
-h以可读性较高的方式来显示信息。
-i显示i节点信息,而不是磁盘块。
-t显示各指定类型的文件系统的磁盘空间使用情况。
-x列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反)。
-T显示文件系统类型。
举例:
#df –k
#df –h
#df –T
2.11压缩打包
Gzip and bzip2
gzip和bzip2命令类似,压缩和解压缩文件,使用不同的算法。如果你想压缩一个大图片文件,可以使用如下命令中的一个即可:
#gzip big.jpg
#bzip2 big.jpg
加上a.gz或a.bz2后缀,使用相应的算法压缩。
可以使用-d开关来解压这些文件:
#gzip –d big.jpg.gz
#bzip2 –d big.jpg.bz2
Tar
Tar命令最开始是为了磁带归档数据开发的。然而,在现在很普遍的用于集中大量的文件。尤其是从一个目录。例如,如下命令备份/home目录的信息到.tar.gz文件。
#tar czvf home.tar.gz /home
这是很少在开关参数前面不需要短划线的命令。命令的细节是创建(c)一个归档,压缩(z),详细(v)模式,使用如下的文件名(f)。
相对应的是,你可以使用如下命令从文件中抽取(x):
#tar xzvf home.tar.gz /home
压缩指定(z)是关联到gzip命令.
2.12程序安装
包是什么?通常来讲,RPM包就是文件集合。包含一个特定程序或应用的文件组,包含二进制安装脚本以及配置文件和文档。同时包含如何安装和卸载这些文件的指令。
一个RPM包的命名通常包含版本,释放版,架构等。例如,一个包penguin-3.4.5-26.i386.rpm,其中包的版本为3.4.5,释放打版号26,i386表示intel32位架构。
安装RPM包
有三种基本命令可以安装RPM包。如果该包有依存关系包没有安装,该包安装失败。
#rpm –I system-config-samba-*
error:Faileddependencies:
sambaisneededbysystem-config-samba-1.2.39-1.1.noarch
常用的安装包命令以及可选项为:
#rpm –ivh packagename
可选项-i表示安装包,可选项-vh表示详细模式监控安装过程。
卸载RPM包
使用rpm–e命令卸载系统里的包。卸载前,RPM检查是否与其他有依存关系,如果有,卸载包失败。
RPM包查询
最简单的RPM查询是验证是否一个特定包已安装。如下命令验证Samba包已经安装:
#rpm –q samba
samba-3.0.23c-2.el5.2
表2.12-1:rpm--查询可选项 |
|
rpm查询命令 |
意义 |
Rpm -qa |
列出所有已安装包。 |
Rpm -qf /path/to/file |
识别/path/to/file目录里相关包 |
Rpm –qc packagename |
从包名里列出仅有的配置文件 |
Rpm –qi packagename |
显示包的基本信息 |
Rpm –ql packagename |
列出包内所有文件 |
Rpm –qR packagename |
标记所有依存关系;否则不能安装。 |
源代码包安装
基本用法
(1)配置:解压目录下./configure
(2)编译:解压目录下make
(3)安装:解压目录下makeinstall
2.13 FTP应用
FTP命令如下:#ftpftp.redhat.com
表2.13-1:标准的FTP客户端命令 |
|
命令 |
描述 |
cd |
在远程主机改变当前工作目录 |
ls |
在远程主机查看文件列表 |
get |
从远程主机下载一个文件 |
mget |
从远程主机通过同配置或者全名下载很多文件 |
put |
从本机上载到远程主机一个文件 |
mput |
上载一组文件到远程主机 |
pwd |
列出在远程主机的当前工作目录 |
quit |
退出FTP会话 |
!ls |
列出本地当前目录的文件 |
!cd |
为upload/download目录变更本地主机目录 |
!pwd |
列出在本地主机的当前工作目录 |
2.14通配符
有时你不知道确切的文件名或确切的搜索条目。这就是通配符的优势所在。基本的通配符将在表1-4中展示。
表2.14-1:Shell中的通配符 |
|
通配符 |
描述 |
* |
任意数量的数字字母文字字符(或者一个字符都没有)。例如,lsab*命令将显示类似于如下内容:ab,abc,abcd |
? |
一个单一数字字母文字字符。例如,lsab?命令将显示类似内容:abc,abd,abe |
[] |
范围选项。例如,lsab[123]命令将显示类似内容:ab1,ab2,ab3;另外一种方式,lsab[X-Z]命令将显示类似内容:abX,abY,abZ |
注:通配符的使用与了解往往都很有限。
2.15查看帮助
(1)简明帮助:命令名--help|less
(2)更多帮助:man命令名
(3)info命令名
(4)help命令名
2.16注意事项
1、linux区分大小写
不管是命令还是文件名,目录名都区分大小写。
文件abcd和ABCD是两个完全不同的文件。
目录aaa和AAA是两个不同目录。
大写的命令无法执行,可选项-r和-R具有不同的意义。
2、 变量的分隔符为冒号“:”
linux下是英文冒号“:”作为分隔符;windows下是英文分号“;”来分隔;
3、linux使用斜杠“/”和windows使用反斜杠“\”。
3基本安全
Linux计算机的基本安全是基于文件权限上的。默认的文件权限是通过umaskshell变量授予的。SUID和SGID权限可以让所有用户访问指定文件。所有权是基于创建文件的默认用户和组ID。管理权限和所有权包含命令有chmod,chown,chgrp。
用户和组拥有文件。用户和组有密码。如果在影子密码组件(ShadowPasswordSuite)中配置配置用户和组,安全性将会加强。很明显,更多的安全级别可以使用,但是安全选项,类似于访问控制列表和Linux安全加强都是红帽考试的必考项目。
3.1文件权限
Linux文件权限是简单明了的。下面内容可以使用如下命令获得ls-l/sbin/fdisk:
-rwxr-xr-x 1 root root 95572 Jan1108:10 /sbin/fdisk
在这个列表的左侧显示文件的权限。一共十个字符。第一个字符决定是否是一个正规文件还是一个特殊文件。接下来的9个字符分为3组,分表表示拥有者,组,其他。字母的含义很简单:r=read(可读),w=write(可写),x=execute(可执行).表3.1-6详细描述:
Table3.1-6:DescriptionofFilePermissions |
|
位置 |
描述 |
1 |
文件类型;-=标准文件,d=目录,b=设备,l=链接文件 |
234 |
授予拥有者(User)对该文件所具有的权限 |
567 |
授予组用户(Group)对该文件所具有的权限 |
890 |
授予其他用户(Others)对该文件所具有的权限 |
Chmod,chown,chgrp关键命令帮助你管理文件的权限和所有权。Chmod命令使用权限的数字值关联所有者,组和其他用户。在Linux里,用如下数值来授予权限:r=4,w=2,andx=1。例如,如果你够疯狂的话,可以把fdisk命令授予所有用户可读,可写和可执行权限,只需执行这个命令即可:chmod777/sbin/fdisk。命令chown和chgrp用来调整相关文件的拥有者和组用户。
3.2用户,组用户和掩码
Linux,像Unix一样,使用所有者和组用户进行配置。任何使用Linux的用户都被创建一个用户名,类似于“guest”。可以查看/etc/passwd文件。图3.2-1就是密码文件的内容。
图3.2-1:/etc/passwd
正如你所了解,各种类型的用户名都在/etc/passwd文件中。甚至一些Linux服务,例如mail,news,ftp和apache等都有自己的用户名。任何情况下,/etc/passwd文件都遵循一个特殊格式,详细信息请看第6章。密码文件中两个新用户的用户ID(UID)和组ID(GID),分别是500和501,用户的家目录和用户名匹配。下一个新建用户的UID和GID将是502,依此类推。
用户可以使用pssswd命令修改自己的密码。Root用户可以修改任何用户的密码。例如,root用户要是修改oracle密码,只需执行#passwdoracle即可。
3.3掩码(umask)
红帽linux中采用umask方式给你的工作带来方便,特别是使用过其他Unix风格环境的用户。你不能配置umask来允许你自动创建一个可执行文件。这是为了提升安全级别:如果少数文件拥有可执行权限,破坏者(cracker)将利用这些可执行文件来破坏系统。
注:Linux世界里,黑客是好人,很简单,就是为了创造更好的软件。破坏者是出于恶意闯进你的系统里。
任何时候你创建一个新文件,默认权限是基于umask授予的。在过去,umask值要和文件的数值权限进行抵消。例如,如果umask值为000,被创建文件的默认权限为777-000=777。即对所有用户都具有可读,可写,可执行权限。如果最后值为666,这个新文件将不具有可执行权限。
当你输入umask命令的时候,你会得到一个四位输出,如0022,第一位umask输出总是0,并且未被使用。将来,第一位数字有可能被用来直接对新文件授予包括SUID或SGID值。
无论umask是什么值,红帽linux的新文件都不会自动被授予可执行权限。也就是说,umask的值为0545还是0454,最后文件获得权限是一样的。你需要使用chmod命令来单独授予特定文件可执行权限3002
3.4 SUID和SGID
权限是一个很危险的事情。但是你需要给予所有用户有权使用一些程序。在linux系统里面,授权全部可读,可写,可执行权限是很危险的。另一个解决办法就是给予一个文件SUID和SGID权限控制。当使用的时候,这些权限控制允许对对象文件配置相应的权限。例如,一个普通的联系就是对KPPP互联网链接应用设置SUID控制,然后需要电话猫的用户就可以使用KPPP拨入互联网。可以使用如下命令来设置SUID控制:
#chmod u+s /usr/sbin/kppp
SGID权限很有用,当你设置一个特别的用户组,这个用户组需要在一个特别的任务或项目上共享文件,SGID就可以很好的解决该问题。
3.5影子密码
当你查看默认的/etc/passwd文件的时候,你应该发现第二列是一个“x”。早期版本的linux在这列上有一个加密版本的用户密码。并且/etc/passwd文件任何用户都可以访问,一个破坏者复制该文件并且在linux计算机上解密了用户密码。这个问题就引出影子密码组件的开发。
3.6影子密码组件
历史上来说,所有需要管理的linux用户和组信息都保存在/etc/passswd和/etc/group文件里。这些文件包含密码,并且默认对所有用户都是可读的。
影子密码组件建立了一个额外的保护层。用来在影子文件里(/etc/shadow和/etc/gshadow)加密用户和组密码,影子文件仅对具有root权限的用户可读。
影子密码组件在红帽linux里默认被使用。标准的创建用户和组命令,自动将加密密码存放在影子密码组件文件里。
4用户管理
部分内容是学习如何建立用户环境,讲学习如何建立Linux启动shell配置脚本,以至于符合用户登录后的需要。讲学习如何为用户或组用户创建和执行磁盘使用管理策略。特定的组能让用户安全的共享文件。
4.1用户账号管理
你需要知道如何创建和配置用户。也就是意味着你需要知道如何在配置文件和用户设置的用户账号相关的环境。也需要知道如何指定默认bashshell相关的配置文件。最后,需要知道如何通过配额来限制每个用户的资源分配。
RHEL5安装完成后,只有一个单用户可以登录:root。应该创建一些标准的用户账号。即使只有自己使用系统,最好也创建一个非管理员账户来完成日常工作。然后尽在需要的时候使用root账号来管理系统。增加用户账户有多种应用,包括使用vi文本编辑器在密码配置文件上进行处理(手工方式),useradd命令(命令行方式),红帽用户管理应用(图形方式)。
用户账户分类
有三种基本的linux用户账户类型:管理员(root),标准账户,服务账户。
管理员root账户是安装linux后自动创建,在你的linux机器所有服务具有管理权限。破坏者控制了root账户,也就获得系统的全部控制权。
标准用户拥有执行标准任务的必要权限。可以访问一些程序,如word,数据库和Web浏览器。他们可以在自己拥有的家目录存储文件。标准用户不能正常拥有管理权限,就不能意外删除致命的操作系统配置文件。
服务账号例如Apache,Squid,mail都拥有自己的私有服务账号。
基本命令行工具
命令行界面有两种方式增加用户。可以直接使用vi编辑/etc/passwd文件增加用户。另外一种就是命令行方式。
直接增加用户
1、打开/etc/passwd文件,如果使用vi编辑器,也可以使用vipw命令。如果增加一个标准用户,通常在文件的末尾处可以看到,会看到如下内容:
mj:x:500:500:MichaelJang:/home/mj:/bin/bash
/etc/passwd文件中的每个字段,使用冒号分割,具有各自目的,详细描述见表4.1-1。
表4.1-1:/etc/passwd文件剖析 |
||
区域 |
例子 |
目的 |
用户名 |
mj |
用户登录名。用户名可以包括中杠(-)或下划线(_)。然而不能是数字或包含大写字母。 |
密码 |
x |
密码。应该看到一个x,或一个星号(*),或一个可见的随机字母和数字组合。一个x指向/etc/shadow实际的影子密码文件。一个星号意味着该账户不可用。一个随机的子母和数字组意味着加密密码。 |
用户ID |
500 |
用户的唯一用户ID(UID)。默认情况下,UID起始号码为500。 |
组ID |
500 |
用户相关的组ID(GID)。默认情况下,RHEL为每个新用户创建一个新组,与UID相同。其他Linux和Unix系统授予所有用户默认用户组(GID=100)。 |
用户信息 |
MichaelJang |
你可以在这个区域输入任何信息。标准选项包含用户全名,电话号码,e-mail地址,或实际地址。也可为空。 |
家目录 |
/home/mj |
默认情况下,RHEL在/home/username设置新的家目录。 |
登录Shell |
/bin/bash |
默认情况,RHEL授予用户bashshell。可以修改为任何已安装的合法shell。 |
你可以直接在/etc/passwd文件里复制并编辑已有用户的行。仅需要替换新用户的相应信息即可。确保至少修改用户名和用户ID。
2、假设你分配给新用户一个新的家目录,要记得创建这个目录。并确保该新用户对此目录以及该目录下所有文件拥有所有者权限。
3、然后开始构造新用户的家目录。默认可用的用户环境在/etc/skel目录下。可以复制该目录下的内容到新用户的家目录里。/etc/skel目录的更多内容,下面章节详细介绍。
增加用户到一个组
每个linux用户被授予到一个组内。RHEL5默认情况下是每个用户拥有一个自己的私有组。用户是该组的唯一成员,在/etc/group配置文件中定义。编辑该文件,如果使用vi编辑器,可以使用vipw命令。可以看到类似如下的行内容:
mj:x:500:
vp:x:501:
managers:x:1000:mj,vp
内容是易懂的。用户mj和vp是自己组的成员,也是managers组的成员。/etc/group行的四个字段描述见表4.1-2。
表4.1-2:/etc/group文件剖析 |
||
区域 |
例子 |
目的 |
组名 |
mj |
每个用户获得自己拥有的组,与用户名相同。也可以创建唯一组名。 |
密码 |
x |
密码。应该看到一个x,或一个可见的随机字母和数字组合。一个x指向/etc/gshadow实际的影子密码文件。一个随机的子母和数字组意味着加密密码。 |
组ID |
500 |
组ID与用户关联。默认情况下,RHEL为每个用户创建一个新组。如果你想创建一个特别的组,如managers,需要授予一个远离标准序列号的GID。否则,正常的GID和UID将偏离序列。 |
组成员 |
mj,vp |
列出组成员的用户名。如果为空,则用户名和组名相同,且为仅用组成员。 |
通过命令行方式增加用户
可以通过useradd命令自动增加用户。如果你想增加一个新用户pm,执行命令useraddpm即可把用户添加到/etc/passwd文件中。默认创建一个家目录/home/pm;从/etc/skel目录下增加标准文件到家目录里;授予默认的shell,/bin/bash。但是useradd命令是多用途的。表4.1-3可以查看对应的命令参数。
表4.1-3:useradd命令可选项 |
|
可选项 |
目的 |
-u UID |
覆盖默认授予的UID。默认情况下,从500开始递增。 |
-g GID |
覆盖默认授予的GID。默认情况下,与UID相同。 |
-c info |
输入对用户名的注释。 |
-d dir |
覆盖用户的默认家目录,/home/username |
-s shell |
覆盖用户的默认shell,/bin/bash。 |
设置密码
可以输入passwd username命令授予用户密码。
删除用户账号
最简单的命令是使用userdel username命令删除用户,默认情况下该命令不删除该用户的家目录。Userdel –r username命令删除用户家目录以及家目录内的所有文件。
标准的用户管理命令
Usermod
Usermod命令修改/etc/passwd文件中的可变设置。也允许你设置账号过期或设置用户所属组。
#usermod –e 2007-06-08test1 (设置用户test12007-06-08账号过期)
#usermod –G specialtest1 (使test1成为special组的一员)
Chage
设置用户账号密码过期。
限制su命令的访问
限制普通用户使用su命令升级为root超级管理员账号。通过组管理。
4.2基本用户环境
红帽linux的每个用户当登录到系统后都有一个环境。这个环境定义了linux在那个目录下的程序可以运行,登陆后的提示信息,终端类型等。
家目录和/etc/skel
默认情况下,当你创建一个新用户,默认的配置文件集在用户的家目录被创建。这些默认文件是存储在/etc/skel目录下的隐藏文件。
家目录
家目录就是用户登陆红帽系统后的起始位置。家目录对大多数用户是/home/username,其中username是登陆用户名。每个用户在自己的家目录具有写权限,所以每个用户对自己的文件具有自由的读写权限。后面章节将学习如何配置磁盘配额,所以用户不能占用超过正常分配的磁盘空间。
/etc/skel
/etc/skel目录包含新用户的默认环境文件。Useradd命令和用户管理工具在创建新用户时复制这些文件到家目录。/etc/skel的内容是可变的,依赖于已经安装了什么。/etc/skel的标准文件如表4.1-5所示。
表4.1-5/etc/skel包含的默认家目录文件 |
|
文件 |
目的 |
.bashrc |
基本的bash配置文件包含对通用/etc/bashrc配置文件的引用。当启动bashshell时,将运行已经配置好的命令,如适当的假名rm='rm-i'。 |
.bash_logout |
当退出bashshell时,将被执行的文件,包含类似这样目的的命令,退出后清屏。 |
.bash_profile |
配置bash启动环境。在适当的位置增加环境变量或修改PATH的目录。 |
注意:以藏文件是以点(.)开头的。查看隐藏文件,使用ls–a命令。
4.3 Shell配置文件
所有系统级别的shell配置文件都保存在/etc/目录下。这些文件是bashrc,profile和/etc/profile.d目录下的脚本文件。这些文件和脚本是每个用户家目录隐藏文件的补充。
/etc/bashrc
/etc/bashrc文件主要用于假名和函数,主要用于系统级别。打开该文件,阅读该文件的每一行,即使不懂编码,也可以看的出来,这个文件为每个用户设置了如下bashshell参数:
1、 设置了一个umask值,新创建文件的默认权限。对root和系统用户(UID小于100)支持一个权限集,标准用户有另外一个权限集。
2、 指定一个提示标识,如$或#。
3、 包含/etc/profile.d目录里*.sh文件的设置。
这些设置被每个用户家目录里的.bashrc文件调用。这些设置也支持每个用户家目录里的.bash_history和.bash_logout文件。
/etc/profile
/etc/profile文件用于系统级别环境和启动的文件。
/etc/profile.d/
实际/etc/profiled不是脚本,而是脚本所在的一个目录。正如刚才说明的,/etc/profile文件运行这个目录下的脚本。
4.4创建和维护特别的组
红帽linux与其他linux以及unix系统不同的是新用户如何归于一个组。其他linux允许成员间共享文件。不幸的是,也就意味着同一个组成员间可以访问其他用户的家目录。用户并不是都愿意把家目录里面的文件与其他用户共享。
从另一方面来说,RHEL给予每个用户一个用户ID和组ID。也就意味着用户私有组模式。可以不用担心其他用户可以看到自己家目录的文件。
共享目录
很多用户在组内工作,组员之间共享文件。可以设置一组用户访问一个特定用户的家目录,或你可以设置一个目录给一个特定组。当你配置好一个共享目录,你可以设置一个组的所有者,然后增加其他用户到这个组里,在/etc/group配置文件中进行设置。当你在这个目录设置组ID(SGID),这个目录下新建的任何文件都将继承这个组ID。假如已经设置了相应的权限,组内的成员可以访问该目录下的文件。
创建一个有用的共享目录,有一些基本的步骤。例如,你想创建一个共享目录/home/accshared,针对组织内的会计人员。完成如下步骤:
1、 创建共享目录
#mkdir/home/accshared
2、 在你的会计部门下创建一个拥有很多成员的组。给予一个组ID,且不与现有组或用户ID冲突。如下行所示在/etc/group文件中增加一行。也可以使用红帽用户管理工具。确定组名为accgrp。
accgrp:x:5000:robertc,alanm,victorb,roberta,alano,charliew
3、 设置相应的所有权给新建的共享目录。如下命令保证了accgrp组内的组员对该目录具有控制权。
#chownnobody.accgrp/home/accshared
#chmod2770/home/accshared
2770说明:第一位数字(2)表示“设置组ID位”(setgroupIDbit),即SGIDbit。当一个目录被设置SGID位,该目录下被创建的文件自动拥有组权限。有两种方式设置SGIDbit:
chmodg+s/home/accshared
chmod2770/home/accshared
剩余的位数对于任何有经验的linux或Unix用户来说都是基本知识。770设置可读,可写,可执行权限给每个拥有该目录的用户和组。但是这个组的所有者是nobody,那么组的所有者就是任何账户。也就是说,只有accgrp组内成员拥有可读,可写和可执行权限。
练习4.4-1:通过SGID位控制组的所有权
1、创建新用户,并设置密码。检查/etc/passwd和/etc/group文件,确认用户私有组被创建。
#useradd test1;passwd test1
#useradd test2;passwd test2
#useradd test3;passwd test3
2、 编辑/etc/group文件,增加一个组,组名为tg1。Test1和test2是组员。
tg1:x:9999:test1,test2
操作前,确保组ID并未使用(即:9999)。
3、 为tg1组创建一个共享目录:
#mkdir /home/testshared
4、 修改共享目录的用户和组所有权:
#chown nobody.tg1 /home/testshared
5、 test1和test2分别登陆。分别进入testshared目录并创建文件。如下所示(发生了什么?):
$date>>test.txt
$touch abcd
6、 现在用root用户设置testshared目录的组写权限:
#chmod 770 /home/testshared
7、 使用test1重新登录,在新目录里试着创建文件。结果很好。
$cd /home/testshared
$date>>test.txt
$ls –l test.txt
8、 现在检查虚拟文件的所有权。你觉得tg1组内的其他用户可以访问这个文件么?
$ls–l
9、 使用root用户对该目录设置SGID位:
#chmod g+s /home/testshared
Or #chmod 2770 /home/testshared
10、 重新回到test1账户并创建其他文件。检查文件的所有权。你觉得test2用户可以访问这些文件么?
11、 现在使用test2账号登陆,进入到/home/testshared目录,创建不同的文件,使用ls–l命令再次检查文件的权限和所有权。(将发现没有问题了,使用test1账户访问看看)
12、 使用test3登陆后,验证在这个目录是否可以创建文件,是否能查看该目录下的文件。
5 Shells
Shell就是一个用户接口程序。Linux命令shell就是允许你使用各种系统命令与计算机进行交互的提示。在正确的文件权限下,可以在脚本中设置命令,在规定的时间执行,甚至在午夜。Linux shells可以使用多种序列执行命令,依赖于如何管理每个命令的输入和输出。命令被解释的方式部分决定于每个shell的变量和参数。不同shell环境中的部分变量是相同的。
Linux的默认shell是bash,其他shell在一些用户群体也是很流行的。一旦你安装了相应的RPM包,就可以使用这些shell,如果愿意,可以再/etc/passwd文件中为单独用户修改默认shell。
5.1基本shell编程
“真正的”linux管理员编制他们自己的脚本。他们创建脚本是因为他们不想一直坐在电脑前。当无人在办公室的时候,脚本程序可以使linux自动备份相应目录。当很少有人在使用系统的时候,脚本帮助linux处理数据库。如果你不是一个程序员,不要担心,linux编程没有想象的那么难。例如,crontab工具命令自动生成大量不同的脚本。Cron系统将在第6章详细讨论。
如果你很熟悉shell命令和编程,你可以找到一些RedHatLinux的shell程序例子在/etc/cron.daily目录
5.2变量和参数
变量可以改变,参数是设置的。Bashshell包含大量标准环境变量。Env命令将显示这些默认变量值。一个很重要的变量就是PATH,你可以使用echo$PATH进行查看。当你运行一个命令的时候,在PATH中罗列的目录将自动被搜索。例如,如果你想运行/sbin目录下的fdisk命令的时候,你可以使用如下命令:
$/sbin/fdisk
然后,如果/sbin目录在PATH里面,就无需引用/sbin目录,如下命令也是有效的:
$fdisk
你可以很容易修改PATH变量。例如,如果你想加/sbin目录到PATH里面,运行如下命令即可:
#PATH=$PATH:/sbin
#exportPATH
Root用户的/sbin目录已经在默认的PATH里面。绝大多数参数都是关于Linux配置文件的设置,大部分在/etc目录下。例如,/etc/resolv.conf文件使用nameserver参数来体现为网络服务的DNS服务器。
练习5-1:检验PATH
在这个练习中,你将检验标准的PATH和root用户。
1、 作为一个正规的用户应该直接登录到Linux命令行。如果登录到GUI图形界面系统,也要打开终端进入命令界面。由命令行提示,运行如下命令并记录结果:
$echo$PATH
2、 从正规用户命令行界面,用超级用户登录。需要root用户密码。
$su
Password:
3、 再次运行如下命令并记录结果。与正规用户的结果进行比较。有什么不同?
#echo$PATH
4、 退出Linux。如果是按照步骤1,2,3,你需要输入两次exit命令才能退出。
5、 现在用root用户登录Linux。在命令行提示下,在运行如下命令并记录结果:
#echo$PATH
6、 观察不同的地方。你将发现root用户在PATH里有更多的目录。现在你知道了为什么很多Linux专家都用root用户登录来做重量级的管理工作了。这也是为什么我也推荐你用root用户登录来参加RHCE和RHCT考试。
5.3脚本执行和权限
任何Linux文件都能作为可执行文件。于是如果这个文件包含一系列可以被shell解析的命令,那么文件里的命令将被执行。如果你想让Linux运行你创建的脚本,你需要授予可执行权限。
5.4继承的环境
改变shell很容易。当默认的Linuxshell是bash,很多有经验的unix用户喜欢Kornshell。一旦使用set命令进行设置,环境变量在shell间变换是不变的。相对而言,当shell改变的时候,甚至用户的切换,umask变量都会改变。例如,正规用户和root用户的umask就典型的不同。
5.5管道,输入/输出,错误和重定向
Linux使用三种基本数据流。数据进入,数据出来,错误被发到其他位置。这些流被称为标准输入流(stdin),标准输出流(stdout),和标准错误流(stderr)。正常情况下,输入来自键盘,输出到屏幕,错误发送到缓冲区。错误信息也被显示出来(作为文本流2)。在下面的例子中,相对cat命令来说,filename是标准输入。
#cat filename
当你运行catfilename,文件内容发送到屏幕作为标准输出。可以重定向每一种文件输入或文件输出的数据流。例如,如果你有一个程序叫database,一个有很多数据的数据文件,数据文件的内容可以使用左重定向箭头(<)发送到database程序里。如下所示,数据文件作为标准输入:
#database<datafile
标准输入也可以来自命令行的左侧。例如,如果你需要滚动查看启动信息,你可以使用管道来组合dmesg和less命令:
#dmesg|less
Dmesg命令的输出,被重定向作为less命令的标准输入,允许你滚屏查看输出,类似于一个单独的文件。
标准输出很容易重定向。例如,如下命令使用右方向键(>)把ls命令的标准输出发送到filelist文件中。
#ls>filelist
可以用双重定向箭头(>>)把标准输出放到已经存在文件的末尾,例如ls>>filelist.
如果你坚信一个特定程序会产生错误,可以使用如下命令重定向错误流:
#program 2>err-list
(0– 标准输入流,1–标准输出流,2–标准错误流)
例子:ps -ef|grep "ora_"|grep -v grep|awk '{ print $2 }'|xargs kill –9
6基本的TCP/IP网络
6.1工具和命令
在linux计算机上少量的命令可用来管理TCP/IP组件。
三个最重要的命令是:ping,ifconfig,netstat,setup,ntsysv。
Ping
Ping命令用来检测本地网络连通性。根据本节的需要,假设你的IP地址为192.168.122.43,网关为192.168.122.99.如果你有网络连接问题,应该使用ping命令。
首先,测试你的计算机TCP/IP的完整性:
#ping 127.0.0.1
正常情况下,ping命令会持续操作,使用CTRL-C来终止。你需要检测是否已经连接到LAN,需要ping自己的IP地址:
#ping 192.168.122.43
如果没有问题,就需要ping网络里的其他计算机地址。然后开始追踪互联网的路由。Ping网关地址,也就是192.168.122.99。如果可能的话,网络已经连接到互联网。最后,ping互联网上的计算机地址也是工作的。
你可以使用类似www.google.com主机名来代替IP地址。如果主机名不工作,那么问题就出在DNS,BIND,nameserver。
Ifconfig
Ifconfig命令帮助检查和配置网络适配器。运行ifconfig命令找到计算机上的网络适配器信息。你可以使用ifconfig设置IP地址或硬件端口信息。
修改ip地址
即时生效: #ifconfig eth0
192.168.0.20 netmask 255.255.255.0
启动生效: 修改/etc/sysconfig/network-scripts/ifcfg-eth0
修改defaultgateway
即时生效: #routeadd default
gw 192.168.0.254
启动生效: 修改/etc/sysconfig/network-scripts/ifcfg-eth0
修改dns
修改/etc/resolv.conf
修改后可即时生效,启动同样有效
修改hostname
即时生效: #hostname fc2
启动生效: 修改/etc/sysconfig/network
将网卡禁用 ifconfig eth0 down
将网卡启用 ifconfig eth0 up
Netstat
Netstat命令是多用途的;可以帮你查看网络连接后信道的使用,连接状态等等。一个重要的使用,netstat–r,显示路由表信息,告诉你向哪里发送信息。
Setup
网络信息设置。
Ntsysv
配置系统服务
7标准网络服务的了解
Linux是为了网络服务而存在的。很多标准的网络服务相关的编码就已经集成到linux内核中。标准的linux网络服务的功能性了解是很必要的。本书很多内容的介绍都是假定你已经了解了网络协议,mail服务,主机名和IP地址管理,Web服务等等。
红帽linux中,网络服务往往是单独安装。一些服务包括客户端和服务器端不同的包。一些网络服务需要/etc/xinetd.conf文件激活,该文件读取/etc/xinetd.d目录下的激活文件。其他网络服务直接通过/etc/init.d目录下的脚本直接激活。
7.1网络文件系统(NFS),本地的和远程的
第一个在Unix和linux计算机上的网络系统就是NFS。理想情况下,NFS实现了一个无缝的linux接口;例如,你可以在网络上一个服务器上为所有用户建立/home目录。在网络上,服务器和客户端都需要NFS。
首先,NFS支持确实是内核的一部分,在/proc文件系统中有备案。如果不在那里,你需要激活内核中的nfs和相关组件(nfsd,lockd,sunprc)。使用如下命令检查已安装的组件:
#lsmod|more
把没有包含在列表中的组件做一个记录。根据任何缺失组件名称运行如下命令(如:modprobenfs)根据一个标准的红帽linux安装,应该把这个组件加到lsmod列表中,然后添加到内核中,在/proc/filesystems列表中。
一旦共享了一个NFS目录,可以通过servicenfsstart命令激活NFS守护进程。你将在第2章中中看到一个通过NFS服务供应商的红帽linux安装文件的例子。
一旦NFS配置完成,你可以在服务器中/etc/exports文件中发现共享目录,然后通过如下近似命令挂载共享目录:
#mount –t nfs nfsserver:/home/mhome
7.2 Sendmail和Postfix
一些人认为sendmail是linux系统管理员最大的考验(或许最头痛的事情)。Sendmail配置文件(sendmail.cf和submit.cf)是复杂的,不应该被吓到。通过.mc文件的帮助,定义你需要的架构和协议是很容易的,实现网络上的邮件收发。
7.3 POP,IMAP
POP协议和IMAP协议都单独支持一个服务器到客户端的规则集。如果POP3是把邮件发送到客户端的当前标准的话,那么IMAP4对用户通过不同计算机处理邮件来说就更加复杂。
7.4文件传输协议(FTP)
或许最基本的文件共享协议依然是通用的FTP。明确为文件传输而建立;FTP的文件传输通常比其他协议要快。
对NFS和Samba,FTP协议需要服务器和客户端。FTP服务器可以一名访问,也就是接受任何人连接,或者可以配置一个特别的用户名和密码。通常来说,linuxFTP服务器的共享文件存放在/var/ftp目录。红帽linux现在使用VerySecureFTPdaemon(vsFTPd)作为仅有的FTP服务器。
7.5域名服务(DNS)
如果在互联网上有一种把所有网站的域名和IP地址存放在一个单一文件里的应用方式,那么就不需要DNS了。DNS系统允许你在世界各地不同的服务器建立数据库的不同部分。如果DNS服务器没有找到结果,可以向其他DNS服务器寻求帮助。
7.6动态主机配置协议(DHCP)
IPv4地址是不足的。DHCP被设计用来定量配给IP地址。DHCP服务器在有限的时间内租给一个网络计算机一个指定IP地址。DHCP服务器可以通过BOOTP协议在不同网段出租IP地址。
7.7 Samba
最早为Microsoft和IBM计算机开发的网络系统是基于ServerMessageBlock(SMB)格式。开发者最早创建的Samba只允许Linux通过SMB格式参与微软工作组和域的交互。在工作组中进行文件交流就像是贵族一样。可以作为一个服务器。当前版本的Samba甚至可以基于windowsNT风格配置一个主域控制器或基于windows2000/XP/2003/Vista现用目录服务成员服务器。
7.8 Web服务
Apache是迄今为止互联网在用最流行的Web服务器。是红帽linux的标准安装部分。主要的配置文件是/etc/httpd/conf/httpd.conf。配置是基于/etc/httpd目录下的组件扩展数组。基本的HTML文件,图标和CGI小应用安装在/var/www目录。主要的Apache日志文件部分存放在/var/log/httpd目录。最大型的Web站点日常日志文件可以增长到几百兆。
7.9网络信息服务(NIS)
网络信息服务以前是作为“黄页”为人所知,是linux和其他Unix风格计算机的用户名和密码的集中式数据库。NIS可以作为/etc目录下大量的其他配置文件的集中式数据库。网络上不同计算机的标准化配置都可以帮助系统管理员。
7.10长期的互联网服务守护进程(xinetd)
一些少量频繁使用的网络服务并不适用自己的守护进程,却配置成xinetd。你可以在/etc/xinetd.d目录查看已安装的xinetd服务。已安装的服务有rsync,time,swat,telnet等。都被/etc/init.d/xinetd脚本默认定义控制管理,还有/etc/xinetd.conf文件。
8基本网络安全
Linux网络安全有五个基本构成。
1、 计算机的安全能帮助你管理网络上哪台计算机能收发信息。
2、 端口的安全能帮助你阻止其他人通过这些服务闯入网络。
3、 地址解析的安全能帮你隐藏网络内的计算机。
4、 规则的安全能帮助你精细管理允许通过网络的数据类型。
5、 SElinux的安全帮助你在完全不同级别上管理网络服务。
红帽linux包含一些帮助你配置防火墙和SElinux的工具:system-config-securitylevel(红帽安全级别配置工具)和system-config-selinux(SElinux管理工具)。
允许和拒绝
/etc/hosts.allow和/etc/hosts.deny文件能帮助你管理哪些计算机是允许通过网络的。你可以在每个文件中通过计算机名,IP地址,网络或域名指定计算机。这将帮助你限制一些对少量信任计算机的访问,例如公司内的计算机,或想保护某个计算机,避免引起问题。
安全端口
TCP/IP有65,536个端口,像TV频道一样的工作。如果你开放所有端口,你就让破坏者有很多选择来闯进你的网络。使用防火墙,你可以创建一个屏障,打开需要的端口即可。
网络地址解析
大多数局域网管理员建立网络地址解析(NAT)作为IPv4网络的一个必然课程。自从网络地址近于枯竭,在局域网内通常是使用私有IP地址,只有网关计算机一个IP地址直接连接到互联网。
例如,当局域网内的计算机想要访问一个网页,NAT发送网关的IP地址给互联网,局域网外没人知道请求网页的真正源头。
Iptables
Iptables命令有三种基本方式查看数据包:输入,输出或转发。有这几种方式和其他参数,你可以通过说明书建立你自己的防火墙来控制包的通过,包的拦截或直接转发到其他地方。
一旦配置好一个防火墙并启动它,相应规则存放在/etc/sysconfig/iptables文件里。
9硬件和安装
9.1硬件兼容
Linux对最新的硬件支持并不好,如果在最新的硬件上面安装Linux,很可能无法通过图形界面进行安装和使用,只能通过文本模式进行安装,最后也只能通过文本模式使用linux。
Linux对低端的设备,旧设备支持非常好,这是linux的一个优点。Linux可以在64MB内存的机器上运行良好。如果使用图形界面最小内存为192MB。
启动安装进程提示,有三种基本选项:
图形模式默认的模式,红帽通过CD或网络安装,默认都是图形模式。在boot提示处直接按ENTER键即可。
文本模式当图形模式无法安装的时候,可以启动资源消耗最小的文本模式。
网络安装在boot处输入linuxaskmethod将通过网络连接安装红帽系统。
9.2命名约定
Linux有简单的磁盘分区命名标准:三个字母后面一个数字。
第一个字母表示驱动器类型(h表示IDE/EIDE,s表示SATAorSCSI)。第二个字母是d表示硬盘。第三个字母表示硬盘的相对位置,从a开始。例如:第一个ATA/IDE驱动器是hda,然后是hdb,hdc,hdd。
后面的数字是基于主分区,扩展分区或逻辑分区的相对位置。主分区能包含操作系统的启动文件。硬盘也可以配置成一个扩展分区,一个扩展分区最多12个逻辑分区。
9.3练习分区
微软操作系统不是必须需要计划分区的。如果是服务器,无论使用windows还是linux,应该非常小心的预先计划磁盘使用和分区。这只是初步练习,关于分区内容需要考虑更加深入。
1、 在一张纸上,画一个矩形表示计算机的一个硬盘。
2、 按照linux方式标记硬盘(第一块硬盘:/dev/hda,第二块硬盘:/dev/sda,第三块硬盘:/dev/sdb)。
3、 通过这个图表来计划如何对每个硬盘进行分区。你应该已经知道linux是由很多目录组成的。想一下你要分配给一些主要目录多少空间,例如/home,/var,/usr,/boot。别忘记给swap分区分配一些空间。
9.4单独的文件系统
通常,应该在硬盘上创建多个分区安装linux。这是很好的处理。首先,RHEL通常配置成至少两个文件系统:一个linux本地文件系统系统,一个linuxswap文件系统。第二,如果linux是和其他操作系统安装在同一个计算机上,最好给每个系统设置独立的分区。
9.5稳定和安全
在第一章就介绍了,linux是通过文件系统层级标准(FHS)组织起来的,包含很多目录。可以设置这些目录对应一些或很多硬盘分区。在安装时,RHEL默认对应3个分区:根目录“/”,/boot目录,swap分区。对于linux服务器来说,推荐爱你配置是如下目录应有独立分区:/,/boot,/usr,/tmp,/var,/home。其他分区也可以存储集合数据,数据库服务,Web(/var/www/html)相关目录和FTP(/var/ftp/pub)站点等大量数据。
按照这样对硬盘进行分区保持系统,应用和用户文件彼此独立。分区将保护linux内核和其他应用对磁盘空间的利用。文件不能超越分区空间的大小。分区的另外一个优势就是硬盘上的坏点,减少数据风险,减少恢复时间。稳定性增加。
安全性也增强了。多分区可以设置一些目录作为只读文件系统。例如,如果任何用户(包括root用户)都不能对/usr目录做写操作,挂载成只读分区将保护文件被篡改。
虽然创建更多磁盘分区有很多优势,但是也并不是永远都是最好的解决办法。当硬盘空间有限的时候,分区数量将被控制到最小。例如,如果你有4GB的硬盘,要安装3G大小的包,你将没有额外专有空间分给/var目录。你需要swap空间,额外程序,在其他目录的个人私有文件。
基本的存储空间需求
Linux是一个灵活的操作系统。当红帽linux全部安装需要几G空间,早期最小版本的linux甚至适合安装在1.44MB的软盘上。根据需要安装linux,安装相应服务,不安装GUI,也就占用2GB空间。
应该根据需要和计算机的功能来设置linux分区大小。例如,一个邮件服务器的/var目录将需要更多空间,因为邮件文件存储在/var/spool/mail里。可以为/var或/var/spool/mail目录创建一个独立分区。一般情况下,至少给/boot目录设置一个单独分区是明智的。
9.6例子:文件服务器
如果安装的linux系统是作为一个文件服务器,那么就需要按照表9-1来配置分区:
表9-1linux文件服务器的例子分区配置 |
||
文件系统 |
Size(MB) |
挂载目录 |
/dev/sda1 |
100 |
/boot |
/dev/sda2 |
6000 |
/ |
/dev/sda3 |
4000 |
/var |
/dev/sda4 |
8000 |
/usr |
/dev/sda5 |
2000 |
Swapspace |
/dev/sda6 |
20000 |
/home |
/dev/sda7 |
6000 |
/home/shared |
/user文件系统要足够大去容纳主要的服务,例如Samba和linux图形用户接口。大多数磁盘空间已经分配给/var下的日志文件,FTP和Web服务,私有用户文件的/home目录,存储普通文件的/home/shared。如果还有空间剩余,设置逻辑卷给即将增加空间的目录。当然,这只是一个例子。文件共享的磁盘空间分配量要根据用户数量和使用的文件类型。
LinuxSwap空间
Linux设置一个或多个磁盘分区作为交换分区(Swap)来存储内存中不频繁使用的程序和数据。交换分区可以使系统有大量可用内存。然而,如果你没有足够的物理内存,Linux将使用硬盘上的交换空间作为虚拟内存运行当前程序。因为硬盘访问速率是内存的1/1,000,000,这将引起明显的性能问题。
你不能通过购买额外内存来减少swap空间。即使你拥有几GB的内存,Linux依然会将不频繁使用的程序和数据移到swap空间。
通常,Linux(32bit)能使用最大4GB的swap空间,且每个分区不能大于2GB。这4GB的swap空间最多可以扩展到8个分区。典型的经验建议是swap空间应该是内存的2-3倍大小。然后,由于内存的不断增大,swap空间的大小存在争议。
10启动进程
完成本章的学习,将了解启动进程的基础。当RHEL5安装完成,BIOS将指向GRUB启动加载器。GRUB指向并初始化Linux内核,然后执行init进程,第一个Linux进程。Init进程然后初始化系统并进入相应的运行级别。然后Linux启动到特定的运行级别,运行一些列服务。可以定制这个启动进程。
10.1 BIOS初始顺序
不光红帽认证考试的需要了解的内容,BIOS的一个基本了解是对所有计算机用户的一个基本技能。当很多当代计算机允许按照个人选择的介质进行直接启动,例如RHEL5安装盘或一个USB急救盘。你需要了解如何修改BIOS菜单从相应介质的启动。
10.2运行级别
Linux服务是通过运行级别组织起来的。一些运行级别可以重启和挂起Linux。RHEL5的默认运行级别是启动Linux到GUI。
表10-1:Linux运行级别 |
|
运行级别 |
描述 |
0 |
Halt挂起 |
1 |
单用户模式,基于维护(备份/重载)或修复 |
2 |
多用户,带有一些网络服务 |
3 |
多用户,带有网络服务 |
4 |
未用 |
5 |
X11,默认GUI登陆窗口;用户登录到GUI桌面。 |
6 |
重启(千万不要在/etc/inittab里设置默认启动值) |
运行级别是通过脚本控制的,在基于运行级别目录里进行管理。在/etc/inittab里定义默认运行级别。
10.3每个运行级别的功能
RHEL有六种基本的运行级别,在/etc/inittab里进行定义。每个运行级别拥有每个运行级别的功能。例如,在单用户模式,即运行级别1,只允许一个用户连接到Linux系统里。X11模式,即运行级别5,启动Linux到GUI登陆页面。
如果设置默认启动级别为0,linux启动后将关闭,如果设置默认启动级别为6,Linux将进入持续重启循环。
11内核服务和配置
Linux内核存储在/boot目录里。
/proc目录是虚拟文件系统,也就是说该目录在硬盘上不存储任何文件。但是该目录确实查看内核信息的一个窗口。
#ls /proc
#cat /proc/meminfo --查看内存信息
#cat /proc/cpuinfo --查看cpu信息
#top --动态查看cpu和内存信息
11.1高级分区:软件RAID
独立磁盘冗余阵列(RAID)就是一系列可以保存数据的硬盘,甚至某一个硬盘发生灾难性的失败。一些版本的RAID可以保留数据的备份,其他版本的RAID可以通过所谓的奇偶校验位进行重建坏掉硬盘上的数据。
根据定义,RAID有9-10个不同级别,可以组合成不同级别的数据冗余。大部分是基于硬件的RAID。
RAID0
这个级别的RAID提供更快的硬盘读写。然而RAID0不提供数据冗余。至少需要两块硬盘。
硬盘读写时并行操作,也就是同时对两个或多个硬盘进行读写。数据填充在RAID0阵列式相等的。但是不支持数据冗余,一个磁盘坏掉导致所有数据的丢失。RAID0也被称为无奇偶校验磁盘条纹。
RAID1
这个级别的RAID是同样数据在两块硬盘上做镜像。也就是说同样数据集在每个硬盘上都写一次。如果一个硬盘损坏或丢失,所有数据在另外一个硬盘依然存在。RAID1的劣势就是同样数据要写两次,性能差。RAID1也被称为磁盘镜像。
RAID4
这个级别的RAID需要至少3块硬盘。和RAID0相似,数据读写并行操作。其中一块硬盘维护奇偶校验信息,用来重构数据。可靠性增强,但是每次写操作都会更新奇偶校验信息,奇偶校验硬盘式系统瓶颈。RAID4也被称为奇偶校验磁盘条纹。
RAID5
和RAID4一样,RAID5需要最少3块硬盘。与RAID4不同的是RAID5的条纹和奇偶校验信息分散在所有磁盘上。如果一个磁盘损坏,数据可以通过剩余的盘进行奇偶校验重构。RAID不停止;单磁盘损坏,所有数据依然可用。RAID5是大多数情况下的最佳选择:性能很好,数据一致性得到保证。RAID5也被称为奇偶校验磁盘条纹。
RAID6
RAID6只比RAID5多一个好处。也就是最少需要4块磁盘,有两级奇偶校验,能支持阵列中两块磁盘的损坏。
RAID10
该级别RAID是RAID0和RAID1的组合,最少需要四块硬盘。
11.2高级分区:逻辑卷管理(LVM)
逻辑卷管理(LVM)允许你管理活动分区。在LVM之前,安装linux后没有好办法增加或减少分区大小。
例如,如果你发现/home目录分区有额外的磁盘空间,/var目录分区需要更多的空间来存放日志,LVM实现空间的重分配。换句话说,如果你正在管理一个持续增长的网络服务器,新用户不断增多,当/home目录分区已经没有空间了。使用LVM,可以增加一个新物理硬盘来扩展已经存在的/home目录分区。
注意:LVM只能在图形界面使用。