鸟哥的Linux私房菜基础篇第三版 -- 目录


服务器端使用的OS,Linux是最最常用的,所以,日常的部署、排查问题,就不可避免的与Linux打交道,日积月累,对Linux就有了多多少少的了解。

反过来,再系统的从头开始,读一本关于Linux基础的书籍,可以进行知识的串联,把一些原先“知道其然”的东西,进化成“知其所以然”。

同时,由于有了相当多的Linux操作基础,对于书籍的阅读很快速,对照实操,事半功倍。


鸟哥,是个台湾人,其“私房菜”系列,本来是其Linux的学习过程,记录成Blog(就像学习笔记、心路历程),然后慢慢的深化、系统,就形成了这个系列的书。

可见学习笔记真是太重要了^_^,如果没有学习笔记,学了,忘了,很难回忆温习,学习的结果会大打折扣...... 更不会有如此经典的书籍,来引导、来教授,教授别人,何尝不是自己总结学习提高的过程呢!


鸟哥专访:http://www.jianshu.com/p/a1efe4873da1        豆瓣书评:http://book.douban.com/subject/1400361/


一名RD如何读这本书


作为一名RD,或多或少都有对Linux的了解,对Linux学习的目的偏应用,所以从这个绝度总结一下对全书26个章节的学习侧重点。

最重要的,必须很好掌握的章节:

第6章(Linux的档案权限与目录配置)、第7章(Linux档案与目录管理)、第9章(档案与文件系统的压缩与打包)、第11章(认识与学习BASH)、第12章(正则表达式与文件格式化处理)、第13章(学习Shell Scripts)、第16章(例行性工作排程)、第17章(程序管理与SELinux初探)

次之,作为思想指引的章节

第1章(Linux是什么)、第2章(linux如何学习)、第5章(首次登入与在线求助man page)、第14章(Linux账号管理与ACL权限设定)

再次之,某些方向比较关注的章节:

第18章(认识系统服务daemons)、第19章(认识与分析登录档)、第22章(软件安装:原始码与Tarball)、第23章(软件安装:RPM,SRPM与YUM功能)

再次之,当做知识重温一下的章节:

第0章(计算器概论)、第8章(Linux磁盘与文件系统管理)

再次之,过去应该玩过的章节:

第3章(主机规划与磁盘分区)、第4章(安装CentOS 5.x与多重引导小技巧)、第10章(vim程序编辑器)

再次之,不常用的章节:

第15章(磁盘配额与进阶文件系统管理)、第20章(开机流程、模块管理与loader)、第21章(系统设定工具(网络与打印机)和硬件侦测、第24章(X Window 设定介绍)、第25章(Linux备份策略)、第26章(Linux核心编译与管理)


第0章、计算器概论


这几年鸟哥开始在大学任教了,在教学的经验中发现到,由于对 Linux 有兴趣的朋友很多可能并非信息相关科系出身, 因此对于计算机硬件及计算器方面的概念不熟。然而操作系统这种咚咚跟硬件有相当程度相关连性, 所以,如果不了解一下计算器概论,要很快的了解 Linux 的概念是有点难度的。因此,鸟哥就自作聪明的新增一个小章节来谈谈计概啰! 因为鸟哥也不是信息相关学门出身,所以,写的不好的地方请大家多多指教啊!^_^


1.计算机:辅助人脑的好工具

1.1 计算机硬件的五大单元

1.2 CPU 的种类

1.3 接口设备

1.4 运作流程

1.5 计算机分类

1.6 计算机上面常用的计算单位(容量、速度等)


2.个人计算机架构与接口设备

2.1 CPU:CPU 的外频与倍频,32 位与 64 位,CPU 等级

2.2 内存

2.3 显示适配器

2.4 硬盘与储存设备

2.5 PCI 适配卡

2.6 主板

2.7 电源供应器

2.8 选购须知


3.数据表示方式

3.1 数字系统

3.2 文字编码系统


4.软件程序运作

4.1 机器程序与编译程序

4.2 操作系统

4.3 应用程序


5.重点回顾

6.本章习题

7.参考数据与延伸阅读

8.针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=31574


第1章、Linux是什么 


众所周知,Linux 的核心原型是1991年由托瓦兹(Linus Torvalds)写出来的,但是托瓦兹为何可以写出 Linux 这个操作系统?为什么他要选择 386 的计算机来开发?为什么 Linux 是免费的?以及目前为何有这么多的 Linux 版本(distributions)呢?了解这些东西后,才能够知道为何 Linux 可以免除专利软件之争,并且了解到 Linux 为何可以同时在个人计算机与大型主机上面大放异彩!所以,在实际进入 Linux 的世界前,就让我们来谈一谈这些有趣的历史故事吧!^_^


1.Linux 是什么

1.1 Linux 是什么

1.2 Linux 之前,Unix 的历史

1.3 关于 GNU 计划


2.Torvalds 的 Linux 发展

2.1 与 Minix 之间

2.2 对 386 硬件的多任务测试

2.3 初次释出 Linux 0.02

2.4 Linux 的发展:虚拟团队的产生

2.5 Linux 的核心版本

2.6 Linux distributions


3.Linux 的特色

3.1 Linux 的特色

3.2 Linux 的优缺点

3.3 关于授权


4.重点回顾

5.本章习题

6.参考数据与延伸阅读

7.针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23871


第2章、Linux 如何学习


目前 Linux 上头有两种主要的操作模式,分别是图形接口与文字接口,那么学习 Linux 要用 X-Window(图形接口)好还是Command Line(文字接口)好?这两种学习心态有什么优缺点呢?此外,有没有良好的入门文件可供参考?Linux 学习有困扰的时候应该要如何发问?要到哪里去搜寻网络资源?还有,怎样进行有智慧的提问?恩!在这一章里面,就让我们好好谈一谈!


1.Linux 当前的应用角色

1.1 企业环境的利用

1.2 个人环境的利用


2.鸟哥的 Linux 苦难经验全都录

2.1 鸟哥的 Linux 学习之路

2.2 学习心态的分别

2.3 X Window 的学习


3.有心朝 Linux 操作系统学习者的学习态度

3.1 从头学习 Linux基础

3.2 选择一本易读的工具书

3.3 实作再实作

3.4 发生问题怎么处理啊?建议流程是这样...


4.鸟哥的建议(重点在 solution 的学习)


5.重点回顾

6.本章习题

7.参考数据与延伸阅读

8.针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23872


第3章、主机规划与磁盘分区


事实上,要安装好一部 Linux 主机并不是那么简单的事情,你必须要针对 distributions 的特性、服务器软件的能力、未来的升级需求、硬件扩充性需求等等来考虑,还得要知道磁盘分区、文件系统、Linux 操作较频繁的目录等等,都的要有一定程度的了解才行,所以,安装 Linux 并不是那么简单的工作喔!不过,要学习 Linux 总得要有 Linux 系统存在吧?所以鸟哥在这里还是得要提前说明如何安装一部 Linux 练习机。在这一章里面,鸟哥会介绍一下,在开始安装 Linux 之前,您应该要先思考哪些工作?好让您后续的主机维护轻松愉快啊!此外,要了解这个章节的重要性,您至少需要了解到 Linux 文件系统的基本概念,所以,在您完成了后面的相关章节后,记得要再回来这里看看如何规划主机喔!^_^


1.Linux 与硬件的搭配

1.1 认识计算机的硬件配备

1.2 选择与 Linux 搭配的主机配备:硬件支持相关网站

1.3 各硬件装置在 Linux 中的文件名


2.磁盘分区

2.1 磁盘连接的方式与装置文件名的关系

2.2 磁盘的组成复习

2.3 磁盘分区表(partition table)

2.4 开机流程与主要启动记录区(MBR)

2.5 Linux 安装模式下,磁盘分区的选择(极重要)


3.安装 Linux 前的规划

3.1 选择适当的 distribution

3.2 主机的服务规划与硬件的关系

3.3 主机硬盘的主要规划(partition)

3.4 鸟哥说:关于练习机的安装建议

3.5 鸟哥的两个世纪案例

3.6 大硬盘配合旧主机造成的无法开机问题


4.重点回顾

5.本章习题

6.参考数据与延伸阅读

7.针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23872


第4章、安装 CentOS 5.X 与多重引导小技巧


Linux distributions 越做越成熟,所以在安装方面也越来越简单!虽然安装非常的简单,但是刚刚前一章所谈到的基础认知还是需要了解的,包括 MBR,partition,boot loader,mount,software 的选择等等的数据。这一章鸟哥的安装定义为“一部练习机”,所以安装的方式都是以最简单的方式来处理的。另外,鸟哥选择的是 CentOS 5.x 的版本来安装的啦!在内文中,只要标题内含有(Option)的,代表是鸟哥额外的说明,你应该看看就好,不需要实作喔!^_^


1.本练习机的规划--尤其是分割参数


2.开始安装 CentOS 5

2.1 调整开机媒体(BIOS)

2.2 选择安装模式与开机,测试内存稳定度

2.3 选择语系数据

2.4 磁盘分区,进阶软件数组建置

2.5 开机管理程序、网络、时区设定与 root 密码

2.6 软件选择

2.7 其他功能:RAM testing,安装笔记本电脑的核心参数(Option)


3.安装后的首次设定


4.多重引导安装流程与技巧

4.1 新主机仅有一颗硬盘

4.2 旧主机有两颗以上硬盘

4.3 旧主机只有一颗硬盘


5.关于大硬盘导致无法开机的问题


6.重点回顾

7.本章习题

8.参考数据与延伸阅读

9.针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=135157


第5章、首次登入与在线求助 man page


终于可以开始使用 Linux 这个有趣的系统了!由于 Linux 系统使用了异步的磁盘/内存数据传输模式,同时又是个多人多任务的环境,所以你不能随便的不正常关机,关机有一定的程序喔!错误的关机方法可能会造成磁盘数据的损毁呢!此外,Linux 有多种不同的操作方式,图形接口与文字接口的操作有何不同?我们能否在文字接口取得大量的指令说明,而不需要硬背某些指令的选项与参数等等。这都是这一章要来介绍的呢!


1.首次登入系统

1.1 首次登入 CentOS 5.x 图形接口

1.2 GNOME 的操作与注销

1.3 KDE 的操作与注销

1.4 X Window 与文本模式的切换

1.5 在终端界面登入 Linux


2. 文本模式下指令的下达

2.1 开始下达指令,语系的支援

2.2 基础指令的操作,date,cal,bc

2.3 重要的几个热键 【Tab】,【ctrl】-c,【ctrl】-d

2.4 错误讯息的查看


3.Linux 系统的在线求助 man page 与 info page

3.1 man page

3.2 info page

3.3 其他有用的文件(documents)


4.超简单文书编辑器:nano


5.正确的关机方法:sync,shutdown,reboot,halt,poweroff,init


6.开机过程的问题排解


7.重点回顾

8.本章习题

9.参考数据与延伸阅读

10.针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23877


第6章、Linux 的档案权限与目录配置


Linux 最优秀的地方之一,就在于他的多人多任务环境。而为了让各个使用者具有较保密的档案数据,因此档案的权限管理就变得很重要了。Linux 一般将档案可存取的身份分为三个类别,分别是 owner/group/others,且三种身份各有 read/write/execute 等权限。若管理不当,你的 Linux 主机将会变的很 【不舒服!@_@】。另外,你如果首次接触 Linux 的话,那么,在 Linux 底下这么多的目录/档案,到底每个目录/档案代表什么意义呢?底下我们就来一一介绍呢!


1.使用者与群组


2.Linux 档案权限概念

2.1 Linux 文件属性

2.2 如何改变文件属性与权限:chgrp,chown,chmod

2.3 目录与档案之权限意义

2.4 Linux 档案种类与扩展名


3.Linux 目录配置

3.1 Linux 目录配置的依据--FHS:/,/usr,/var

3.2 目录树(directory tree)

3.3 绝对路径与相对路径

3.4 CentOS 的观察:lsb_release


4.重点回顾

5.本章习题

6.参考数据与延伸阅读

7.针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23878


第7章、Linux 档案与目录管理


在第六章我们认识了 Linux 系统下的档案权限概念以及目录的配置说明。在这个章节当中,我们就直接来进一步的操作与管理档案与目录吧!包括在不同的目录间变换、建立与删除目录、建立与删除档案,还有寻找档案、查阅档案内容等等,都会在这个章节做个简单的介绍啊!


1.目录与路径

1.1 相对路径与绝对路径

1.2 目录的相关操作:cd,pwd,mkdir,rmdir

1.3 关于执行文件路径的变量:$PATH


2.档案与目录管理

2.1 档案与目录的检视:ls

2.2 复制、删除与移动:cp,rm,mv

2.3 取得路径的文件名与目录名称


3.档案内容查阅

3.1 直接检视档案内容:cat,tac,nl

3.2 可翻页检视:more,less

3.3 资料攫取:head,tail

3.4 非纯文本档:od

3.5 修改档案时间与建置新档:touch


4.档案与目录的默认权限与隐藏权限

4.1 档案预设权限:umask

4.2 档案隐藏属性:chattr,lsattr

4.3 档案特殊权限:SUID,SGID,SBIT,权限设定

4.4 观察文件类型:file


5.指令与档案的搜寻

5.1 脚本文件名的搜寻:which

5.2 档案档名的搜寻:whereis,locate,find


6.极重要!权限与指令间的关系

7.重点回顾

8.本章习题

9.参考数据与延伸阅读

10.针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23879


第8章、Linux 磁盘与文件系统管理


系统管理员很重要的任务之一就是管理好自己的磁盘文件系统,每个分割槽不可太大也不能太小,太大会造成磁盘容量的浪费,太小则会产生档案无法储存的困扰。此外,我们在前面几章谈到的档案权限与属性中,这些权限与属性分别记录在文件系统的哪个区块内?这就得要谈到 filesystem 中的 inode 与 block 了。在本章我们的重点在于如何制作文件系统,包括分割、格式化与挂载等,是很重要的一个章节喔!


1.认识 EXT2 文件系统

1.1 硬盘组成与分割的联系

1.2 文件系统特性:索引式文件系统

1.3 Linux 的 EXT2 文件系统(inode):data block,inode table,superblock,dumpe2fs

1.4 与目录树的关系

1.5 EXT2/EXT3 档案的存取与日志式文件系统的功能

1.6 Linux 文件系统的运作

1.7 挂载点的意义(mount point)

1.8 其他 Linux 支持的文件系统与 VFS


2.文件系统的简单操作

2.1 磁盘与目录的容量:df,du

2.2 实体链接与符号链接:ln


3.磁盘的分割、格式化、检验与挂载

3.1 磁盘分区:fdisk,partprobe

3.2 磁盘格式化:mkfs,mke2fs

3.3 磁盘检验:fsck,badblocks

3.4 磁盘挂载与卸载:mount,unmount

3.5 磁盘参数修订:mknod,e2label,tune2fs,hdparm


4.设定开机挂载

4.1 开机挂载 /etc/fstab 及 /etc/mtab

4.2 特殊装置 loop 挂载(映像档不刻录就挂载使用)


5.内存置换空间(swap)之建置

5.1 使用实体分割槽建置 swap

5.2 使用档案建置 swap

5.3 swap 使用上的限制


6.文件系统的特殊观察与操作

6.1 boot sector 与 superblock 的关系

6.2 磁盘空间之浪费问题

6.3 利用 GNU 的 parted 进行分割行为

7.重点回顾

8.本章习题

9.参考数据与延伸阅读

10.针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23881


第9章、档案与文件系统的压缩与打包


在 Linux 底下有相当多的压缩指令可以运作喔!这些压缩指令可以让我们更方便从网络上面下载大型的档案呢!此外,我们知道在 Linux 底下的扩展名是没有什么很特殊的意义的,不过,针对这些压缩指令所做出来的压缩文件,问了方便记忆,还是会有一些特殊的命名方式啦!就让我们来看看吧!


1.压缩文件档的用途与技术


2.Linux 系统常见的压缩指令

2.1 compress

2.2 gzip,zcat

2.3 bzip2,bzcat


3.打包指令:tar


4.完整备份工具:dump,restore


5.光盘写入工具

5.1 mkisofs:建立映像档

5.2 cdrecord:光盘刻录工具


6.其他常见的压缩与备份工具

6.1 dd

6.2 cpio

7.重点回顾

8.本章习题

9.参考数据与延伸阅读

10.针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23882


第10章、vim 程序编辑器


系统管理员的重要工作就是得要修改与设定某些重要软件的配置文件,因此至少得要学会一种以上的文字接口的文书编辑器。在所有的 Linux distributions 上头都会有的一套文书编辑器就是 vi ,而且很多软件默认也是使用 vi 作为他们编辑的接口,因此鸟哥建议您务必要学会使用 vi 这个正规的文书编辑器。此外, vim 是进阶版 vi ,vim 不但可以用不同颜色显示文字内容,还能进行诸如 shell script,C program 等程序编辑功能,你可以将 vim 视为一种程序编辑器!鸟哥也是用 vim 编辑鸟哥的网页文章呢!^_^


1.vi 与 vim

1.1 为何要学 vim


2.vi 的使用

2.1 简易执行范例

2.2 按键说明

2.3 一个案例的练习

2.4 vim 的暂存档、救援回复与开启时的警告讯息


3.vim 的额外功能

3.1 区块选择(Visual Block)

3.2 多档案编辑

3.3 多窗口功能

3.4 vim 环境设定与记录:~/.vimrc,~/.viminfo

3.5 vim 常用指令示意图


4.其他 vim 使用注意事项

4.1 中文编码的问题

4.2 DOS 与 Linux 的断行字符:dos2unix,unix2dos

4.3 语系编码转换:iconv


5.重点回顾

6.本章习题

7.参考数据与延伸阅读

8.针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23883


第11章、认识与学习 BASH


在 Linux 的环境下,如果你不懂 bash 是什么,那么其他的东西就不用学了!因为前面几章我们使用终端机下达指令的方式,就是透过 bash 的环境来处理的喔!所以说,他很重要吧!bash 的东西非常的多,包括变量的设定与使用、bash 操作环境的建置、数据流重导向的功能,还有那好用的管线命令!好好清一清脑门,准备用功去啰~^_^ 这个章节几乎是所有指令列模式(command line)与未来主机维护与管理的重要基础,一定要好好仔细的阅读喔!


1.认识 BASH 这个 Shell

1.1 硬件、核心与 Shell

1.2 为何要学文字接口的 Shell

1.3 系统的合法 shell 与 /etc/shells 功能

1.4 Bash shell 的功能

1.5 Bash shell 的内建命令:type

1.6 指令的下达


2.Shell 的变量功能

2.1 什么是变量?

2.2 变量的取用与设定:echo,变量设定规则,unset

2.3 环境变量的功能:env 与常见环境变量说明,set,export

2.4 影响显示结果的语系变量(locale)

2.5 变量的有效范围

2.6 变量键盘读取、数据与宣告:read,declare,array

2.7 与文件系统及程序的限制关系:ulimit

2.8 变量内容的删除、取代与替换:删除与取代,测试与替换


3. 命令别名与历史命令

3.1 命令别名设定:alias,unalias

3.2 历史命令:history,HISTSIZE


4.Bash shell 的操作环境

4.1 路径与指令搜寻顺序

4.2 bash 的进站与欢迎讯息:/etc/issue,/etc/motd

4.3 环境配置文件:login,non-login shell,/etc/profile,~/.bash_profile,source,~/.bashrc

4.4 终端机的环境设定:stty,set

4.5 通配符与特殊符号


5.数据流重导向(Redirection)

5.1 何谓数据流重导向

5.2 命令执行的判断依据:;,&&,||


6.管线命令(pipe)

6.1 攫取命令:cut,grep

6.2 排序命令:sort,uniq,wc

6.3 双向重导向:tee

6.4 字符转换命令:tr,col,join,paste,expand

6.5 分割命令:split

6.6 参数代换:xargs

6.7 关于减号 - 的用途


7.重点回顾

8.本章习题

9.参考数据与延伸阅读

10.针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23884


第12章、正则表达式与文件格式化处理


正则表达式(Regular Expression,RE),是透过一些特殊字符的排列,用以“搜寻/取代/删除”一列或多列文字字符串,简单的说,正则表达式就是用在字符串的处理上面的一项表示法,正则表达式并不是一个工具程序,而是一个字符串处理的标准依据,如果您想要以正则表达式的方式处理字符串,就得要使用支持正则表达式的工具程序才行,这类的工具程序很多,例如 vi,sed,awk 等等。


1.前言:什么是正则表达式

1.1 什么是正则表达式

1.2 正则表达式对于系统管理员的用途

1.3 正则表达式的广泛用途

1.4 正则表达式与 Shell 在 Linux 当中的角色定位

1.5 延伸的正则表单时


2.基础正则表达式

2.1 语系对正则表达式的影响

2.2 grep 的一些进阶选项

2.3 基础正则表达式联系

2.4 基础正则表达式字符汇整(characters)

2.5 sed 工具:行的新增/删除,行的取代/显示,搜寻并取代,直接修改


3.延伸正则表达式


4.文件的格式化与相关处理

4.1 printf:格式化打印

4.2 awk:好用的数据处理工具

4.3 档案比对工具:diff,cmp,patch

4.4 档案打印准备工具:pr


5.重点回顾

6.本章习题

7.参考数据与延伸阅读

8.针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23885


第13章、学习 Shell Scripts


如果你真的很想要走信息这条路,并且想要管理好属于你的主机,那么,别说鸟哥不告诉你,可以自动关了系统的好工具:Shell Scripts!这家伙真的是要好好学习学习的!基本上,shell script 有点像是早期的批处理文件,亦即是将一些指令汇整起来一次执行,但是 Shell Scripts 拥有更强大的功能,拿就是他可以进行类似程序(program)的撰写,并且不需要经过编译(compile)就能够执行,真的很方便。加上我们可通过 shell script 来简化我们日常的工作管理,而且,整个 Linux 环境中,一些服务(services)的启动都是透过 shell script 的,如果你对于 script 不了解,嘿嘿!发生问题时,可真是会求助无门哦!所以,好好的学一学他吧!


1.什么是 Shell Script

1.1 干嘛学习 shell scripts

1.2 第一支 script 的撰写与执行

1.3 撰写 shell script 的良好习惯建立


2.简单的 shell script 练习

2.1 简单范例:对谈式脚本,随日期变化,数值运算

2.2 script 的执行方式差异(source,sh script,./script)


3.善用判断式

3.1 利用 test 指令的测试功能

3.2 利用判断符号 []

3.3 Shell script 的默认变数($0,$1...):shift


4.条件判断式

4.1 利用 if...then:单层简单条件,多重复杂条件,检验$1内容,网络状态,退伍

4.2 利用 case... esac 判断

4.3 利用 function 功能


5.循环(loop)

5.1 while...do...done,until...do...done(不定循环)

5.2 for...do...done(固定循环):账号检查,网络状态$(seq)

5.3 for...do...done 的数值处理


6.shell script 的追追踪与 debug

7.重点回顾

8.本章习题

9.参考数据与延伸阅读

10.针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23886


第14章、Linux 账号管理与 ACL 权限设定


要登入 Linux 系统一定要有账号与密码才行,否则怎么登入?不过,不同的使用者应该要拥有不同的权限才行吧?我们还可以透过 user/group 的特殊权限设定,来规范出不同的群组开发项目呢~在 Linux 的环境下,我们可以透过很多方式来限制用户能够使用的系统资源,包括 第11章、bash 提到的 ulimit 限制、还有特殊权限限制,如 umask 等等。透过这些举动,我们可以规范出不同使用者的使用资源。另外,还记得系统管理员账号吗?对!可就是 root 。请问一下,除了 root 之外,是否可以有其他的系统管理员账号?为什么大家都要尽量避免使用数字形态的账号?如何修改用户相关的信息呢?这些我们都得要了解了解的。


1.Linux 的账号与群组

1.1 使用者标识符:UID 与 GID

1.2 使用者账号:/etc/passwd 档案结构,/etc/shadow 档案结构

1.3 关于群组:/etc/group 档案结构,有效与初始群组,groups,newgrp,/etc/gshadow


2.账号管理

2.1 新增与移除使用者:useradd,useradd参考档,passwd,chage,usermod,userdel

2.2 用户功能:finger,chfn,chsh,id

2.3 新增与移除群组:groupadd,groupmod,groupdel,gpasswd 群组管理员

2.4 账号管理实例


3.主机的细部权限规划:ACL的使用

3.1 什么是 ACL

3.2 如何启动 ACL

3.3 ACL 的设定技巧:setfacl,getfacl,ACL 的设定(user,group mask,default)


4.使用者身份切换

4.1 su

4.2 sudo:速冻指令,visudo(/etc/sudoers)(账号,群组,限制指令,别名,时间间隔,配合 su)


5.用户的特殊 shell 与 PAM 模块

5.1 特殊的 shell:/sbin/nologin,nologin.txt

5.2 PAM 模块简介

5.3 PAM 模块设定语法:验证类别(type)、控制标准(flag)、模块与参数

5.4 其他相关档案:limits,conf


6.Linux 主机上的用户讯息传递

6.1 查询使用者:w,who,last,lastlog

6.2 使用者对谈:write,mesg,wall

6.3 使用者邮件信箱:mail


7.手动新增使用者

7.1 一些检查工具:pwck,pwconv,pwunconv,chpasswd

7.2 特殊账号,如纯数字账号的手工建立

7.3 大量建置账号模板(适用 passwd --stdin 选项)

7.4 大量建置账号的范例(适用于连续数字,如学号)


8.重点回顾

9.本章习题

10.参考数据与延伸阅读

11.针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23887


第15章、磁盘配额(Quota)与进阶文件系统管理


如果您的 Linux 服务器有多个用户经常存取数据时,为了维护所有用户在硬盘容量的公平适用,磁盘配额(Quota)就是一项非常有用的工具!另外,如果你的用户常常抱怨磁盘容量不够用,那么更进阶的文件系统就得要学习学习。本章我们会介绍磁盘阵列(RAID)及逻辑滚动条文件系统(LVM),这些工具都可以帮助你管理与维护用户可用的磁盘容量喔!


1. 磁盘配额(Quota)的应用与实作

1.1 什么是 Quota:一般用途,限制,规范(inode/block,soft/hard,grace time)

1.2 一个 Quota 的实作范例

1.3 实作 Quota 流程-1:文件系统支援(/etc/fstab,/etc/mtab)

1.4 实作 Quota 流程-2:建立 Quota 记录文件(quotacheck)

1.5 实作 Quota 流程-3:启动、关闭与限制值设定(quotaon,quotaoff,edquota)

1.6 实作 Quota 流程-4:Quota 限制值的报表(quota,repquota)

1.7 实作 Quota 流程-5:测试与管理(测试,warnquota,setquota)

1.8 不更动既有系统的 Quota 实例


2.软件磁盘阵列(Software RAID)

2.1 什么是 RAID:RAID-0,RAID-1,RAID0+1,RAID5,Spare disk

2.2 software,hardware RAID

2.3 软件磁盘阵列的设定:mdadm --create

2.4 仿真 RAID 错误的救援模式:mdadm --manage

2.5 开机自动启动 RAID 并自动挂载

2.6 关闭软件 RAID(重要!)


3.逻辑滚动条管理员(Logical Volume Manager)

3.1 什么是 LVM:PV,PE,VG,LV 的意义

3.2 LVM 实作流程:PV 阶段,VG 阶段,LV 就断,文件系统阶段

3.3 放大 LV 容量:resize2fs

3.4 缩小 LV 容量

3.5 LVM 的系统快照:建立,还原,用于测试环境

3.6 LVM 相关指令汇整与 LVM 的关闭


4.重点回顾

5.本章习题

6.参考数据与延伸阅读

7.针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23888


第16章、例行性工作排程(crontab)


学习了基础篇也一阵子了,你会发现到为什么系统常常会主动的进行一些任务?这些任务到底是谁在设定工作的?如果你想要让自己设计的备份程序可以自动的在系统底下执行,而不需要手动来启动他,又该如何处置?这些例行的工作可能又分为“单一”工作与“循环”工作,在系统内又是哪些服务在负责?还有还有,如果你想要每年在老婆的生日前一天就发出一封邮件提醒自己不要忘记,可以办的到吗?嘿嘿!这些种种要如何处理,就看看这一章先。


1.什么是例行性工作排程

1.1 Linux 工作排程的种类:at,crontab

1.2 Linux 上常见的例行性工作


2.仅执行一次的工作排程

2.1 atd 的启动与 at 运作的方式:/etc/at.deny

2.2 实际运作单一工作排程:at,atq & atrm,batch


3.循环执行的例行性工作排程

3.1 使用者的设定:/etc/cron.deny,crontab

3.2 系统的配置文件:/etc/crontab

3.3 一些注意事项


4.可唤醒停机期间的工作任务

4.1 什么是 anacron

4.2 anacron 与 /etc/anacrontab

5.重点回顾

6.本章习题

7.针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23889


第17章、程序管理与 SELinux 初探


一个程序被加载到内存当中运作,那么在内存内的那个数据就被成为程序(process)。程序是操作系统上非常重要的概念,所有系统上面跑的数据都会以程序的形态存在。那么系统的程序有哪些状态?不同的状态会如何影响系统的运作?程序之间是否可以互相控管等等的,这些都是我们所必须要知道的项目。另外与程序有关的还有 SELinux 这个加强档案存取安全性的咚咚,也必须要做个了解呢!


1.什么是程序(Process)

1.1 程序与程序(process & program):子程序与程序,fork-end-exec,系统服务


2.工作管理(job control)

2.1 什么是工作管理

2.2 job control 的管理:&,[ctrl]-z,jobs,fg,bg,kill


3.程序管理

3.1 程序的观察:ps(ps -l,ps aux,zombie),top,pstree

3.2 程序的管理:signal,kill,killall

3.3 关于程序的执行顺序:priority,nice,renice

3.4 系统资源的观察:free,uname,uptime,netstat,dmesg,vmstat


4.特殊档案与程序

4.1 具有 SUID/SGID 权限的指令执行状态

4.2 /proc/* 代表的意义

4.3 查询已开启档案或已执行程序开启之档案:fuser,lsof,pidof


5.SELinux 初探

5.1 什么是 SELinux:目标,DAC,MAC

5.2 SELinux 的运作模式:组件,安全性本文,domain/type

5.3 SELinux 的启动、关闭与观察:getenforce,setstatus,启动与关闭,setenforce

5.4 SELinux 网络服务运作范例:启动(ps -Z),错误情况,解决(chcon,restorecon)

5.5 SELinux 所需的服务:setroubleshoot,sealert,auditd,audit2why

5.6 SELinux 的政策与规则管理:seinfo,sesearch,getsebool,setsebool,semanage

6.重点回顾

7.本章习题

8.参考数据与延伸阅读

9.针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23890


第18章、认识系统服务(daemons)


在 Unix-like 的系统中,你常常听到 daemon 这个字眼!那么什么是传说中的 daemon 呢?这些 daemon 放在什么地方?他的功能是什么?该如何启动这些 daemon ? 又如何有效的将这些 daemon 管理妥当?此外,要如何视察这些 daemon 开了多少个 ports ?又这些 ports 要如何关闭?还有还有,晓得你系统的这些 port 各代表的是什么服务吗?这些都是最基础需要注意的呢!尤其是在架设网站之前,这里的观念就显的更重要了。


1.什么是 daemon 与服务(service)

1.1 daemon 的主要分类:stand alone,super daemon,工作形态,命名规则

1.2 服务与埠口的对应:/etc/services

1.3 daemon 的启动脚本与启动方式:配置文件,stand alone,service,super daemon


2.解析 super daemon 的配置文件

2.1 默认值配置文件:xinetd.conf:重要参数说明

2.2 一个简单的 srync 范例设定


3.服务的防火墙管理 xinetd,TCP Wrappers

3.1 /etc/hosts.allow,/etc/hosts.deny 管理:ldd,配置文件语法

3.2 TCP Wrappers 特殊功能


4.系统开启的服务

4.1 观察系统启动的服务

4.2 设定开机后立即启动服务的方法:chkconfig,ntsysv

4.3 CentOS 5.x 预设启动的服务简易说明


5.重点回顾

6.本章习题

7.参考数据与延伸阅读

8.针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23894


第19章、认识与分析登录档


当你的 Linux 系统出现不明原因的问题时,很多人都告诉你,你要查阅一下登录文件才能够知道系统出了什么问题了,所以说,了解登录档是很重要的事情呢。登录文件可以记录系统在什么时间、哪个主机、哪个服务、出现了什么讯息等信息,这些信息也包括用户识别数据、系统故障排除须知等信息。如果你能够善用这些登录文件信息的话,你的系统出现错误时,你将可以在第一时间发现,而且也能够从中找到解决的方案,而不是昏头转向的乱问人呢。此外,登录文件所记录的信息量是非常大的,要人眼分析实在很困难。此时利用 shell script 或者 是其他软件提供的分析工具来处理复杂的登录档,可以帮助你很多很多喔!


1.什么是登录档:登录档的重要性,常见档名,服务与程序


2.syslogd:记录登录文件的服务

2.1 登录档内容的一般格式

2.2 syslog 的配置文件:/etc/syslog.conf,预设的 syslog.conf 内容

2.3 登录档的安全性设置

2.4 登录档服务器的设定


3.登录档的轮替(logrotate)

3.1 logrotate 的配置文件

3.2 实际测试 logrotate 的动作

3.3 自定义登录文件的轮替功能


4.分析登录档

4.1 CentOS 预设提供的 logwatch

4.2 鸟哥自己写的登录档分析工具


5.本章习题

6.针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23895


第20章、开机流程、模块管理与 Loader


系统开机其实是一项非常复杂的程序,因为核心得要侦测硬件并加载适当的驱动程序后,接下来则必须要呼叫程序来准备好系统运作的环境,以让使用者能够顺利的操作整部主机系统。如果你能够理解开机的原理,那么将有助于你在系统出问题时能够很快速的修复系统喔!而且还能够顺利的配置多重操作系统的多重引导问题。为了多重引导的问题,你就不能不学学 grub 这个 Linux 底下优秀的开机管理程序(boot loader)。而在系统运作期间,你也得要学会管理核心模块呢!


1.Linux 的开机流程分析

1.1 开机流程一览

1.2 BIOS,boot loader 与 kernel 载入

1.3 第一支程序 init 及配置文件 /etc/inittab 与 runlevel

1.4 init 处理系统初始化流程(/etc/rc.d/rc.sysinit)

1.5 启动系统服务与相关启动配置文件(/et/rc.d/rc N & /et/sysconfig)

1.6 用户自定义开机启动程序(/etc/rc.d/rc.local)

1.7 根据 /etc/inittab 之设定,加载终端机或 X-Window 接口

1.8 开机过程会用到的主要配置文件:/etc/modprobe.conf,/etc/sysconfig/*

1.9 Run level 的切换:runlevel,init


2.核心与核心模块

2.1 核心模块与相关性:depmod

2.2 核心模块的观察:lsmod,modinfo

2.3 核心模块的加载与移除:insmod,modprobe,rmmod

2.4 核心模块的额外参数设定:/etc/modprobe.conf


3.Boot loader:Grub

3.1 boot loader 的两个 stage

3.2 grub 的配置文件 /boot/grub/menu.lst 与选单类型:磁盘代号,menu.lst

3.3 initrd 的重要性与建立新 initrd 档案:mkinitrd

3.4 测试与安装 grub:grub-install,grub shell

3.5 开启前的额外功能修改

3.6 关于核心功能当中的 vga 设定

3.7 BIOS 无法读取大硬盘的问题

3.8 为个别选单加上密码:grub-md5-crypt


4.开机过程中的问题解决

4.1 忘记 root 密码的解决之道

4.2 init 配置文件错误

4.3 BIOS 磁盘对应的问题(device.map)

4.4 因文件系统错误而无法开机

4.5 利用 chroot 切换到另一颗硬盘工作


5.重点回顾

6.本章习题

7.参考数据与延伸阅读

8.针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23891


第21章、系统设定工具(网络与打印机)与硬件侦测


除了手动设定之外,其实系统提供了一个名为 setup 的指令给系统管理员使用喔!这个指令还能够设定网络呢。此外,我们也应该要之道如何在 Linux 底下连接打印机吧!否则一些数据怎么印出来?另外,如果你的主板支持 CPU 温度侦测的话,我们还能够利用 lm_sensors 这个软件功能来侦测硬件的电压、风扇转速、CPU 温度等信息呢!


1.CentOS 系统设定工具:setup

1.1 使用者身份验证设定

1.2 网络设定项目(手动设定 IP 与自动取得)

1.3 防火墙设定

1.4 键盘形式设定

1.5 系统服务的启动与否设定

1.6 系统时钟的失去设定

1.7 X窗口接口分辨率设定


2.利用 CUPS 设定 Linux 打印机

2.1 Linux 的打印组件(打印作业、队列、服务与打印机)

2.2 CUPS 支持的联机模式

2.3 以 Web 接口控管网络打印机

2.4 以 Web 接口控管 USB  本机打印机

2.5 将 Linux 本机打印机开放成为网络打印机

2.6 手动设定打印机:lpadmin,lpstat,lpr,lp,lpq,lprm


3.硬件数据收集与驱动,及 lm_sensors

3.1 硬件信息的收集与分析:lspci,lsusb,iostat

3.2 驱动 USB装置

3.3 使用 lm_sensors 取得温度、电压等信息:sensors-detect,sensors

3.4 udev 与 hal 简介


4.重点回顾

5.本章习题

6.参考数据与延伸阅读

7.针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23898


第22章、软件安装:原始码与 Tarball


我们在第1章、Linux是什么当中提到了 GNU 计划与 GPL 授权所产生的自由软件与开放源码等咚咚。不过,前面的章节都还没有提到真正的开发源码是什么讯息!在这一章当中,我们将藉由 Linux 操作系统里面的执行文件,来理解什么是可执行程序,以及了解什么是编译程序。另外,与程序信息相关的函数库(library)的信息也需要了解一番!不过,在这个章节当中,鸟哥并不是要你成为一个开发源码的程序设计师,而是希望你可以了解如何将开发源码的程序设计、加入函式库的原理、通过编译而成为可以执行的 binary program,最后该执行档可被我们所使用的一连串过程!

了解上面的咚咚有什么好处呢?因为在 Linux 的世界里面,由于客制化的关系,有时候我们需要自行安装软件在自己的 Linux 系统上面,所以如果你有简单的程序编译概念,那么将很容易进行软件的安装。甚至在发生软件编译过程中的错误时,你也可以自行作一些简易的修订呢!而最传统的软件安装过程,自然就是由原始码编译而来的啰!所以,在这里我们将介绍最原始的软件管理方式:使用 Tarball 来安装与升级管理我们的软件喔!


1.开发源码的软件安装与升级简介

1.1 什么是开放源码、编译程序与可执行文件

1.2 什么是函式库

1.3 什么是 make 与 configure

1.4 什么是 Tarball 的软件

1.5 如何安装与升级软件


2.使用传统程序语言进行编译的简单范例

2.1 单一程序:印出 Hello World

2.2 主、子程序链接:子程序的编译

2.3 呼叫外部函式库:加入连结的函式库

2.4 gcc 的简易用法(编译、参数与链结)


3.用 make 进行宏编译

3.1 为什么要用 make

3.2 makefile 的基本语法与变量


4.Tarball 的管理与建议

4.1 使用原始码管理软件所需要的基础软件

4.2 Tarball 安装的基本步骤

4.3 一般 Tarball 软件安装的建议事项(如何移除?升级?)

4.4 一个简单的范例、利用 ntp 来示范

4.5 使用 patch 更新原始码


5.函式库管理

5.1 动态与静态函式库

5.2 ldconfig 与 /etc/ld.so.conf

5.3 程序的动态函式库解析:ldd


6.检验软件的正确性

6.1 md5sum/sha1sum

7.重点回顾

8.本章习题

9.参考数据与延伸阅读

10.针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23892


第23章、软件安装:RPM、SRPM与YUM 功能


虽然使用原始码迚行软件编译可以具有客制化的设定,但对亍 Linux distribution 的发布商来说,则有软件管理丌易的问题, 毕竟丌是每个人都会迚行原始 码编译的。如果能够将软件预先在相同的硬件不操作系统上面编译好才发布的话, 丌就能够让相同的 distribution 具有完全一致的软件版本吗?如果再加 上简易的安装/移除/管理等机制的话, 对亍软件控管就会简易的多。有这种东西吗?有的,那就是 RPM 不 YUM 这两个好用的咚咚。 既然这举好用,我们 当然丌能错过学习机会啰!赶紧来参详参详!


1. 软件管理员简介

1.1 Linux 界的两大主流: RPM 不 DPKG

1.2 什举是 RPM 不 SRPM

1.3 什举是 i386, i586, i686, noarch, x86_64 

1.4 RPM 的优点

1.5 RPM 属性相依的兊朋方式: YUM 在线升级


2. RPM 软件管理程序: rpm

2.1 RPM 默讣安装的路径

2.2 RPM 安装 (install)

2.3 RPM 升级不更新 (upgrade/freshen) 

2.4 RPM 查询 (query)

2.5 RPM 验证不数字签名 (Verify/signature)

2.6 RPM 反安装不重建数据库 (erase/rebuilddb) 


3. SRPM 的使用: rpmbuild

3.1 利用默讣值安装 SRPM 档案 (--rebuid/--recompile) 

3.2 SRPM 使用的路径不需要的软件

3.3 配置文件的主要内容 (*.spec)

3.4 SRPM 的编译挃令 (-ba/-bb)

3.5 一个打包自己软件的范例 


4. YUM 在线升级机制

4.1 利用 yum 迚行查询、安装、升级不移除功能 

4.2 yum 的配置文件

4.3 yum 的软件群组功能

4.4 全系统自劢升级


5. 管理的抉择:RPM 还是 Tarball

6.重点回顾

7.本章习题

8.参考数据与延伸阅读

9.针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23893


第24章、X Window 设定介绍


在 Linux 上头的图形接口我们称之为 X Window System,简称为 X 或 X11 啰! 为何称之为系统呢?这是因为 X 窗 口系统又分为 X server 与 X client ,既然是 Server/Client (主从架构) 这就表示其实 X 窗口系统是可以跨网络且跨平台的!X 窗口系统对于 Linux 来说仅是一个软件, 只是这个软件日趋重要喔!因为 Linux 是否能够在桌面计算机上面流行,与这个 X 窗口系统有关啦! 好在,目前的 X 窗口系统整合到 Linux 已经非常优秀了,而且也能够具有 3D 加速的功能, 只是,我们还是得要了解一下 X 窗口系统才好,这样如果出问题,我们才有办法处理啊!


1. 什么是 X Window System

1.1 X Window 的发展简史

1.2 主要组件: X Server/X Client/Window Manager/Display Manager 

1.3 X Window 的启动流程:startx, xinit

1.4 X 启动流程测试

1.5 我是否需要启用 X Window System


2. X Server 配置文件览析不设定

2.1 解析 xorg.conf 设定

2.2 X Font Server (XFS) 不加入额外中文字形:chkfontpath, fc-cache 

2.3 配置文件重建不显示器参数微调:透过 gtf 调整分辨率


3. 显示适配器驱劢程序安装范例 

3.1 NVidia

3.2 ATI (AMd)

3.3 Intel 


4. 重点回顾

5. 本章习题

6. 参考数据不延伸阅读

7. 针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23897


第25章、Linux 备份策略


万一不行你的 Linux 被黑客入侵了、戒是你的 Linux 系统由于硬件关系 (不论是天灾还是人祸) 而挂掉了!这个时候,请问如何快速的恢复你的系统呢?呵呵!当然啰,如果有备份数据的话, 那么恢复系统所花费的时间与成本将降低相当的多!平时最好就养成备份的习 惯, 以克突然间的系统损毁造成手足无措!此外,哪些档案最需要备份呢?又,备份是需要完整的备份还是仅备份重要数据即可? 嗯! 确实需要考虑看看呦!


1. 备份要点

1.1 备份资料的考虑

1.2 哪些 Linux 数据具有备份的意义

1.3 备份用储存媒体的选择


2. 备份种类、频率与工具的选择

2.1 完整备份之累积备份 (Incremental backup), 使用软件 

2.2 完整备份之差异备份 (Differential backup)

2.3 关键数据备份


3. VBird 的备份策略与 scripts 

3.1 每周系统备份的 script 

3.2 每日备份资料的 script 

3.3 进程备援的 script


4. 灾难复原的考虑

5. 重点回顾

6. 本章习题

7. 参考数据与延伸阅读

8. 针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23896


第26章、Linux 核心编译与管理


我们说的 Linux 其实挃的就是核心 (kernel) 而已。这个核心控制你主机的所有硬件幵提供系统所有的功能, 所以说,他重丌重要啊!我们开机的时候其实就是利 用开机管理程序加载这个核心档案来侦测硬件, 在核心加载适当的驱劢程序后,你的系统才能够顺利的运作。现今的系统由亍强调在线升级机制,因此非常丌建 讧自定丿核心编译! 但是,如果你想要将你的 Linux 安装到 USB 随身碟、想要将你的 Eee PC 小笔电安装自己的 Linux , 想讥你的 Linux 可以驱劢你的小家 电,此时,核心编译就是相当重要的一个任务了! 这一篇比较迚阶,如果你对系统移植没有兴趣的话,这一篇可以先略过喔! ^_^


1. 编译前的任务:认识核心与取得核心原始码 

1.1 什么是核心 (Kernel)

1.2 更新核心的目的

1.3 核心的版本

1.4 核心原始码的取得方式:distributions 预训、最新、patch

1.5 核心原始码的解压缩/安装/观察 


2. 核心编译的前处理与核心功能选择

2.1 硬件环境检规与核心功能要求

2.2 保持干净原始码: make mrproper 

2.3 开始挅选核心功能: make XXconfig 

2.4 核心功能绅项选择

a. 一般训定(General setup):附加版本名称、IPC 通讨、程序相关等 

b. 核心模块与 block layer 支持

c. CPU 的类型不功能选择(吨虚拟化技术)

d. 电源管理功能

e. 一些总线 (bus) 的选项 

f. 编译后执行档的格式

g. 核心的网络功能

h. 各项装置的驱劢程序

i. 文件系统的支援

j. 核心黑客、信息安全、密码应用 k. 虚拟化不凼式库


3. 核心的编译与安装

3.1 编译核心与核心模块

3.2 实际安装模块

3.3 开始安装新核心与多重核心选单 (grub)


4. 额外(单一)核心模块编译 

4.1 编译前注意事项 

4.2 单一模块编译

4.3 核心模块管理


5. 重点回顾

6. 本章习题

7. 参考数据与延伸阅读

8. 针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23899

你可能感兴趣的:(操作系统,书评)