Sideway's RHCE 学习笔记
email:xtadw@yahoo.com.cn
版权声明:本文档使用GPL发布
注:本文档为笔者在学习RHCE时的笔记,但未经过仔细整理,错误难免,望大家交流指正。
========================================================================
UNIX及Linux的简单介绍
========================================================================
UNIX系统分为两大阵营
(1)SystemV
(2)BSD
FSF(自由软件基金会)
GNU(GNU's Not UNIX) 操作系统发展项目
GPL协议
GNU项目发展后,拥有了Hurd内核、emacs编辑器、gcc glib 编译器,但缺少一种更好的内核来组成操作系统
linux是一种操作系统内核
GNU/linux(该组合,组成了一种操作系统,即:linux内核+emacs编辑器+gcc glib编译器等),GNU/linux简称为linux操作系统
内核: [url]www.kernel.org[/url]
图形: [url]www.xfree86.org[/url]
软件: [url]www.gnu.org[/url]
工具: [url]www.sourcforge.net[/url]
桌面: [url]www.gnome.org[/url]  [url]www.kde.org[/url]
[url]www.slackwar.com[/url]第一个将以上这些工具打包(distribution)发行
[url]www.redhat.com[/url]发明了RPM
[url]www.linuxfromscratch.org[/url] (CFS 手工编译组织)
[url]www.linuxbase.org[/url](LSB[Linux Standard Base]Linux标准化组织)
fedora.redhat.com(redhat9之后的开放版本)
[url]www.debian.org[/url](最自由最受Linux fans欢迎的linux发行版本)
========================================================================
Linux下操作的一些小技巧
========================================================================
(1)对已经显示完毕的屏幕进行翻页查看
 Shift+PgUP   Shift+PgDn
(2)清屏
 Ctrl+L  = clear命令
(3)历史命令调用
 上、下光标键
(4)显示当前目录
 pwd
(5)显示目录时后跟/符号
 ls -F
(6)外部帮助命令:info
 例:info  ls
(7)man、more等查看资料时的快捷键
 / 往后查找指定内容,例:/abc
 ? 往前查找指定内容,例:?abc
 N 继续查找下一条
 Shift+N 继续查找上一条
========================================================================
UNIT 2 Quick Tour (快速浏览)
========================================================================
Linux用户环境的组成:
    (1)Kernel    (Linux的核心,长驻内存)
    (2)Shell     (用户的操作界面,命令解释器,用户和内核之间的通信桥樑,Linux常用bash作
                  为其Shell)
    (3)Terminal Emulator (终端仿真)
    (4)X Window System  ()
    (5)Window Manger (gdm)
    (6)Desktop Environment (如:GNOME、KDE)
本地登录:
    当运行级别为:runlevel 3时,以文本方式登录到虚拟控制台(命令方式)
    当运行级别为:runlevel 5时,以图形方式登录
检查文件系统:
    常用ls命令查看文件系统
    Red Hat Linux的ls命令默认使用不同的颜色来区分不同的文件类型
    Linux支持的几种文件类型:常规文件、链接文件、目录、sockets,pipes,and block and character devices.
    颜色映射定义文件:/etc/DIR_COLORS
设备文件:
    所有的硬件设备都被处理成特定的文件,存放在/dev目录中,设备文件分成两种类型:块、字符
    块设备:以块方式读取数据,每次读取512bytes~32KB。如:硬盘
    字符设备:每次传输一个字节。如:串口、Modems
命令行外壳:
    Red Hat Linux默认使用bash(Bourne Again Shell),bash是GNU项目的一部分
    bash支持别名、文件名自动补全、历史命令、POSIX兼容
    bash的全局设置文件为:/etc/profile,/etc/bashrc
用户:
    root用户对系统拥有完全的控制权,其UID为0,普通用户的UID必须大于0。
    使用id命令可以查看当前用户的信息。
运行命令:
    通用格式:command  [option]  [arguments]
    每一项之间必须使用空格分隔
    命令与命令之间用分号分隔,如:
    $ mkdir backups; cp *.txt backups/
    中断当前正在运行的命令:<ctrl-c>
    完成当前命令的arguments输入:<ctrl-d>
man的帮助系统:
    man -k search 查找关于搜索方面的帮助
    man -k search | grep -v '(3)'
    makewhatis 生成数据库
    man -f passwd   列出所有关于passwd的帮助说明选择
    man 5 passwd 显示passwd文件的说明
    man passwd 显示passwd命令的说明
    man 3 printf 在库3中显示printf函数的用法
    1 命令 2 系统调用 3 函数库的调用 4 特殊文件 5 文件格式 6 游戏
其他帮助工具:
    (1) command --help
    (2) info
    软件的使用文档通常存放于/usr/share/doc中,可以查看。
日期、时间和日历:
    date 不带参数用于显示年月日及时间
    date MMDDhhmmYYYY格式用于设置日期及时间,如:date 100410572004 (2004-10-04  10:57)
    cal  显示日历,例:cal 9 2002 (显示2002年9月的日历)
虚拟控制台:
    缺省有6个虚拟控制台,可能通过:CTRL-ALT-F[1-6]或ALT-左右方向键来切换
    当有X运行时,用CTRL-ALT-F7切换到X窗口
    用SHIFT+PAGEUP,SHIFT+PAGEDOWN可以上下翻屏。
本章的基础命令:
    ls  查看文件系统
    man  帮助系统
    info 帮助系统
    id  显示用户的ID信息
    passwd 修改密码
    date 显示日期和日期
    cal  显示日历,例:cal  9 2002 (显示2002年9月的日历表)
    alias 显示别名
    unalias 取消别名,例:unalias ls
    which 显示命令所在的目录,例:which ls
本章的两个重要文件:
    /etc/profile
    /etc/bashrc
========================================================================
UNIT 3 File and Shell Basics
========================================================================
主目录:
    在/home中,每一个普通用户都拥有一个目录,这个目录是用户的主目录,用于存放用户的配置文件和数据
    在命令中用~表示,如:cd ~ (进入当前用户的主目录)
pwd 显示当前目录
cd 改变当前目录
 cd ~ (进入当前用户的主目录)
 cd - (进入你的上一个工作目录)
ls 显示文件列表
    ls -R (包含子目录)
    ls -l (显示文件的详细信息)
    ls -a (显示所有文件,在linux中以.开头的文件为隐含文件)
    ls -d (显示目录)
    详细列表时的信息:
    $ ls -l /bin/login
    -rwxr-xr-x    1 root   root  19080   Apr 1 18:26 /bin/login
    -rwxr-xr-x 文件类型及权限(第一位为文件类型)
    1  文件名数量
    root 文件拥有者的用户名或UID
                (如果因系统原因在/etc/passwd中找不到UID对应的用户名时,显示UID)
    root 文件所属组的组名或gid
                (如果因系统原因在/etc/group中找不到gid对应的组名时,显示gid)
    Apr 1 18:26 文件的创建时间
    /bin/login 文件名
系统目录:
    /bin,/usr/bin 存放用户命令
    /sbin,/usr/sbin 存放系统用命令
    /var  存放日志、缓冲池、邮件等经常变动的文件
    /proc  内核的映射,其中以数字为目录名的目录是进程
    /etc  存放配置文件
    /lib  存放动态链接库文件
    /dev  存放设备文件
    /boot  存放内核及启动文件
    /opt  存放第三方软件系统,通常是一些比较大的系统,如:oracle等
检查可用空间:
    df  显示每个分区的可用空间, df -h (人性化方式显示)
    du  显示目录及文件占用的空间,du -h (人性化方式显示)
        du -s (仅列出当前目录及其所有子目录的合计数据)
复制文件和目录:
    cp [option] file destination
      [option]
      -p  使目标文件的创建时间与源文件相同
      -r  包含子目录一起复制
   
移动及改名:
    mv [option] file destination
创建及删除文件:
    touch  创建一个空文件
    rm 删除文件及目录
      -i  删除前提示(注:redhat下已经使用alias rm -i)
      -r  包含子目录
      -f  强制删除,无提示
    注:不要使用绝对路径删除文件,如:rm -rf /boot(如果万一输入有误,就有可能删除整个文件系统)
创建及删除目录:
    mkdir 创建目录
    rmdir 删除目录(空目录)
    rm -rf 目录名 可以删除含有内容的目录
确定文件内容:
    file [option] filename
        必须安装file-3.39-9.rpm包
显示文本文件:
    cat [option] file
       -A 显示所有字符,包括控制符
       -s 把相邻的多个空行变成一个空行进行显示
       -b 显示行号(空行不计)
       coreutils-***.rpm
    less [option] file   以页的方式显示
    head -n 20 file   显示file前20行(缺省为10行)
    tail -n 5 file    显示file最后5行(缺省为10行)
    tail -f /var/log/messages  实时显示文件的更新内容,通常用于监控日志
文件通配符:
    *  匹配所有字符
    ?  匹配一个字符
    [a-z]  匹配该范围内的任意一个字符
    [^a-z] 匹配该范围外的任意字符
========================================================================
UNIT 4 Users and Groups  (用户和组)
========================================================================
用户:
    系统中的每一个用户拥有一个UID作为唯一标识
    uid的分配:
      0     超级管理员的uid,拥有对系统的完全控制
      1-99  系统用户使用
      100-  普通用户使用
    用户名及UID存放在/etc/passwd文件中
    /etc/passwd文件的格式:
      root:x:0:0:root:/root:/bin/bash
      用户名:口令:uid:gid:说明:主目录路径:Shell
    注:此处口令处为x,是因为系统使用了shadow口令方式,把口令单独存放在/etc/shadow文件中
组:
    使用gid把用户分配到组中,gid存放在/etc/group中
    /etc/group的格式:
      root:x:0:root,bin
      组名:X:gid:用户1,用户2
用户信息命令:
    whoami   显示当前用户的名称
    groups   显示用户加入了哪些组
    id       显示uid,gid
    users    显示当前登录进系统的用户
    who      稍详细的显示当前登录进系统的用户信息
    w        更详细的显示当前登录进系统的用户信息
    last [username]  显示用户的最后登录信息
    last -1 reboot 显示最后一次系统的重新启动信息
    finger [username] 综合显示用户的一些信息
切换用户:
    su - [username]
增加删除用户和组:
    useradd username
    userdel [-r] username   (带-r的话,删除用户的时候其主目录一起删除)
    groupadd groupname
    groupdel groupname

========================================================================
UNIT 5 File Access Permissions (文件存取权限)
========================================================================
基本概念:
    每一个文件都被归属于某一个用户及组,存取文件及目录时系统会检查拥有文件的用户、组及其他用户这三者的权限设定。
文件权限:
    $ ls -l /bin/login
    -rwxr-xr-x    1 root   root  19080   Apr 1 18:26 /bin/login
    对第一段“-rwxr-xr-x”我们可能分解成以下四段:
    -         rwx              r-x                r-x
    文件类型   文件拥有者的权限   文件所属的组的权限    其他用户的权限
    文件类型有:
        -  普通文件
 d  目录
 l  链接文件
 b  块设备文件
 c  字符设备文件
 p  管道文件
    文件权限:
        r  读    4
        w  写    2
        x  执行(如果是目录代表可以进入) 1
        rw    6(4+2)
        rx    5(4+1)
        wx    3(2+1)
        rwx    7(4+2+1)
        s 
        t
更改文件权限:
    (1)chmod [-R] mode file
       -R  包含子目录一起
       mode=Who+Operator+Permissions
          Who:
       u  文件拥有者
       g  文件所属组
       o  其他用户
       a  包括以上三项
   Operator:
       +  增加权限
       -  移除权限
       =  赋于权限
   Permissions:
       r  读
       w  写
       x  执行(如果是目录代表可以进入)
       s 
       t
    例:
        chmod u+w file
 chmod go-rw file
    (2)chmod <three-digit mode number> file
        three-digit mode number:(三位数的数字)
     第一位:文件拥有者的权限
     第二位:文件所属组的权限
     第三位:其他用户的权限
 例:
     chmod 664 file         rw-rw-r--  file
     chmod 741 file         rwxr----x  file
     chmod 040 file         ---r-----  file
缺省文件权限:
    Linux系统可能使用umask来设置新建文件的初始权限,当没有umask时,新建文件的初始权限为666,
    新建目录的初始权限为777
    umask:设置新建文件时的默认文件权限
        umask只影响新建文件的权限,不影响已建文件的权限,在RedHat Linux中普通用户的umask为0002
 root用户的umask为0022。
    例(1):
        r(4) w(2) x(1)
        umask=022时
        初始化的权限:  rwx  rwx  rwx
        需掩掉的权限:  ---  -w-  -w-
        新建文件的实际权限: rwx  r-x  r-x
    例(2):
        当umask=543时,新建一个文件,该文件的权限
        (1)创建文件,无umask时的默认权限应是:rw- rw- rw- (666)
        (2)应该掩掉:                      r-x r-- -wx (543)(注:只掩掉默认权限中有的权限,没有的权限不影响)
        (3)得到新建的文件的实际权限为:       -w- -w- r-- (224)
========================================================================
UNIT 6 The Linux Filesystem (Linux文件系统)
========================================================================
Linux文件系统的基本原理:
    文件和目录都被组织在一个单一的倒转的树结构中,名字对大小写敏感,目录间用斜杠"/"隔开
    linux系统通常采用ext2/ext3文件系统,ext3比ext2增加了日志功能.
    ext2/ext3文件系统的基本结构(每一个分区):
        SuperBlocks+inodes+Directory entry+DataArea
 SuperBlocks:是文件系统的元数据,主要存放分区的卷标名、UID、inode总数、
     block总数、保留块的总数(reserved blocks count)、块组的物理位置(block
     group locations)、以及其他信息。
     可以用类似:dumpe2fs /dev/hda1命令进行查看分区的SuperBlocks的内容
 indoes:是文件的元数据,主要存放文件的权限、属性、存取修改时间及其他。(一个文件一个indoes)
     可以用:stat filename来查看文件的indoes的内容
     注:由stat返回的文件名并不是存放在indoes中的,而是存放在目录表中
 Directory entry:目录表,存放文件名
 DataArea: 存放文件的数据
文件链接:
    硬链接:并未创建新的文件,仅仅给一个文件起两个或更多的名字。因此不能跨设备、分区创建硬链接。
           删除了创建了硬链接的源文件,并不删除文件,仅删除文件名,只能删除全部的硬链接文件及源
    文件才会真正删除文件。
       
    软链接:创建一个新文件,让这个文件指向源文件。删除软链接文件不影响源文件,但删除源文件后,
           软链接文件虽仍存在,但已无法找到指向了,具体表现为:用ls查看时,文件会以红底,文件名
    闪烁显示。
       
    创建命令:
        硬链接:ln filename [linkname]
 软链接:ln -s filename [linkname]
挂载可移动设备:
    可移动设备在挂载后才能使用,虽然挂载文件系统是普通的管理员的功能,但普通用户有许多方法去挂载
    可移动设备。
    另外,可以用mtools命令来模仿DOS命令方式使用FAT格式的软盘,使用方法如:mdir a:,mcopy file a:
    更详细的可以使用的命令及方法可以参见mtools。
查找文件:
    slocate [pattern]:在文件列表数据库中查找匹配的文件。(文件列表数据库可以用updatedb命令更新)
    locate:是slocate的软链接
    find:在文件系统中查找。
    find <dir> [conditions] [action] [-exec cmd {} \;]
    例:
        find /etc/ -name "*.conf"    在/etc/目录中查找所有以.conf结束的文件
 find /var -user root -group mail  在/var目录中找出所有属于root用户及mail组的文件
 find /etc/ -name "*.conf" -exec cat {} \;    在/etc/目录中查找所有以.conf结束的文件,
                                              并显示找出的文件的内容。
文件打包及压缩:
    打包:将多个文件放入一个文件中
    tar <option> <目标文件> <源文件>  (注:源文件必须用相对路径表示)
       option:
           -c  创建打包文件
    -x  释放打包文件
    -f  后跟指定文件(缺省/dev/rmt0)
    -v  显示详细信息
    -z  用gzip进行压缩或解压缩
    -j  用bzip2进行压缩或解压缩
    例:
        tar cvf conf.tar ./conf/*.conf
        tar xvf conf.tar    在当前目录释放
        tar cvzf conf.tar.gz ./conf/*.conf
        tar xvzf conf.tar.gz
    压缩:减小文件的体积
        gzip abc 把文件abc压缩成abc.gz      速度快,压缩率低
 gunzip abc.gz 对gzip压缩的文件进行解压缩
 bzip2 abc 把文件abc压缩成abc.bz2     速度慢,压缩率慢
 bunzip2 abc.bz2 对bzip2压缩的文件进行解压缩
 
========================================================================
UNIT 7 The bash Shell
========================================================================
Linux系统的启动过程:
(1) BIOS (进行自检,最后调用MBR)
(2) MBR  (检查分区表SPT及55AA标志,正确则调用linux内核。如:lilo、grub)
(3) kernel (vmlinuz)
(4) init进程 (根据/etc/inittab文件的设置运行init进程)
(5) 运行/etc/rc.d/rcx.d中的程序  (rcx.d中的x是/etc/inittab文件中设置的运行级别)
(6) 运行/etc/rc.d/rc.local  (login之前最后一个执行脚本程序)
(7) /bin/login  (登录程序)
(8) shell (根据/etc/passwd文件中该用户的设置启动相应的shell,常用的如:bash)
shell的历史:
    shell是内核与用户之间的一个交互桥樑,主要起到一个命令解释作用。
    sh   (Bourne Shell)UNIX最初的shell
    csh  (C Shell)语法与C语言相似的shell,比sh功能强
    ksh  (Korn Shell)和csh相似的shell
    tcsh (The Enhanced C Shell)csh的增加版本
    bash (Bourne Again Shell)目前常用的shell,功能强大
shell的本地变量和环境变量:
    本地变量:仅对当前的shell有效
    环境变量:对所有的shell都有效
    set  显示所有本地变量
    env  显示所有环境变量
    本地变量的赋值:
        Variables name=value
    环境变量的赋值:
        export ENV_name=value
    显示变量的值:
        echo $variable
    常用公共变量:
        HOME 用户主目录路径
 PATH 可执行文件的查找路径
 LANG 系统语言
 PWD 当前目录
 TERM 终端类型
 SHELL shell的路径
 USER 当前用户
 EDITOR 缺省的编辑器
 HISTSIZE 历史命令条数
 COLUMNS 终端的列数
 PS1 命令提示符的格式定义
shell的常用命令:
    which <command> 显示命令的绝对路径
    history  显示历史命令
    ^re^re3  把上一个命令中的re替换成re3后再执行一次
    alias  别名,例:alias dir='ls -laF'
    unalias  取消别名,例:unalias dir
shell自定义函数:
    例:
    lsflop()
    {
    mount /mnt/floppy
    ls -l /mnt/floppy
    umount /mnt/floppy
    }
    定义好上述函数后,只要在命令提示符下输入:lsflop就能执行,类似于批处理
启动脚本:
    启动脚本(Startup Scripts)是在登录时执行的命令脚本,通常进行以下工作:
        (1) 设置环境变量
        (2) 定义命令的别名
        (3) 运行程序
    登录时的脚本运行顺序:
        (1) /etc/profile
 (2) /etc/profile.d/*.sh
 (3) ~/.bash_profile
 (4) ~/.bashrc
 (5) /etc/bashrc
    登出时的脚本运行顺序:
        (1) ~/.bash_logout

========================================================================
UNIT 8 xwindow
========================================================================
redhat-config-xfree86 配置xwindow
switchdesk  切换桌面管理器

========================================================================
UNIT 9 Standard I/O and Pipes (标准输入输出和管道)
========================================================================
标准输入(stdin):
    代码为:0
    缺省的标准输入设备为键盘
    标准输入重定向:
        0<   注:零可以省略,即: <
 <<char  标准输入直到输入为char时结束
    例:
        cat > file <<EF    (标准输入为EF时结束)
标准输出(stdout):
    代码为:1
    缺省的标准输出设备为屏幕
    标准输出重定向:
        1>   注:1可以省略,即: >
        >  覆盖文件
        >> 追加文件
标准错误(stderr):
    代码为:2
    缺省的标准错误的输出设备为屏幕
    标准错误重定向:
        2>   注:2不可以省略
管道:
    表示符号为: |
    使用格式:command1 | command2 | command3 ....
    管道的作用是:把上一个命令的运行结果交给下一个命令进行处理
    例:ls /usr/include/ | grep "^g"   (显示/usr/include目录下以g开头的文件)
与管道配合一起使用的常用命令:
    过滤器(grep)
        例:
        grep mail * (找出所有含有mail字串的文件)
        grep tom /etc/passwd (显示/etc/passwd文件中含有tom字串的行)
 ls | grep mail(列出文件名中含有mail的文件)
    满屏暂停(more)
        例:
 ls -l | more

内部命令和外部命令
==========================
内部命令是shell直接解释的
which command (显示外部命令所在的路径)
which只在$PATH指定的路径中查找
whereis command(显示外命令所在的路径及其man文件所在的路径)
wc file (统计文件的单词数等信息)
ls | grep ^a$  (显示文件名中只含有一个a的文件)
grep "a."  以a开头的,两个字母以上的
grep "^a.$" 以a开头,两个字母的
* 前面一个字符出现任意次
?前面一个字符出现0或1次
+ 前面一个字符出现1~n次
sort
cut -f1 cut.txt  (按默认的分隔符[Tab]显示第一个字段)
cut -d" " -f1,3 cut.txt  (以一个空格为分隔符显示第一及第三个字段)
tr -s " " < cut.txt  (将多个连续的空格变成一个空格)
tr " " "\t"  (将空格变成Tab分隔符)
tr a-z A-Z  (将小写字母转换成大写字母)
grep,less,awk,sed,vi可以使用正则表达式
find /tmp -nouser -a -nogroup -exec rm -rf {} \;

========================================================================
UNIT 12 Introduction to Processes
========================================================================
init是系统启动时的第一个进程,其进程号为:1,其他进程都是init进程的子进程。
进程的几种状态:
    (1) R  正在运行中
    (2) S  睡眠中
    (3) T  停止运行
    (4) D  睡眠(出现指定的事件才能唤醒)
    (5) Z  死掉的但没有释放的进程
查看进程的命令:
    ps [option]
        option:
   -a  显示所有终端运行的进程
   -x  显示所有进程,包括后台服务进程
   -l  详细显示
   -u  显示进程的用户名
    pstree  以目录树形式显示进程
进程控制:
    kill <PID>  给指定PID的进程发送终止信号
    kill -9 <PID>  终止进程
    在命令后加上&,让该命令在后台运行
    用jobs命令可以查看后台正在运行的程序
    用fg <%作业号>来把后台程序调到前台运行
    用<ctrl-z>挂起前台程序
    用bg <%作业号>把挂起的前台程序放到后台运行

========================================================================
UNIT 13 Using the vi and vim Editors
========================================================================
使磁盘可以使用的三个步骤:
(1)新建分区(fdisk)
(2)格式化(mkfs)
(3)挂载(mount)
分区:
/sbin/fdisk   unti-linux-2.11y-9.rpm
blocks以1024字节为单位
fdisk仅更改分区表中的信息,不改变实际数据区中的数据
p  显示分区信息
l  显示己知分区的代码
t  更改分区类型标记(常用分区类型:83 Linux 82 Linux Swap)
n  在剩余空间中新建分区
w  将更改写入磁盘

mkswap /dev/hda6  (将hda6分区更改成swap分区类型)
swap分区无需格式化
格式化:
mkfs (Make FileSystem)
mkfs [-t fstype] device
例:
mkfs -t ext3 /dev/hda1  (把/dev/hda1分区格式成ext3)
分区建议:
/home 单独分一个区(因里面存放的是其他用户的东西)
/var   单独分一个区(因里面放的都是变化的东西)
在根分区下必須有以下这几个目录,否则系统无法启动
/dev (设备hda等)
/etc  (inittab  fstab)
/lib
/bin  (bash)
/sbin (mingetty)

注:要查看一个分区必須靠挂载
chroot /mnt/temp  (将/mnt/temp作为根)
exit退出

df命令会读取/etc/mtab文件中的分区挂载信息
mount -n (不将挂载信息写入/etc/mtab文件中),通常用在排错时使用。
因系统出错时,/etc/mtab文件可能不能访问,因此不加-n参数使用mount命令可能出错。

/etc/fstab文件中分区的最后一个数字为0代表分区不需要自检,为1代表需要第一个自检 为2代表需要第二个自检
iocharset=iso8859-1 英文
iocharset=gb2312  中文
mount -t vfat /dev/hda2 /c -o iocharset=gb2312
建议将/var  /tmp挂载成noexec
e2label 显示及设置卷标
注意两个分区设成同一卷标的情况造成的问题
swapon 打开交换分区
swapoff 关闭交换分区

实例:
(一)在计算机上安装一块新的硬盘,并把这硬盘分成两个区,一个分区为ext2格式,一个为ext3格式
(1) 使用fdisk对硬盘进行分区
(2) mkfs -t ext2 /dev/hdb1
(3) mkfs -t ext3 /dev/hdb2
(4) mkdir /mnt/1
(5) mkdir /mnt/2
(6) mount -t ext2 /dev/hdb1 /mnt/1
(70 mount -t ext3 /dev/hdb2 /mnt/2

rpm的管理
===================================
一、安装
rpm -i PackFilename
rpm -ivh PackFilename   (其中vh参数用于显示安装进程中的信息)
二、升级
rpm -Uvh NewVersionPackfilename
三、卸载
rpm -evh PackName
四、查询
rpm -q PackName (检查系统中是否安装有给出的PackName)
rpm -qa  (列出系统中所有已安装的rpm包)
rpm -qi PackName (显示包的一些信息)
rpm -ql PackName (列出所安装的包的具体文件路径列表)
rpm -qf filename (显示给出的filename是属于哪一个rpm包所安装生成的)
五、高级查询
查询某一个文件(该文件在电脑中不存在)是属于哪一个安装包
(1) rpm -ivh rpmdb-redhat-***.rpm (安装rpm信息数据库)
(2) rpm -q --redhatprovides libX11.so.6  (查询libX11.so.6这个文件存在于哪一个包中)
 
Redhat Linux的安装:
===================================
RHEL AS 高级服务器版
RHEL ES 企业服务器版
RHEL WS 工作站

安装服务器
IP:192.168.0.254
Domain Name:server1.example.com
NFS方式的路径:/var/ftp/pub/rhel
FTP方式的路径:/pub/rhel

注:在Redhat Linux安装程序在分区界面时可以按Ctrl+Alt+F2进入控制台
 
光盘刻录:
cdrecord -v dev=0,0,0 speed=32 boot.iso  (使用0通道上的刻录机以32倍速刻录光盘镜像文件boot.iso)
cdrecord -scanbus (扫描刻录机的通道号)

boot:linux askmethod (询问安装方式)
xvidtune  (对显示模式进行微调)

netconfig  图形化的网络配置工具,仅适用于redhat
route -n  以IP方式显示网关
route del -net 192.168.103.0/24  从路由表中删除192.168.103.0/24目的地
route add -net 192.168.103.0/24  在路由表中增加192.168.103.0/24目的地
route add -net 192.168.103.0/24 eth1 在路由表中增加192.168.103.0/24目的地(通过eth1网卡),如果不指定设备,系统将会自动判断设备
route add default gw 192.168.103.254  在路由表中增加缺省路由(即在访问指定IP在路由表中找不到的话,自动通过192.168.103.254网关进行转发)
route add -net 10.5.2.0/24 gw 192.168.103.2  在路由表中增加通过192.168.103.2网关访问10.5.2.0/24网段
/etc/sysconfig/static-routes  保存自定义的静态路由表
该文件的写入格式:
any net 10.5.2.0/24 gw 192.168.103.2
相当于命令:
route add -net 10.5.2.0/24 gw 192.168.103.2
/etc/hosts 文件的格式
/etc/resolv.conf    DNS服务器信息
/etc/sysconfig/network  网络的基本信息(仅redhat,不通用)

zebra   linux下的动态路由器
telnet  远程登录
ssh  安全远程登录
telnet 192.168.0.254 80  用于检查指定机器的80端口是否可用
telnet 192.168.0.254 25 
openssh for windows
grep ssh /etc/services
rsh,dump,rsync,telnet都可以被ssh代替
scp root@192.168.0.254:/etc/services ./   以root用户登录192.168.0.254拷贝该机器上的/etc/services文件拷贝至本机的当前目录中
sftp 用ssh协议连接至指定机器进行类似ftp方式的文件上传下载
netstat  -tanlp  显示本地开放的端口
nmap 192.168.0.254  扫描远程机器上开放的端口
nslookup/host/dig  测试DNS的工作
traceroute [url]www.online.sh.cn[/url] 跟踪路由
links  文本浏览器
lftp    ftp客户端
gftp gftp客户端
wget -c [url]ftp://www.linuxeden.com/1.isn[/url]  以断点续传方式下载文件
wget -cb [url]http://www.linuxeden.com/1.isn[/url]  在后台下载文件
wget -r --level 3 [url]http://www.sohu.com[/url]  下载该网站,仅三级链接
sysklogd  (syslogd系统程序日志,klogd内核日志)
syslogd产生的日志存放于/var/log中
/etc/syslog.conf
*.info 任何程序产生的info级别及info级别以上的才记录
*.=info 任何程序产生的info级别才记录
mail.none  mail的任何信息不记录
*.info:mail.none:authpriv.none:cron.none  /var/log/messages
mail.*       /var/log/maillog
cron.*       @192.168.0.10 (将该日志发送到192.168.0.10机器上)
service syslog restart

允许远程机器将日志发送到本机
修改/etc/sysconfig/syslog
SYSLOGD_OPTIONS="-m 0 -r"
hdparm 显示设置硬盘的参数
hdparm /dev/hda 显示/dev/hda的参数
hdparm -c 1 /dev/hda 打开/dev/hda的32位IO
hdparm -c 0 /dev/hda 设置/dev/hda的IO为16位
hdparm -d 1 /dev/hda 打开/dev/hda的DMA方式
hdparm -d 0 /dev/hda 关闭/dev/hda的DMA方式
hdparm -t /dev/hda 测试硬盘读取速度
 
raid与LVM
=======================
常用raid级别有:0、1、5
raid 0 将数据分别存储在两个设备上,速度快,容量为设备之和,但比较危险,至少2个设备
raid 1 镜像模式,至少2个设备
raid 5 带校验位的镜像模式,至少3个设备
linux系统可以实现软raid,创建一个raid的步骤如下:
(1)使用fdisk工具划分标志为fd的分区
(2)安装raidtools软件包
(3)建立/etc/raidtab文件,可以用:cp /usr/share/doc/raidtools-1.00.3/raidtab.sample /etc/raidtab来复制一个样本文件,在此基础上进行修改
(4)根据/etc/raidtab文件中描述的raid设备用mkraid命令来生成:mkraid  /dev/md0
(5)激活raid设备:raidstart /dev/md0
(6)创建文件系统,如:mkfs -t ext3 /dev/md0
(7)用mount命令挂载即可
LVM(Logical Volume Manager 逻辑卷管理)
LVM的工作原理是用物理分区及设备来构成VG(volume group 卷组),然后在VG中划分LV(logical volume 逻辑卷),然后在LV上建立文件系统。
VG就像一个硬盘,LV就像从硬盘上划分出来的分区。
LVM的好处是可以轻松的改变VG及LV的大小,VG大小的改变是通过增减物理分区及设备来实现的。
实现LVM的步骤如下:
(1)使用fdisk工具划分出标志为8e的分区(整个硬盘及raid设备不需此操作)
(2)把物理分区及设备变成VG可用的PV(physical volume 物理卷),即添加一个标志。如:pvcreate /dev/hda5
(3)建立VG,如:vgcreate vg1 /dev/hda5 /dev/hda6 /dev/md0 (建立vg1卷组由hda5,hda6,md0构成)
(4)在VG中划分LV,如:lvcreate -L 20M -n lv1 vg1(在vg1这个卷组中划分一个名为lv1,大小为20M的LV)
(5)在LV上建立文件系统,如:mkfs -t ext3 /dev/vg1/lv1
(6)挂载LV,使可用,如:mount /dev/vg1/lv1 /mnt/test
更改VG的容量:
(1)增加容量:vgextend vg1 /dev/hda7
(2)减小容量:vgreduce vg1 /dev/hda1
在移除PV之前,应用pvdisplay命令确认该PV没用被LV使用,如:pvdisplay /dev/hda1
更改LV的大小:
增加:e2fsadm -L+20M /dev/vg1/lv1
减少:e2fsadm -L-20M /dev/vg1/lv1
 
==================================================================
RH253
==================================================================
系统服务的启动
1) /etc/inittab  系统启动时自动启动的服务
init
/etc/rc脚本会自动执行/dev/rc.d目录下的脚本
/etc/rc.d/rcX.d目录下K开头的不执行,S开头的执行(X代表启动类型)
/etc/xinetd.d
/etc/rc.d/rc.local是系统启动的最后一个执行脚本,进行收尾工作。
chkconfig --list  [Server Name] 显示服务在系统启动时自动运行的状态
chkconfig --level 23 vsftpd on  在运行级别为2、3时自动启动vsftpd服务
====================================================================
DNS Server (Domain Name System) bind-***.rpm(安装文件名)  named (服务名)
端口:UDP 53 或 TCP 53
====================================================================
/dec/resolv.conf  指定系统使用DNS Server的IP地址
FQDN (fully qualified domain name)
FQDN实例:
[url]www.online.sh.cn[/url]  www为主机名
    online.sh.cn  online域(子域)
           sh.cn  sh域(子域)
             .cn  cn域(顶级域)
DNS数据文件中@表示当前域名,即为/etc/named.conf中定义的zone后的名字
如果第一个字段为空时,默认取自上一条语句的第一个字段
只有域才有NS及MX
域定义文件解析:
===================================
/etc/named.conf
===================================
options {
 directory "/var/named";
};
zone "example.com" IN {
 type master;
 file "example.com.zone";
}
zone "151.100.126.in-addr.arpa" IN {
 type master;
 file "126.100.151.zone";
}
===================================
===================================
/var/named/example.com.zone
===================================
@ IN SOA station1.example.com. root.station1.example.com. (
 2001101100 ; 序列号(用于更新)
 1H  ; 刷新辅助DNS的更新时间(1小时)
 5M  ; 重试次数(5分钟)
 1W  ; 重试失效日期(1星期),即5分钟试一次,连试一星期还不成功,则作废
 1M )  ; TL时间
@ IN NS station1.example.com.
station1.example.com. IN A 126.100.151.1
www   IN A 126.100.151.1
ftp   IN A 126.100.151.26
www1   IN CNAME station1.example.com.
@ IN MX 10 station1.example.com.
===================================
===================================
对以上两个文件的解析
===================================
/etc/named.conf
directory "var/named";  指定了文件的存放路径
/var/named/example.com.zone
@ 表示域名,即用/etc/named.conf中的"example.com"这一段来替换
一个完整的域名必须以.来结束,否则系统认为是一个主机名,如:www,系统会自动替换成 [url]www.example.com[/url].
@ IN MX 10 station1.example.com.这一句指定了example.com这个域中的邮件服务器为station1.example.com.这台机器,级别为10

====================================================================
Samba Service
端口:137/udp,138/udp,139/tcp
====================================================================
安装文件:
samba-****.rpm
samba-common-***.rpm
samba-client-****.rpm
服务名:
nmbd
smbd
配置文件:
/etc/samba/smb.conf
服务启动方法:
service smb start
====================================================================
启用一个共享的操作流程:
1) useradd -s /bin/false karl  (在系统中增加一个用户karl,并使之不能登录系统)
2) smbpasswd -a karl (把karl用户添加到samba系统中,为之设置密码)
3) groupadd legal (添加一个组)
4) usermod -G legal karl (把karl用户添加到legal组中)
5) mkdir -p /home/depts/legal (建立共享目录)
6) chgrp legal /home/depts/legal (更改目录的拥有者,以便拥有读写的权限)
7) chmod 3770 /home/depts/legal (实现在该目录中,只有文件拥有者才能更改)
8) vi /etc/samba/smb.conf  (在该文件中添加以下语句)
 [legal]
   comment = Legal's files
   path  = /home/depts/legal
   public = no
   write list = @legal
   create mask = 0660
9) service smb start (启动samba服务)
10)smbclient //localhost/legal -U karl (测试)
挂载samba共享目录:
    smbmount //192.168.0.1/myshare /mnt/smb -o username=tom

====================================================================
Sendmail Service(一种SMTP服务器)
端口:25/tcp
====================================================================
安装文件:
sendmail-****.rpm
sendmail-cf-***.rpm  (缺少该软件包将造成无法通过m4的翻译)
sendmail-doc-****.rpm
m4-***.rpm
procmail-***.rpm
服务名:
sendmail
配置文件:
/etc/mail/sendmail.cf  (主配置文件)
/etc/mail/sendmail.mc  (宏文件,用于生成主配置文件)
服务启动方法:
service sendmail start
MX
host -t MX example.com
domain22.example.com     IN  MX 5                    station22
域        优先级为5(数字越小优先级越高)   该域哪一台主机为邮局

RHCE考试的操作步骤:
sendmail.mc中:
(1)FEATURE(user_cw_file)dnl 这一语句引出了local-host-names这个文件
local-host-names这个文件指定sendmail为哪一个域服务
如:在该文件中加入:domain22.example.com
(2)DAEMON_OPTIONS('Port=smtp,Addr=127.0.0.1, Name=MTA')dnl  (sendmail的监听端口)
在这句话前加上dnl用于注释掉这句话
netstat -tnl
显示有0.0.0.0:25这句话就对了

/usr/share/sendmail-cf/README提供了新老版本的配置文件的变化说明及一些宏语言说明
 
 
/etc/mail/sendmail.mc的一些简要说明
(1)注意在括号中的字符串,字符串的左侧不是单引号,是数字键1左侧的字符
(2)dnl为注释符
(3)某一语句最后紧跟着dnl,其作用是防止该语句的结尾出现空格造成m4翻译出错。

dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN LAIN')dnl
dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
这两句话必须同时打开或同时关闭,打开之后就能实现对用户进行认证才能发信的功能
FEATURE(`access_db',`hash -T<TMPF> -o /etc/mail/access.db')dnl
是否允许access功能
/etc/mail/access
用于控制邮件处理
RELAY  转发
 

makemap hash  access < access   用于生成access.db
/etc/mail/virtusertable
/etc/aliases  别名
修改好这个文件之后必须执行newaliases才能生效
例:
bin: root    发送给bin的邮件实际发送给root
daemon: root 发送给daemon的邮件实际发送给root
POP3/IMAP
IMAP 可以远程存取邮件,邮箱是放在服务器上的,因此比较占用服务器资源    143端口
POP3 大多数用的,用户邮箱存放在本地计算机,必须读取到本地才能查看邮件  110端口

imap-***.rpm  (此包含有imap及POP3服务)
chkconfig imap on
chkconfig ipop3 on
service xinetd restart
用netstat -tnl检查
110端口的为POP3服务已启动
143端口的为imap服务已启动
在google中输入RFC POP3进行查找,可以找到POP3的文档
在google中输入RFC SMTP进行查找,可以找到SMTP的文档
在google中输入RFC IMAP进行查找,可以找到IMAP的文档

FEATure(promiscuous_relay)dnl(OPEN RELAY,转发任意邮件)勿用
 
安装vnc
在xwindows的控制台窗口中打入:vncviewer  192.168.0.254:1  查看远程机器屏幕
 
====================================================================
Apache Web Server
端口:80
====================================================================
安装文件:
httpd-***.rpm
httpd-manual-***.rpm
配置文件:
/etc/httpd/conf/httpd.conf
服务启动方法:
service httpd start
其他文件
run/httpd.pid   进程文件
====================================================================
DocumentRoot   网站根目录的绝对路径
Timeout 300   超时时间(秒)
KeepAlive Off   是否允许永久连接
MaxKeepAliveRequests 100 一个连接的最大的请求次数
StartServers 1   服务器启动的数量(服务进程)
mod_userdir.so   允许用户建立个人主页
Options Indexes Follow
elinks文本流览器的使用简介
安装软件名:elinks-***.rpm
配置文件:~/.elinks/elinks.conf
为elinks设置HTTP代理服务器:
(1) 按ESC键调用出elinks的菜单
(2) 选择Setup/Options manager菜单
(3) 选择Protocols,按空格展开子菜单,直到选中Host and prot-number
(4) 按->键选中[Edit]按回车
(5) 在value:后输入代理服务器的信息,如:126.100.151.2:3128,然后进行保存

虚拟主机配置:(以本机IP为192.168.0.2为例)
(1) vi /etc/httpd/conf/httpd.conf
=============================
NameVirtualHost 192.168.0.2
<VirtualHost 192.168.0.2>
    ServerName  www2.example.com
    ServerAdmin   [email]webmaster@station12.example.com[/email]
    DocumentRoot /var/www/virtual2/html
    ErrorLog  logs/www2.example.com-error_log
    CustomLog  /var/www/virtual2/html
    <Directory /var/www/virtual2/html>
        Options Indexes Includes
    </Directory>
</VirtualHost>
=============================
(2) mkdir /var/www/virtual2
    mkdir /var/www/virtual2/html
(3) vi /var/www/virtual2/html/index.html
=============================
<b>This is a www2.example.com web station</b>
=============================
(4) dig www2.example.com
(5) service httpd restart
(6) elinks [url]http://www2.example.com[/url]
CGI配置:
(1) mkdir /var/www/virtual2/cgi-bin
(2) vi /var/www/virtual2/cgi-bin/test.sh
========================================
#!/bin/bash
echo Content-Type:text/html
echo
echo "<pre>"
echo My username is :
whoami
========================================
(3) chmod 555 /var/www/virtual2/cgi-bin/test.sh
(4) vi /etc/httpd/conf/httpd.conf (在虚拟主机配置的基础上增加ScriptAlias语句)
=================================
NameVirtualHost 192.168.0.2
<VirtualHost 192.168.0.2>
    ScriptAlias /cgi-bin/  /var/www/virtual2/cgi-bin/
    ServerName  www2.example.com
    ServerAdmin   [email]webmaster@station12.example.com[/email]
    DocumentRoot /var/www/virtual2/html
    ErrorLog  logs/www2.example.com-error_log
    CustomLog  /var/www/virtual2/html
    <Directory /var/www/virtual2/html>
        Options Indexes Includes
    </Directory>
</VirtualHost>
=================================
(5) service httpd restart
(6) elinks [url]http://www2.example.com/cgi-bin/test.sh[/url]
为网站设置密码:
(1) vi /var/www/virtual2/html/.htaccess
=======================================
AuthName "restricted stuff"
AuthType Basic
AuthUserFile /etc/httpd/conf/www2.htpasswd
require  valid-user
=======================================
(2) htpasswd -mc /etc/httpd/conf/www2.htpasswd jone (增加一个用户jone并设置密码)
(3) chgrp apache /etc/httpd/conf/www2.htpasswd  (www2.htpasswd文件必须设置为apache组可读)
(4) chmod g+r /etc/httpd/conf/www2.htpasswd
(5) vi /etc/httpd/conf/httpd.conf (在<Directory>块中增加AllowOverride语句)
=================================
NameVirtualHost 192.168.0.2
<VirtualHost 192.168.0.2>
    ScriptAlias /cgi-bin/  /var/www/virtual2/cgi-bin/
    ServerName  www2.example.com
    ServerAdmin   [email]webmaster@station12.example.com[/email]
    DocumentRoot /var/www/virtual2/html
    ErrorLog  logs/www2.example.com-error_log
    CustomLog  /var/www/virtual2/html
    <Directory /var/www/virtual2/html>
        Options Indexes Includes
 AllowOverride AuthConfig
    </Directory>
</VirtualHost>
=================================
(6) service httpd restart
(7) elinks [url]http://www2.example.com[/url] (将提示输入用户名密码)
====================================================================
squid 代理服务器
端口:3128
====================================================================
安装文件:
squid-***.rpm
配置文件:
/etc/squid/squid.conf
注:运行squid的主机必须配置好完整的主机名,如:mymac.abc.com
====================================================================
一个代理设置实例:
vi /etc/squid/squid.conf
在acl CONNECT method CONNECT这一行后加入:
acl example src 192.168.0.0/24    (对源地址192.168.0网段的规则命名为:example)
然后在# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS这一行后加入:
http_access allow example    (对规则名为example开放http代理)
保存好之后,重启服务
在客户机上设置,端口为:3128

=====================================================
vsftpd
端口:21  用户监听
端口:20  数据传输(传输文件时才开启),主动方式
(被动方式下,此数据传输端口会随机)
=====================================================
安装文件:
vsftpd-***.rpm
配置文件:
/etc/vsftpd/vsftpd.conf
服务启动方法:
service vsftpd start
=====================================================
dirmssage_enable=YES  用户登录成功后显示目录中的.messages中的内容
xfrelog_enable=YES    上载下传的日志记载
connect_from_port_20=YES 数据传输端口从20开始
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
chroot_local_user
ls_recurse_enables=YES 允许客户端使用ls -R功能
userlist_enable=YES  禁止/etc/vsftpd.user_list文件中的用户登录FTP
userlist_eanble=NO   允许...
tcp_wrappers=YES  开启tcp_wrappers功能
默认文件权限:666
======================================================
NFS
======================================================
安装文件:
nfs-utils-***.rpm
服务启动方法:
service nfs start
======================================================
vi /etc/exports
===============
/var/ftp/pub *(rw,sync)
/home  192.168.0.0/255.255.255.0(ro,sync)
/home/guest 192.168.0.0/255.255.255.0(ro,sync) 192.168.3.0/255.255.255.0(rw,sync)
===============
* 代表所有主机
showmount -e server1   检查server1上的可以访问的列表
mount server1:/var/ftp/pub /mnt/nfs (NFS的挂载方式)
mount //server1/sharename  /mnt/smb(smb的挂载方式)
man exports
all_squash 选项时映射为nfsnobody
no_root_squash  服务端与客户端用户的UID一一对应

portmap必须启动
=======================================================
DHCP
端口:udp/67(服务端) udp/68 (客户端)
=======================================================
安装文件:
dhcp-***.rpm
服务启动方法:
service dhcpd start
=======================================================
cp /usr/share/doc/dhcp***/dhcpd.conf.sample /etc/dhcpd.conf
default-lease-time 21600;  默认租用地址保留时间
邦定MAC地址
host ns {
 next-server marvin.redhat.com;   网络启动的服务器
 hardware ethernet 12:34:56
}
 
========================================================
NIS
========================================================
注:仅考客户端
/etc/yp.conf
安装文件
ypbind-***.rpm  (客户机端的服务程序,与服务器邦定,获取帐号信息)
ypserv-***.rpm  (服务器端的服务程序)
yp-tools-***.rpm  ()
portmap必须启动
NIS v2(公开的版本)
NIS v3(收费版本)
authconfig(客户机邦定工具)
ypcat passwd 显示服务器上的帐号(注:如果看到帐号,说明邦定成功)
如果服务器端的用户ID与本地用户的ID相同,那登录的所有操作都认定为本地用户
/etc/nsswitch.conf  (配置本地优先,还是NIS优先)

/usr/lib/yp/ypinit  -m  初始化主服务器
/usr/lib/yp/ypinit  -s server1.example.com 初始化成从服务器
domainname
/etc/sysconfig/network中:
NISDOMAIN=
新增一个用户:
(1)adduser test
(2)cd /var/yp
(3)make
更改密码:
(1)service yppasswdd start (服务端启动yppasswdd服务)
(2)yppasswd 在客户端更改密码
========================================================

autofs
/etc/auto.master
/etc/auto.misc
service autofs restart

tom -ro,soft,intr server1:/home/tom (一个用户的例子)
* -ro,soft,intr server1:/home/&  (匹配所有用户的例子)
        -fstype=nfs,ro
 

=================================================================
NFS、NIS、autofs三者相结合的工作
=================================================================
实现用服务器的帐号在本地登录,并且用户主目录也存储在服务器端
=================================================================
注:服务器为:192.168.0.1   客户端为:192.168.0.2 为例
1、在服务器端配置NFS
   (1) rpm -Uvh nfs-utils-1.0.5-3.rpm
   (2) vi /etc/exports
 /home *(rw,sync)
   (3) service portmap restart
   (4) service nfs restart
   (5) showmount -e 192.168.0.1   (验证nfs是否正确)
2、在服务器配置NIS
   (1) rpm -Uvh ypserv-***.rpm  (安装服务器端的服务程序)
   (2) rpm -Uvh yp-tools-***.rpm (安装NIS工具)
   (3) vi /etc/sysconfig/network  (让系统启动时自动设定域名为mydomain)
 NISDOMAIN=mydomain
   (4) domainname mydomain (让域名mydomain立即生效)
   (5) vi /var/yp/Makefile
 all: passwd group   (先把all这一区域用#屏闭掉,再在前加上)
   (6) service portmap start
   (7) service ypserv start
   (8) rpm -Uvh make*.rpm  (安装make包)
   (9) /usr/lib/yp/ypinit -m
 按Ctrl-D,按y,回车
 注:第二次开始用cd /var/yp,make命令进行更新
   (10)service yppasswdd start
   (11)service ypserv restart
   (12)rpcinfo -p 192.168.0.1  (检查NIS)
3、在客户端设置NIS
   (1) rpm -Uvh ypbind*.rpm
   (2) authconfig
 填入:域名为mydomain  服务器为:192.168.0.1
   (3) ypcat passwd
4、在客户端设置autofs
   (1) rpm -ivh autofs-***.rpm
   (2) vi /etc/auto.master
           /home   /etc/auto.my --timeout=60
   (3) vi /etc/auto.my
           *  -rw,soft,intr    192.168.0.1:/home/&
   (4) service autofs restart
通过以上步骤就能在客户端的机器上用服务器上的用户帐号登录
=======================================================================
PAM  (可插拔认证模块)
系统的所有认证统一由PAM负责
=======================================================================
安装文件:
pam-***.rpm
配置文件:
/etc/pam.d/*  (每一个服务对应一个配置文件)
/lib/security/*.so (认证模块库)
/usr/share/doc/pam*/txts/pam.txt (pam的具体说明)
/usr/share/doc/pam*/txts/* (每一个认证模块的说明)
注:PAM配置文件修改保存后立即自动生效
考试主要涉及:pam_access.so、pam_listfile.so这两个模块文件
=======================================================================
/etc/pam.d/login 的内容
#%PAM-1.0
auth       required     pam_securetty.so
auth       required     pam_stack.so service=system-auth
auth       required     pam_nologin.so
account    required     pam_stack.so service=system-auth
password   required     pam_stack.so service=system-auth
session    required     pam_stack.so service=system-auth
session    optional     pam_console.so
=======================================================================
具体分析:
auth  required pam_securetty.so
验证的类型 验证级别  验证模块名
 
验证类型主要有:
(1) auth 验证
(2) account 帐号验证
(3) password 更改密码
(4) session 会话(从登录到退出系统)
验证级别主要有:
(1) required 必须
(2) optional 可选
(3) sufficient 只需(通过了这一句,接下来的就不用验证)
验证模块介绍:
(1)pam_securetty.so 只允许root用户在安全控制台登入(安全控制台的列表存放于/etc/securetty中)
(2)pam_nologin.so 如果存在/etc/nologin文件,不允许普通用户登录并显于nologin文件的内容
(3)pam_console.so 将终端文件(/dev/tty*)的属主改为登录用户
(4)pam_stack.so  调用其后的PAM配置文件,进行子验证
   如:pam_stack.so service=system-auth(调用system-auth进行验证)
(5)pam_access.so 限制用户登录(默认配置文件为:/etc/security/access.conf)
   也可以指定一个,如:pam_access.so accessfile=/etc/access.txt
(6)pam_listfile.so 限制用户访问
pam_listfile.so item=user sense=allow file=/etc/vsftpd.ftpusers onerr

例:
只允许tom访问ssh
sshd
auth rquired pam_listfile.so item=user sense=allow file=/etc/sshuser onerr=fail

=======================================================================
iptables
=======================================================================
iptables -L -n  (查看本地的配置)
iptables -A INPUT -p icmp -j DROP  (在input中增加一条规则,把所有类型为icmp的包丢弃)
iptables -A OUPUT -p icmp -j DROP  (在output中增加一条规则,把所有类型为icmp的包丢弃)
iptables -F INPUT   (清空INPUT中的所有规则)
iptables -A INPUT -s ! 192.168.0.0/24 -p tcp --dport 23 -j DROP
禁止除了192.168.0.0/24网段之外的主机访问本机的TCP/23端口(在INPUT中限制)
iptables -A OUTPUT -d ! 192.168.0.0/24 -t tcp --sport 23 -j DROP
禁止除了192.168.0.0/24网段之外的主机访问本机的TCP/23端口(在OUPUT中限制)
iptables -L -n --line-numbers  (列出规则的ID号)
iptables -d INPUT 2 (删除INPUT中的第二条规则)
iptables -F FORWARD DROP
iptables -A INPUT -p tcp --dport 80 -j ACCEPT  (打开80端口)
iptables -A INPUT -p tcp --dport 25 -s 192.168.0.0/24 -j ACCEPT(为192.168.0.0/24网段打开25端口)
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 25 -d 192.168.0.0/24 -j ACCEPT
service iptables save  (保存当前的规则运至:/etc/sysconfig/iptables)
iptables -A OUTPUT -p tcp --sport 25 -d 192.168.0.0/24 -m state --state ESTABLISHED -j ACCEPT  (确认这个包是由客户端发起的,而服务器主动发起的则过滤掉)
man netstat
/state 可以查看状态的说明
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED.RELATED -j ACCEPT
FTP被动方式所用的规则(在已经产生的连接后产生的一个新的连接)
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
打开DNS
打开访问WEB的功能:
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --sport 80 -m state --state ESTABLISHED
iptables -A OUTPUT -p tcp --sport 25 -d 192.168.0.0/24 -j ACCEPT

/etc/services  (记录了服务对应的端口)
打开本地到本地的访问:
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

iptables -t nat -L -n (显示nat表)
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp  --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 \> -j SNAT --to-source 202.96.5.1 (把所有192.168.0.0/24网段中的IP转换成202.96.5.1)
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 \> -j MAQUERADE (自动判断公网地址,把所有192.168.0.0/24网段中的IP转换成该公网址)
/proc/sys/net/ipv4/ip_forward (为1时打开IP转发,为0时不进行转发)这是内存中的一个变量,重启失效
echo 1 > /porc/sys/net/ipv4/ip_forward (把ip_forward设置为1)
/etc/sysctrl.conf   (ip_forward的配置存放在该文件中)

iptables -A INPUT -s 192.168.0.174 -m state --state NEW -j DROP  (禁止192.168.0.174这台机器访问本机)
iptables -A INPUT -s 192.168.0.23 -p icmp --icmp-type echo-request -m limit --limit 6/minute --limit-burst 2 -j ACCEPT
(允许192.168.0.23这台主机使用ping命令测试本机,但一分钟本机仅回应6个,突发同时回应2个)
iptables -A INPUT -s 192.168.0.23 -p icmp --icmp-type echo-request -j DROP (把23这台主机的Ping包丢弃)
这两台规则组合后的效果是:23这台主机用ping测试本机,一分钟仅回应6个,突发同时回应2个
=======================================================================
tcp_wrappers  (控制基于TCP的服务器)
=======================================================================
/usr/lib/libwrap.so
/etc/host.deny(存放禁止的服务)
/etc/host.allow(存放允许的服务)
注:host.allow优先
只有把libwrap.so编译进程序中,才能通过该方式控制该程序的访问
netstat -tnlp
ldd /usr/sbin/vsftpd (查看libwrap.so是否编译进vsftpd这个程序中)
任何通过xinetd来启动的服务,都能通过该方式控制
vsftpd: ALL EXCEPT 192.168.0.5
 

=======================================================================
加密
=======================================================================
安装包:gnupg-***.rpm
对称加密(symmetric encryption) 加、解密使用同一个密码
不对称加密   加密密码(私钥、公钥)  解密密码(公钥、私钥)
不对称加密的工作机制:
每个用户有两把钥匙(私钥和公钥)。
当A用户想把一个文件加密后传给B用户时。A用户首先获得B用户的公钥,用B用户的公钥对文件
进行加密,然后把加密后的文件传给B用户,B用户就用自己的私钥对加密文件进行解密。
在这个流程中间,公钥是用来加密的,可以公开,私钥是用来解密的,因此不能公开。
(1) 文件传送双方生成公钥和私钥
      gpg  (首次执行时建立初始化文件,执行后,当提示“...your message”时,按CTRL+C)
      gpg  --gen-key  (生成公钥和私钥,提示算法时可以采用默认算法,并输入一个该公私钥的所属者名字)
(2) 关闭“using insecure memory”的警告提示
      echo no-secmem-warning >> ~/.gnupg/gpg.conf
(3) 查看所生成的公私钥
      gpg --list-keys
      gpg --list-secret-keys
(4) 输出公钥文件
      gpg --export Bobby > /tmp/bob.key  (把一个名为Bobby的公钥输出成/tmp/bob.key文件,该文件是二进制文件)
      或
      gpg --export --armor Bobby > /tmp/bob.key (通过--armor参数生成/tmp/bob.key为ASCII文件,便用通过email传送)
(5) 输入公钥
      gpg --import /tmp/bob.key
(6) 用输入的公钥对文件进行加密
      gpg --encrypt --armor --recipient Bobby message.txt  (用Bobby这个公钥对message.txt进行加密)
(7) Bobby私钥拥有者对加密文件进行解密
      gpg message.txt.asc

SSH
/etc/ssh/ssh_host.rsa_key.pub
如何启用imaps服务器  993端口
chkconfig imaps on
service xinetd restart
netstat -tnl  查看是否有993端口
README.IMAPS
cd  /usr/share/ssl/certs/
make
make imapd.pem
service xinetd restart
 

vi /etc/httpd/conf.d/ssl.conf
SSLCer
grep https /etc/services
netstat -tnl | grep 443
rpm -qf /etc/httpd/conf.d/ssl.conf
mod_ssl-2.0.46-25.ent  安装此
=======================================================================
=======================================================================
========================================================================
========================================================================
计划任务
at 在指定的时间执行命令(系统重启后会失效)
atq 列出由at命令安排的任务
atrm 删除指定的任务
=======================================================================
at命令指定时间的格式:
(1)at 8:00pm December 7  (在十二月七日下午八点执行指定的命令)
(2)at 7 am Thursday  (在每个星期四的上午七点执行指定的命令)
(3)at now +5 minutes  (在五分钟后执行指定的命令)
(4)at midnight +23 minutes (在凌晨后的第23分钟执行指定的的命令)
例:
[test@blue test]$at 6:00
at>rm -rf /tmp/*
at>(Ctrl-D)
=======================================================================
atq 查询系统中的计划任务
例:
[test@blue test]$atq
5 2004-06-29 06:00 a test
6 2004-06-29 07:00 a test
(任务号) (开始执行时间)    (创建任务的用户)
=======================================================================
atrm 删除指定任务
例:
[test@blue test]$atrm 5  (删除job ID为5的任务)
=======================================================================
控制哪些用户可以使用at命令,哪些用户不可以使用at命令
/etc/at.allow (将允许使用at命令的用户名存入此文件)
/etc/at.deny (将禁止使用at命令的用户名存入此文件)
=======================================================================