ULE 学习笔记



ls -l install.log

-:rw-r--r--: 1 :root: root :39410 :2012-12-03 :install.log

文件类型 : 权限位 : 硬链接 : 拥有者 : 所属组 : 文件大小 : 文件最后一次修改时间 : 文件名


文件类型:

- 普通文件

d 目录文件

b 块设备文件

l 软链接文件

c 字符文件

p 管道文件

s 套接字文件


ls  -l 长格式 -a 所有文件 -A所有文件(除了.和..) -h 按最大单位显示大小(总计那多了单位) -t 按时间排序(由最近到最远) -r 反向排序 -d显示目录信息 -R 递归显示(验证目录结构)


ctrl+l 清屏

ctrl+c 中断命令


获得帮助信息

1.ls --help

2.info ls

3.type ls

别名的制作与释放:

alias la='ls -lah'

unalias la

4.man ls

man 1 用户命令   *

man 2 系统调用

man 3 库调用

man 4 特殊文件

man 5 配置文件   *

man 6 游戏

man 7 杂项

man 8 系统命令   *

man 9 内核参考


makewhatis 维护后台man

man -f passwd 查询那些章节有相应说明

man -k passwd 模糊查询


cd /


/root 管理员root的家目录

/home  普通用户的家目录

/etc  配置文件文件

/usr  应用程序目录相当于Programs File

/var  服务器数据目录

/srv  服务器数据目录

/lib  系统模块和库文件 /usr/lib /usr/local/lib

/bin  用户命令目录 /usr/bin/ /usr/local/bin

/sbin 系统管理员命令目录 /usr/sbin/ /usr/local/sbin

/boot 引导程序目录

/dev  块设备目录

/tmp  临时文件目录

/media 媒体目录

/proc  (伪文件系统) 内存信息和进程信息

/sys   (伪文件系统) 和/proc/一样 更规整

/tftpboot  tftp服务用的目录

/misc  autofs服务用的目录

/net   autofs服务用的目录

/selinux selinux安全组件用的目录

/opt 第三方软件目录

/mnt 其他挂载点


cd ~和直接回车 回家目录  .. 上层目录 ../..上层的上层  . 当前目录 - 返回上次工作目录

pwd 查询所在位置 

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^12.3

查看文件内容的命令

head -n 50 install.log

head -50 install.log

tail -n 50 install.log

tail -50 install.log(文件最尾部的内容现是在屏幕上,并且不断刷新,是你看到最新的内容)

tail -f /var/log/messages  (service gpm restart 重新启动鼠标)

more install.log

less install.log

cat -n install.log

cat -b install.log (只显示有效行行号)


创建文件

touch aa.txt

touch cc.txt tt.txt

touch abc{1..10}.txt

touch ab{d,e}{1..5}.txt


创建目录

mkdir abc

mkdir abd abce

mkdir abc{1..10}

mkdie ab{e,d}{1..5}

mkdir -p xx/yy     -p 递归创建

mkdir -p -v  xx/yy  -v 显示创建过程


拷贝 cp

cp tt.txt /

cp /root/tt.txt /test.txt  拷贝过程重命名

cp -r xx/ /  拷贝目录


剪切 mv

mv cc.txt /

mv aa.txt oo.txt 当前目录下文件重命名

mv /root/abce  /  移动目录不需要参数


删除

rmdir  只能删除空目录

rm /root/abc.txt

rm -f /root/abc1.txt

rm -rf /root/abc1/

rm -rf *.txt

rm -rf ab*


练习:

1.创建以下目录结构(并且验证)

/aa

         /  \           mkdir -p /aa/ba/c{a..b} /aa/bb/cc

      /ba   /bb

       / \     \

   /ca  /cb   /cc


mkdir -p /aa/ba/c{a,b} /aa/bb/cc

ls -R /aa

tree /aa

tree -L 2 /


2.从ba进入ca目录有几种方法

2种

cd ca/

cd /aa/ba/ca/


3.拷贝/etc/man.config到ca/目录 有几种方法

2种

cp /etc/man.config /aa/ba/ca/

cp ../etc/man.config ../aa/ba/ca/


4.将ca目录下的man.config 移动到cc目录下并且改名字为haha.txt

mv /aa/ba/ca/man.config /aa/bb/cc/haha.txt

5.拷贝两次同一文件到同一位置 不提示直接覆盖

如:\cp install.log 

/bin/cp install.log /


unalias cp

cp install.log /



vim 文本编辑器(vi)

由命令模式进入输入模式的方法

a 当前字符后输入

A 当前行行尾输入

i 当前字符前输入

I 当前行行首输入

o 当前行的下一行输入

O 当前行的上一行输入

s 删除当前字符后输入(相当于改错)

S 删除当前行后输入

home键 行首  end键 行尾


命令模式

u 撤销一步操作

ctrl+r 重做

dd 删除当前行,并且ctrl+r不管用

x 删除当前字符的下一个字符,没有下一个字符就删除当前字符,并且ctrl+r不管用


yy 复制当前一行   p粘贴

50yy 复制50行

dd 剪切一行   p粘贴

50dd 剪切50行


dd 删除一行 50dd 删除50行


^行首  $行尾

d^ 删除当前字符到行首

d$ 删除当前字符到行尾


w下一个单词的首字符 b上一个单词的首字母

dw 删除一个单词(在单词首字符时,删除一个单词;不在首字符时,删除单词的后半部分)


G 尾行   gg 首行

572G 定位到572行

dgg  删除当前行到首行(若在首行,删除第一行)

dG   删除当前行到尾行(若在尾行,删除最后一行)


末行模式

:w :q  :wq

:q! :w! :wq!

:w /root/newfile   另存

:2,3w /root/newfile2  2-3行另存

:r /root/newfile2  追加读入

:e! 重现打开当前文件

:e /root/aa.txt  编辑一个文件


:set nu

:set nonu

:set autoindent   自动缩进功能

:set noautoindent


查找

/ab  n 下一个  N 上一个

?a   n 上一个  N 下一个


替换

%s/ab/$$/gc      %所有行   s交换    g全局  c交互式

3,6s/ab/$$/gc   3-6行

%s/^\t//  替换每行开头是制表符的

%s/\t//  替换每行第一个制表符

%s/\s//  去掉每行第一个空格


去掉空行

g/^\s*$/d



文件加密 

:X  


vim的配置文件cat /etc/vimrc(配置的时候在最后写入)


多文件操作

vim aa.txt cc.txt tt.txt

:args :next :prev :first :last 

ctrl+6 两个文件之间切换

 

vimdiff aa.txt cc.txt tt.txt

ctrl+w+w

vim -O aa.txt cc.txt tt.txt  横向

vim -o aa.txt cc.txt tt.txt 竖向


帮助文档位置:

/usr/share/vim/vim70/tutor/tutor.zh.euc 查看用cat


命令转换字符集

iconv -f UTF-8 -t gb18030 -o test.txt tutor.zh.euc

iconv -f 源字符集  -t 转换字符集   -o输出文件    源文件


用户管理


uid范围

uid 0         管理员

uid 1-499     系统用户

uid 500-60000 普通用户区间


添加用户

useradd user1

配置文件 /etc/passwd

abc:x:500:500:PTuser:/home/abc:/bin/bash

用户名:密码占位符:uid:gid:描述信息:家目录所在位置:shell


useradd -u 1000 -g 600 -c OOO -d /mnt/abc6 -s /bin/ksh  abc6

-u  uid  -g gid -c 描述信息 -d 家目录 -s shell


groupadd

组配置文件/etc/group

uplooking:x:1000:

组名:组密码占位符:gid:包含的用户


groupadd -g 1000 uplooking


练习:

添加组upup 指定gid为1200

groupadd -g 1200  upup

添加用户user10 uid 为1200 属于upup组 描述pt 家目录为mnt下 shell为bash

useradd -u 1200 -g upup  -c pt -d /mnt/user10 -s /bin/bash user10


su - user10

passwd user10

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^12.4


保存密码的信息的文件/etc/shadow

eric:$1$9L7gzVrX$SLueU9.LswAzNTDk1erwZ/:15679:0:99999:7:::


第一列 用户名

第二列 密码

第三列 最后一次修改密码的时间

第四列 密码最小时间

第五列 密码的最大时间

第六列 密码过期前警告时间

第七列 密码过期后帐号过期时间

第八列 帐号有效期

第九列 保留列


passwd -n 密码最小时间  -x 密码最大时间 -w 密码过期前警告时间 -i 密码过期后帐号过期时间  帐号



修改用户信息

usermod -u  -g  -c  -s  -d(-d只改写了配置文件,还得mv一下 mv /home/用户名/ 新目录)用户

usermod -L eric   锁定用户

usermod -U eric   解锁用户

usermod -l  新用户名  旧用户名

usermod -f  密码过期后帐号过期时间  

usermod -e  帐号过期时间20121210 用户名



修改组信息

groupmod -g 1500 uplooking(注意:修改用户组信息)

groupmod -n 新组命 旧组命(改组名)


修改密码信息

passwd -l eric  锁定密码

passwd -u eric  解锁密码

passwd -S eric  查询密码状态


练习:

1.添加组uplooking  gid为2000 添加用户zorro属于uplooking组  修改zorro用户的名字为 newzorro  uid为2000 描述为hello 家目录为/mnt/下 shell为bash

修改uplooking组的gid为2500 查看id newzorro信息有什么变化 怎么修改正确


2.创建用户tom 和 jerry 分别设置密码为123 锁定tom账号 锁定jerry密码 tty2,3分别登录tom和jerry 是否能登录?不能返回结果是否一样?一样

查看shadow文件密码字段 两个用户有什么区别?


附加组

usermod -G yw,kf wg  (覆盖附加组)

usermod -a -G kf wg  (在原来基础上添加附加组)


删除用户

userdel -r abc(不加r的话,只删除配置文件,家目录没删)


删除组

groupdel uplooking(组内必须没有用户才能删)


保存创建用户时默认信息文件

/etc/default/useradd

HOME=/home

SHELL=/bin/bash


密码默认信息

vim /etc/login.defs 


手动管理用户

groupadd  uplooking


1.vim /etc/group

  uplooking:x:3000:


相当于这一步操作:useradd -g uplooking zorro


2.vim /etc/passwd

   zorro:x:3000:3000:ptuser:/home/zorro:/bin/bash

   mkdir /home/zorro

   cp /etc/skel/.bash*  /home/zorro/


相当于这一步操作:passwd  zorro


3.vim /etc/shadow

  zorro::15789:0:99999:7:::

  grub-md5-crypt 


在自己家里能否创建文件?


批量导入

1.cat user.txt 

ab1:x:3100:3100::/home/ab1:/bin/bash

ab2:x:3200:3200::/home/ab2:/bin/bash


newusers < user.txt


2.cat passwd.txt 

ab1:123

ab2:123


chpasswd < passwd.txt


终端登录测试


境变量配置文件

.bash_history 记录用户执行过的历史命令,当用户退出时写入文件

.bash_logout  记录当用户退出时执行的命令

.bash_profile 记录用户搜索命令的路径 

.bashrc       记录用户使用的别名


.bash_profile 登录级别环境变量配置文件

.bashrc       shell的环境边配置配置文件


/etc/profile  (全局)

/etc/bashrc


环境变量配置文件

/etc/profile

~/.bash_profile

~/.bashrc

/etc/bashrc


基本权限

-rw-r--r-- 1 robin uplooking   39410 12-03 22:22 install.log


               rw-  | r--     |r--

rwx      rwx rwx

robin   uplooking   other


root ----> robin -----> uplooking -----> other


对于文件 :

r---------> head tail cat......

w---------> vim > >>(重定向符)  

x---------> ./ 执行 (root只要有x就可以执行,普通用户需有rx)

对于目录:

r---------> ls (查看详细信息r-x)

w---------> touch mkdir rm (创建操作需要-wx)

x--------->  cd

tt.txt rwxrwxrwx jack uplooking 

jerry jerry


修改权限的命令

chmod 


chmod o+x file/dir

chmod u-r,g+x,o+rw file/dir

chmod ug-rw,o+rwx file/dir

chmod ugo+rw file/dir

chmod a+rwx file/dir

 

chmod u=rw file/dir

chmod u=r,g=w,o=x file/dir

chmod ug=rw,o=rwx file/dir

chmod ugo=rwx file/dir

chmod a=rwx file/dir


数字表示

r---------4    w---------2   x-------1

chmod 777 file/dir

562 r-xrw--w-    -wx-w---x 321

456 r--r-xrw-    r-x-wx--x 531


查询以下文件权限

/ 755

/etc 755

/var 755

/usr 755

/tmp 1777

/root/ 750

/home/tom 700

/etc/shadow 400

/etc/passwd 644

root创建文件的默认权限 644

root创建目录的默认权限 755

普通用户创建文件的默认权限 664

普通用户创建目录的默认权限 775


练习:

在/tmp目录下创建目录test 要求test权限拥有者可以创建删除进入,所属组可以查看 其他人无权限

chmod 740 test


修改拥有者和所属组

chown tom xx.txt

chgrp uplooking xx.txt

chown .jerry xx.txt

chown root.root xx.txt

.相当于:


chmod -R 777 test/       递归修改拥有者和所属组

chown -R jerry:uplooking

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^12.5


高级权限(普通用户执行某些命令时拥有管理员的权限)

suid

chmod u+s  file

对象:二进制可执行文件(不是普通文件)

作用:任何用户在执行含有suid权限的命令


实验:

修改权限,达到以下要求:

建立用zorro 使zorro使用less命令可以查看/etc/shadow文件(不能改变/etc/shadow文件权限)

先which less 找到二进制less命令目录,然后更改less的权限 chmod u+s /user/bin/less 


sgid

chmod g+s dir

对象:只能是目录

作用:任何用户在拥有sgid权限的目录下创建文件时,创建的文件都要继承该目录的组


实验:

在/tmp目录下创建test目录 该目录拥有者为root 所属组为uplooking 权限为777

用户tom 在/tmp/test下创建文件aa.txt 查看该文件拥有者和所属组 (tom tom)

在/tmp/test目录加上sgid权限   (chmod g+s /tmp/test/)

用户tom 在/tmp/test下创建文件cc.txt 查看该文件拥有者和所属组 (tom uplookin)

将/tmp/test目录的所属组改为redhat

用户tom 在/tmp/test下创建文件tt.txt 查看该文件拥有者和所属组 (tom redhat)


用户tom 在/tmp/test下创建目录dir 查看该目录拥有者和所属组   (tom redhat)

用户tom 在/tmp/test/dir下创建文件xx.txt 查看该文件拥有者和所属组 (tom redhat)


sticky(粘贴位,冒险位)

chmod o+t dir

对象:只能是目录

作用:任何用户在含有t权限的目录下创建的文件都属于该用户本身,其他人无权删除(root除外)


实验:

在/tmp目录下创建test目录 该目录拥有者为root 所属组为root 权限为777

创建两个用户tom和jerry

1.tom用户在/tmp/test下创建aa.txt

  jeery用户在/tmp/test下创建cc.txt

  tom和jerry能否互相删除对方文件?

2.在/tmp/test目录上添加t权限

  tom用户在/tmp/test下创建aa.txt

  jeery用户在/tmp/test下创建cc.txt

  tom和jerry能否互相删除对方文件?

  tom和jerry能否删除自己创建文件?

3.tom用户在/tmp/test下创建aa.txt

  jeery用户在/tmp/test下创建cc.txt

  root能否删除所有人文件?

4.tom用户在/tmp/test下创建aa.txt

  jeery用户在/tmp/test下创建cc.txt

  创建用户zorro 将/tmp/test目录拥有者改为zorro

  zorro能否删除所有人文件?


suid-------4   sgid---------2   sticky--------1


4777

3777

2777

1777


大小写区分源文件是否有x权限 (源文件如果没有x权限,高级权限没用)

ll tt.txt 

-rwsrwsrwt 1 root root 0 12-06 10:18 tt.txt

[root@localhost tmp]# chmod -x tt.txt 

[root@localhost tmp]# ll tt.txt 

-rwSrwSrwT 1 root root 0 12-06 10:18 tt.txt

[root@localhost tmp]# chmod +x tt.txt 

[root@localhost tmp]# ll tt.txt 

-rwsrwsrwt 1 root root 0 12-06 10:18 tt.txt


进程管理

ps -e(所有进程)-f(所有)

ps a所有在终端上运行的进程 au aux


top


状态

D    Uninterruptible sleep (usually IO)

       R    Running or runnable (on run queue)

       S    Interruptible sleep (waiting for an event

            to complete)

       T    Stopped, either by a job control signal or

            because it is being traced.

       W    paging (not valid since the 2.6.xx kernel)

       X    dead (should never be seen)

       Z    Defunct ("zombie") process, terminated but

            not reaped by its parent.

<    high-priority (not nice to other users)

       N    low-priority (nice to other users)

       L    has pages locked into memory (for real-time

            and custom IO)

       s    is a session leader

       l    is multi-threaded (using CLONE_THREAD, like

            NPTL pthreads do)

       +    is in the foreground process group


查看信息:cat/proc/cpuinfo  

         cat/proc/meninfo


kill -9   pid 强制结束

kill -15  pid 正常结束

pkill 进程名称  对应的是COMMOND

killall 进程名称

xkill 点到哪就结束到哪


ctrl+alt+backspace 杀掉桌面(注意保存桌面文件)


前后台切换

xclock -update 1

xclock -update 1 & 后台运行


ctrl + z  后台挂起

jobs 显示后台进程

bg [编号]  后台运行

fg [编号]  调到前台运行


kill %[编号] 杀后台进程


优先级调整(-20~~19)

nice -n -20 xclock -update 1

renice 10 -p pid(-p重新调整pid的优先级)


高级命令

cat -n /etc/passwd | head -20 | tail -1 | rev(左右颠倒) | tac(首尾颠倒)

sort 默认情况下,首字符排序 -n 按整个数字排序 -r 反向排序 -u(unique)去掉重复行

uniq 默认去掉连续重复行 -d显示连续重复行 -u显示不重复行 -c统计重复次数


过滤命令grep

grep 'root' /etc/passwd   

grep '^root' /etc/passwd  以root开头的

grep 'halt$' /etc/passwd  以halt结尾的

grep -v 'bash$' /etc/passwd  v去相反的结果


cut 以:结束

cut -d: -f 1 /etc/passwd 

cut -d: -f 1,7 /etc/passwd 

cut -d: -f 1-3 /etc/passwd 

cut -d: -f 1-3,7 /etc/passwd

截取字符

cut -c 1 /etc/passwd | head -5

cut -c 1,3 /etc/passwd | head -5

cut -c 1-3 /etc/passwd | head -5

cut -c 1-3,5 /etc/passwd | head -5

统计

wc -l 统计行数  -w 统计单词  -c 字符


1.统计你系统中有多少个用户可以登录到系统   cat /etc/passwd|grep 'sh$'|wc -l

1.统计你系统中有多少个用户可以登录到系统

grep -c bash /etc/passwd

grep bash /etc/passwd | wc -l

cut -d: -f 7 /etc/passwd | grep bash | uniq -c

       

2.ifconfig eth0 | awk -F':| +' '/Bcast/{ print $4 }'

192.168.1.253


ifconfig eth0 | head -2 | tail -1 | cut -d: -f 2 | cut -d' ' -f 1

ifconfig eth0 | grep Bcast | cut -d: -f 2 | cut -d' ' -f 1


3.stat abc.txt 

  File: “abc.txt”

  Size: 45              Blocks: 8          IO Block: 4096   一般文件

Device: 802h/2050d      Inode: 8421697     Links: 1

Access: (0640/-rw-r-----)  Uid: ( 3209/   shrek)   Gid: (    0/    root)

Access: 2012-12-06 15:21:56.000000000 +0800

Modify: 2012-12-06 15:21:56.000000000 +0800

Change: 2012-12-06 15:21:56.000000000 +0800

15:21:56

15:21:56

15:21:56


stat abc.txt |tail -3| cut -d' ' -f 3 | cut -d. -f 1

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^12.6

echo $$ 当前终端的pid   tty 查看当前登录终端

shell基础

!! 在执行一次上一条的命令

!858 在执行一次858行

!$ 引用上一条命令最后一个参数   和 alt+.相同作用

!ser 引用最后一条ser开头的命令


重定向符 > >>

1> 标准正确输出,如果文件不存在则创建,如果文件存在则覆盖

1>> 标准正确输出,如果文件不存在则创建,如果文件存在则追加

2> 标准错误输出,如果文件不存在则创建,如果文件存在则覆盖

2>> 标准错误输出,如果文件不存在则创建,如果文件存在则追加

&> 标准正确和标准错误输出,如果文件不存在则创建,如果文件存在则覆盖 /dev/null


循环语句

user.sh

#!/bin/bash

for i in {1..10}

do

        echo "abc$i is insert system!!!!!!!"

        useradd abc$i 2>> /tmp/user.err

        sleep 2

        echo "add password for user abc$i"      

        echo 123 | passwd --stdin abc$i &> /dev/null

        sleep 2

        echo "the abc$i information is wancheng!!!!!" 

done


判断语法

#!/bin/bash

if [ -f /tmp/aa.txt ]

then

        echo "the file is exist!!!!!find it now~!!!!!"

        sleep 2

        ls -l /tmp/aa.txt

        rm -rf /tmp/aa.txt

else

        echo "the file is not exist!!!!create it now!!"

        sleep 2

        touch /tmp/aa.txt

fi


压缩打包安装软件

dd if=/dev/zero of=/root/data bs=100M count=2

file file/dir 查看文件类型

du -sh 查看文件大小

查看二进制文件:hexdunp 二进制文件


压缩 gzip bzip2

gzip data

gunzip data.gz

bzip2 data

bunzip2 data.bz2


打包 tar

tar -cvf boot.tar /boot 打包/boot下的文件 

tar -tvf boot.tar  查看打包文件

tar -rvf boot.tar data  追加打包

tar -xvf boot.tar 解包


tar -cvf /home/boot.tar /boot 创建包的时候指定包路径

tar -xvf boot.tar -C /tmp/  解包指定路径


tar -zcvf boot.tar.gz /boot 创建以gzip方式压缩包

tar -ztvf boot.tar.gz  查看压缩包

tar -zxvf boot.tar.gz  解压缩包


tar -jcvf boot.tar.bz2 /boot 创建以bzip2方式压缩包

tar -jtvf boot.tar.bz2 查看压缩包

tar -jxvf boot.tar.bz2 解压缩包


tar -jcvf /tmp/boot.tar.bz2 /boot  创建压缩包的时候指定包路径

tar -jxvf boot.tar.bz2 -C /tmp  解压缩包指定路径


 

挂载

mount -t iso9660 /dev/cdrom /mnt

mount

umount /mnt 或者 umount /dev/cdrom

umount -l /mnt  强制卸载

软件安装

rpm -ivh httpd-2.2.3-63.el5.i386.rpm  安装

rpm -q httpd   查询是否安装

rpm -ql httpd   查询安装位置

rpm -ql httpd | cut -d\/ -f 2 | sort -u

rpm -qi httpd     安装过包的信息

rpm -qf /etc/httpd/conf/httpd.conf检索一个文件有哪个安装包安装出来的   

rpm -qf `which useradd`          查询命令的安装包

rpm -e httpd   移出软件包

rpm -qa | grep 'lib'     查询所有安装包(安装了的)中含有lib关键字的包


检索未安装软件的信息

rpm -qpi samba-3.0.33-3.37.el5.i386.rpm 查询未安装包的信息

rpm -qpl samba-3.0.33-3.37.el5.i386.rpm     安装之后位置

rpm -ivh httpd-2.2.3-63.el5.i386.rpm --force  强制安装(丢了某些配置文件后,重新安装包后提示某些文件已经安装过)


依赖关系

rpm -ivh httpd-devel-2.2.3-63.el5.i386.rpm 

warning: httpd-devel-2.2.3-63.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

error: Failed dependencies:

        apr-devel is needed by httpd-devel-2.2.3-63.el5.i386

        apr-util-devel is needed by httpd-devel-2.2.3-63.el5.i386


httpd 依赖 apr-devel 、apr-util-devel

解决 先安装依赖包

rpm -ivh apr-devel

rpm -ivh apr-util-devel

rpm -ivh httpd-devel-2.2.3-63.el5.i386.rpm 

rpm -e apr-devel --nodeps  不检测依赖关系卸载


yum库(解决rpm包的依赖关系)

1.mount /dev/cdrom /mnt

2.vim /etc/yum.conf

   gpgcheck=0

3.cd /etc/yum.repos.d/

  mv  rhel-debuginfo.repo  rhel-debuginfo.repo.bak

  touch yum.repo

  vim yum.repo

  [rhel5u8]

  name=cdrom yum

  baseurl=file:///mnt/Server

  enabled=1

  gpgcheck=0


测试使用

yum list yu  列出安装包

yum install httpd-devel    安装

yum remove httpd-devel     卸载

yum reinstall httpd-devel  再安装一次

yum clean all              清楚缓存


rpm --import RPM-GPG-KEY-redhat-release  导入key id


建库

1.cp /mnt/Server/* /yum/


2.rpm -ivh createrepo-0.4.11-3.el5.noarch.rpm (先安装createpope,在光盘上)

createrepo /yum 

3.yum库配置文件指向/yum


制作镜像(两种方法)

cat /dev/cdrom >> /rhel5u8.iso

dd if=/dev/cdrom of=/rhel5u8.iso


加载光盘镜像

mount rhei5u8.iso /mnt/ -o loop

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^12.7

安装包


lftp 192.168.1.253

lftp 192.168.1.253:~> ls

lftp 192.168.1.253:~> get biji         (get后面是要下载的文件)  

lftp 192.168.1.253:~> mirror software  (mirror后面是目录)

lftp 192.168.1.253:~> exit


source packet

1./configure --prefix=/usr/local/lftp

2.make  (如果err : make clean)

3.make install

4.cd /usr/local/lftp/bin  

  ./lftp加ip地址 

(或者先将当前目录加入PATH=$PATH:.然后直接lftp +ip地址)


src.rpm

rpm -q rpm-build 确定安装过rpm-build

rpm -ivh lftp-3.5.1-2.fc6.src.rpm

cd /usr/src/redhat/SPECS/

rpmbuild -bb lftp.spec rmp文件的重建


计划任务

at 13:49 

at> touch /tmp/at.txt

at> <EOT>  ------------ctrl+d


at -l 查询

atrm 编号 删除计划任务


crontab

service crond restart


crontab -e

* * * * *

分时日月周


分(00-59)

时(00-23)

日(01-31)

月(01-12)

周(0-7)


* * * * *  date >>/tmp/date 每分钟执行一次

*/5 * * * *  每5分钟执行一次

05 * * * *   每小时第5分钟时执行一次

05 14 * * *  每天的14点05分执行一次

05 14 15 * * 每月的15号14点05执行一次

05 14 15 10 * 每年的10月15号14点05 执行一次

05 14 15 10 7 每年的10月15号并且是周日14点05分执行一次

05 14,15,17 10 * * 每月10号的14 15 17点05分钟执行 

05 15 10,15,25 10 1-5 每年的10月10 15 25号如果是周1-周5 那15 05分执行


练习:

1.你当前系统时间的2分钟后 执行在/tmp目录下创建一个aa.txt的文件

25 14 10 12 * touch /tmp/aa.txt

2.在你当前系统的5分钟后 将boot目录备份 /backup 要求:备份的包名取当前系统时间(如:2012-12-9-boot.tar.gz)

#!/bin/bash

/bin/tar -zcvf /backup/`date +%Y-%m-%d`-boot.tar.gz /boot


crontab -e

32 14 10 12 * /backup/backup.sh


crontab -l 查询计划任务

crontab -r 移除所有的计划任务


计划任务保存位置/var/spool/cron/


crontab -e -u robin  管理员编辑robin的计划


系统的计划

/etc/crontab

01 * * * * root run-parts /etc/cron.hourly

02 4 * * * root run-parts /etc/cron.daily

22 4 * * 0 root run-parts /etc/cron.weekly

42 4 1 * * root run-parts /etc/cron.monthly

00 02 * * 0 root run-parts /etc/cron.user


/etc/cron.hourly/

/etc/cron.daily/

/etc/cron.weekly/

/etc/cron.monthly/


etc/cron.deny 限制普通用户使用计划任务

/etc/anacrontab 没执行的计划任务在开机65*分钟执行没有执行的计划任务


查找命令

1.which   (仅限查找命令)

2.whereis (仅限查找命令)

3.grep

4.locate  (每一次用前先updatedb一下,有索引)

5.find

-rw-r--r-- 1 root root 39410 12-03 22:22 install.log

find / -name date.txt根据文件名称

find / -type d -ls   根据文件类型

find / -links 2 -ls  根据硬连接数

find /home -user tom -ls    查找关于用户名的所有文件

find /home -group uplooking -ls 根据所属组名

find /home -nouser -exec rm -r {} \;&>/dev/null(&>标准正确和错误输出)

find /home -user abc2 -ok rm -r {} \;交互式删除

find /home -nogroup

find /home -nouser -a -nogroup   没有所属组的

find /home \( -nouser -o -nogroup \) -ls


按大小查找

find /root/test/ -size 400M  等于400M的文件

find /root/test/ -size +400M 大于400M的文件

find /root/test/ -size -400M 小于400M的文件 

find /root/test/ -size +200M -a -size -400M

find /root/test/ -size +200M -o -size -400M 

find /root/test/ -size -200M -o -size +400M 


按时间查找

touch -m -d 20121203 tt.txt         修改文件属性的日期

touch -m -t 201212100000.00 yy.txt  修改文件属性的时间


find /root/test/ -mtime 3  距离今天正好三天的文件

find /root/test/ -mtime -5 五天之内的

find /root/test/ -mtime +5 五天之前

find /root/test/ -mtime -10 -a -mtime +3 

find /root/test/ -mtime -10 -o -mtime +3

find /root/test/ -mtime +8 -o -mtime -3


按权限查找

find /root/test -perm 600(权限值)

find /root/test -perm +600(任意匹配,九个只有要一个相同就匹配)

find /root/test -perm -600(完全匹配,3位对3位匹配,只要查找的是权限含有600的)

find / -type f | xargs file

cut -d: -f 1 /etc/passwd | xargs mkdir

rm -rf `cut -d: -f 1 /etc/passwd`



练习:

创建以下文件  

dd if=/dev/zero of=aa.txt bs=10M count=1


aa.txt 10M 1201 

cc.txt 15M 1203

tt.txt 20M 1205

xx.txt 25M 1207

yy.yxt 30M 1210 

1.查找该目录下大于15M的文件

2.查找该目录下大于15M并且小与25M的文件

3.查找该目录下大于15M并且小与25M的文件并将该文件拷贝到/tmp下

4.查找该目录下7天以内的文件

5.查找该目录下8天以内3天以前的文件

6.查找该目录下8天以内并且大于15M的文件

7.查找该目录下8天以内或者小于25M的文件并将该文件拷贝到/home下

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^12.10

磁盘管理


fdisk -l 分区表信息

fdisk /dev/sda 分区

d   delete a partition

l   list known partition types

m   print this menu

n   add a new partition

p   print the partition table

q   quit without saving changes

t   change a partition's system id

w   write table to disk and exit


Command (m for help): n

e   extended

    p   primary partition (1-4)

Selected partition 4

First cylinder (26020-38913, default 26020):  回车

Last cylinder or +size or +sizeM or +sizeK (26020-38913, default 38913): +500M

Command (m for help): w


partprobe /dev/sda 同步分区表

ls /dev/sda*

                                    df -Th 显示所有挂载设备的信息

mkfs.ext3 /dev/sda4

mount -t ext3 /dev/sda4 /mnt


df -Th

文件系统      类型    容量  已用 可用 已用% 挂载点

/dev/sda2     ext3    190G   11G  170G   6% /

/dev/sda1     ext3     99M   12M   83M  12% /boot

tmpfs        tmpfs   1009M     0 1009M   0% /dev/shm

/dev/sda4     ext3    471M   11M  437M   3% /mnt


删除分区

umount /dev/sda4

fdisk /dev/sda

Command (m for help): d

Partition number (1-4): 4

Command (m for help): w

fdisk -l

partprobe /dev/sda


扩展分区

fdisk /dev/sda

Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

e

First cylinder (26020-38913, default 26020):  回车

Last cylinder or +size or +sizeM or +sizeK (26020-38913, default 38913): 回车

Command (m for help): w


逻辑分区

fdisk /dev/sda

Command (m for help): n

First cylinder (26020-38913, default 26020): 回车

Last cylinder or +size or +sizeM or +sizeK (26020-38913, default 38913): +500M


partprobe /dev/sda

mkfs.ext3 /dev/sda5

mount -t ext3 /dev/sda5 /mnt


练习:

分出两个逻辑分区sda5 sda6

1.挂载/dev/sda5 /mnt 在/mnt创建文件sda5.txt 

 挂载sda6 /mnt  能不能挂?如能挂还能不能看到sda5.txt

2.挂载sda5 /mnt上  再将sda5 挂载到/opt上 能不能挂?


mount -o remount,rw /dev/sda5  U盘不能读写时利用此条命令


卷标

e2label /dev/sda5   查询

e2label /dev/sda5 disk5 设置


自动挂载:

mount -t iso9660 /media/disk/Deepin_GhostXP_SP3_PRO_V11.4.iso /mnt -o loop 挂载光盘镜像

1./etc/rc.local

mount /dev/sda5 /mnt

2./etc/fstab

/dev/sda6          /opt             ext3    defaults        0 0

/镜像名称   /mnt            iso9660 defaults,loop   0 0


3.autofs(按需挂载)

1).vim /etc/auto.master

   /test /etc/auto.test

2).mkdir /test

   touch /etc/auto.test

3).vim /etc/auto.test

   haha -fstype=ext3,rw,sync   :/dev/sda5

hehe    -fstype=nfs,rw,sync     192.168.1.210:/20121220/ftp

4).service autofs restart


测试:

cd /test/haha

mount


练习:在/目录下创建/yum目录  在yum目录下使用autofs和yum相结合 实现:yum install软件时自动挂载镜像文件,并且完成安装


1).vim /etc/auto.master

   /yum /etc/auto.yum  --timeout=10

2).mkdir /yum

   touch /etc/auto.yum

3).vim /etc/auto.yum

   iso -fstype=iso9660,ro,loop  :/root/Desktop/linux_software/rhel5u8.iso 

4).service autofs restart


watch -n 1 mount


vim /etc/yum.repos.d/yum.repo

[rhel5u8]

name=cdrom yum

baseurl=file:///yum/iso/Server

enabled=1

gpgcheck=0


yum reinstall httpd


交换分区的扩大缩小

扩大

分区方式

mkswap /dev/sda5

swapon /dev/sda5

free

swapoff /dev/sda5

free

swapon -s 查询交换分区信息


文件方式

dd if=/dev/zero of=swap bs=1000M count=1

mkswap /swap

free

swapon /swap

free

swapon -s

swapoff /swap


格式化/swap为ext3 是否能格式化?能挂载?能不能创建文件?


磁盘配额(基于磁盘)

1.mount -o usrquota /dev/sda6 /mnt/

2.quotacheck /mnt/

3.edquota -u robin

Disk quotas for user robin (uid 5011):

Filesystem    blocks      soft       hard     inodes     soft     hard

/dev/sda6      0          50         100          0        0        0

4.quotaon /mnt


测试

su - robin

cd /mnt

dd if=/dev/zero of=data1 bs=60K count=1

dd if=/dev/zero of=data2 bs=60K count=1

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^12.11


文件个数

1.mount -o usrquota /dev/sda6 /mnt/

2.quotacheck /mnt/

3.edquota -u robin

Disk quotas for user robin (uid 5011):

Filesystem    blocks      soft       hard     inodes     soft     hard

/dev/sda6      0          50         100          0        10       15

4.quotaon /mnt


组配额:

创建用户tom和jerry 将主组改为uplookig

1.mount -o usrquota,grpquota /dev/sda6 /mnt/

2.quotacheck -g /mnt/

3.edquota -g uplooking

4.quotaon -g /mnt

测试 设定组配额是用户共有还是每个用户都各有设定值


文件系统

ext2 ext3 ext4 vfat ntfs nfs cifs

tune2fs -l /dev/sda5

tune2fs -c 50 /dev/sda5 修改最大挂载次数,50次后,进行磁盘检测

tune2fs -C 10 /dev/sda5 修改已经挂载的次数

tune2fs -L aa /dev/sda5 修改磁盘的卷标

tune2fs -o acl /dev/sda5 磁盘支持的属性

tune2fs -o ^acl /dev/sda5  取消磁盘的属性


软链接和硬链接区别

ln -s /root/ruan.txt /tmp/ruan.txt 建立软链接

ln /root/ying.txt /tmp/ying.txt   建立硬链接


软硬链接区别:

1.inode号

软链接和源文件inode号是不同的

硬链接和源文件inode号是相同的

2.权限

软链接的权限永远都是777 即使修改软链接文件的权限,软链接文件权限不变,源文件的权限改变。

硬链接的权限和源文件永远相同

3.剪切和删除

软链接的源文件不能剪切,改名和删除

硬链接的源文件可以剪切,改名和删除

4.跨文件系统

软链接是可以跨文件系统的

硬链接不可以跨文件系统

5.对目录操作

软连接可以对目录作用的

硬链接不可以对目录作用

6.创建过程

软链接创建时必须写绝对路径

硬链接创建时可以相对可以绝对


磁盘阵列(raid)

raid0         raid1           raid5               raid10

条带化 镜像 带奇偶校验条带化 raid1+raid0

2块磁盘 2块磁盘 3块磁盘 4块磁盘

500M 500M 500 500M

1G 500M 1G 1G


创建磁盘阵列

mdadm -C /dev/md0 -l 5 -n 3 /dev/sda5 /dev/sda6 /dev/sda7

-C 创建  -l 级别 -n 磁盘数量

mdadm -D /dev/md0 显示阵列信息

mdadm -Ds 显示扫描信息

mdadm -S /dev/md0 停止

mdadm -A /dev/md0 /dev/sda{5,6,7} 停止后在启动

mdadm -S /dev/md0 ; rm -rf /dev/md0 永久删除

mdadm --zero-superblock /dev/sda5  删除后清除raid痕迹


阵列的永久保存

/usr/share/doc/mdadm-2.6.9/mdadm.conf-example


touch /etc/mdadm.conf

vim /etc/mdadm.conf

DEVICE /dev/sda5 /dev/sda6 /dev/sda7

ARRAY /dev/md0 level=raid5 num-devices=3 metadata=0.90 UUID=48

a8e4a9:94b04ca2:2453e310:a39dd56d

(mdadm -Ds >> /etc/mdadm.conf)


mdadm -S /dev/md0

mdadm -D /dev/md0

mdadm -As   (加入这个命令,就不用重启计算机了)

mdadm -D /dev/md0


模拟损坏

mount /dev/md0 /mnt

dd if=/dev/zero of=/mnt/data bs=250M count=1

md5sum data 查看date文件的MD5值

ab3248888d6f10ef30a084fac6a1e2fd  data


mdadm /dev/md0 -f /dev/sda5  让某一硬盘损坏

mdadm -D /dev/md0

md5sum data  

ab3248888d6f10ef30a084fac6a1e2fd  data


mdadm /dev/md0 -r /dev/sda5   把这块硬盘拔出来移出掉

mdadm /dev/md0 -a /dev/sda8   加入新的硬盘

mdadm -D /dev/md0


md5sum data

ab3248888d6f10ef30a084fac6a1e2fd  data


备盘:

1.在已做好raid上添加备盘

mdadm /dev/md0 -a /dev/sda8

mdadm -D /dev/md0

mdadm /dev/md0 -f /dev/sda5

mdadm -D /dev/md0


2.创建raid时指定备盘

mdadm -C /dev/md1 -l 5 -n 3 /dev/sda{5,6,7} -x 1 /dev/sda8 添加备盘

然后修改mdadm.conf


LVM逻辑卷管理


LVM的创建

1.建立pv

pvcreate /dev/sda5 /dev/sda6

pvs(scan的意思)或者pvdisplay 显示创建的


2.建立vg

vgcreate vg0 /dev/sda5 /dev/sda6

vgs

vgdisplay

3.建立lv

lvcreate -L 200M -n /dev/vg0/lv0 vg0

lvs或lvdisplay


使用lvm

mkfs.ext3 /dev/vg0/lv0 

mount /dev/vg0/lv0 /mnt


lv的在线扩容(在线就是不用umount)

lvextend -L +150M /dev/vg0/lv0

lvs

resize2fs /dev/vg0/lv0 352M

df -Th


lv的缩小

umount /mnt/

e2fsck -f /dev/vg0/lv0 磁盘检测文件

resize2fs /dev/vg0/lv0 180M

lvs   

mount /dev/vg0/lv0 /mnt/

df -Th

lvresize -L 180M /dev/vg0/lv0

lvs


vg扩大

pvcreate /dev/sda7

pvs

vgextend vg0 /dev/sda7

vgs


vg缩小

vgreduce vg0 /dev/sda7 (/dev/sda7 没有数据)

vgs


数据移动

pvmove /dev/sda5 /dev/sda6  指定设备移动数据

pvmove /dev/sda6  移动数据到任意设备,将/dev/sda6数据清空


删除lvm

lvremove /dev/vg0/lv0 

lvs

vgremove vg0

vgs

pvremove /dev/sda{5,6,7,8}

pvs


作业:

创建5,6,7,8,9,10 6个分区 使用5,6,7创建raid5 使用8,9创建raid0 

在将raid5创建成lv0 使用raid0 扩大lv0

模拟/dev/sda5损坏 将sda10从raid5替换/dev/sda5 并且保证数据的完整 


raid0 raid1 raid10创建删除以及模拟损坏

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^12.12

lvm快照

创建快照

lvcreate -L 50M -s -n /dev/vg0/lv0-s0 /dev/vg0/lv0

查询

lvdisplay

删除快照

lvremove /dev/vg0/lv0-s0


1.只使用快照文件,该情况下源lv内数据不会作任何改动,所有改动数据都存在快照里,注意:如果快照空间使用完,该快照自动摧毁...

2.只使用源lv,快照做为备份保存下来,注意:快照的大小,大于等于源lv,否则可能出现数据不能恢复,快照损坏的问题


系统启动过程

1.bios加电 启动项硬盘 光盘 网络 U盘 软盘

2.读取硬盘MBR(512字节)-----446字节引导程序----64分区表---aa55(magic number)

|-stage1----->stage1.5------->stage2----/boot/grub/grub.conf (grub bootloader)


grub加密添加以下行

password --md5 $1$MGoHy0$19uQSt4kVzvH0q3pYEsXw1

密码用grub-md5-crypt得到


修复模式(光盘引导 boot: linux rescue)

安装引导程序 

grub

grub> root (hd0,0)

grub> setup (hd0)

grub> quit


练习:在修复模式下将root用户密码改为空

      重新安装引导程序

3.将内核释放的内存,执行第一个进程 init(/sbin/init) 加载/etc/inittab文件确定运行级别

4./etc/rc.d/rc.sysinit 执行系统初始化文件(主机名,网络...)

5.根据/etc/modprobe.conf或者/etc/modprobe.d/内容加载模块

6.根据运行级别的设定读取/etc/rc.d/rc*.d目录下的脚本

  S ---start 启动时 执行的脚本 

  K ---kill 关机时 执行的脚本

7.执行/etc/rc.local文件 设定用户在进入系统前的设置

8.加载文本模式资源,加载图形模式资源

9.login.加载用户环境变量配置文件


排错

ts1.sh

1.inittab

2.fstab

3.passwd(root)


ts2.sh

1.grub.conf

2.inittab

3.fstab

4.passwd

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^12.13

ts3.sh

1.grub.conf

2.e2label 

3.inittab

4.fstab

5.passwd


ts4.sh

1.grub.conf

2.e2label 

3.inittab

4.fstab

5.passwd

6.mount软件安装

7.rc.local

8.图形 startx

9.计划任务


编译内核

uname -r  查询内核版本

uname -a

2.6.18-308.el5


lsmod 查询所有模块

modinfo 查询模块信息

insmod /lib/modules/2.6.18-308.el5/kernel/drivers/net/8139too.ko(必须绝对路径)  添加一个模块

rmmod 8139too 删除一个模块(相当于禁用一下驱动程序)

modprobe 8139too  动态加载模块

modprobe 该命令执行依赖于/lib/modules/2.6.18-308.el5/modules.dep文件。当该文件丢失时。使用 depmod -a建立即可


创建块设备文件

mknod -m 640 /dev/sda  b    8        0

       权限    名称      类型  主设备号  从设备号


/usr/local/src/linux-2.6.30/Documentation/devices.txt  主从设备号查询的文件


开始编译内核

make mrproper

make menuconfig

make

make modules_install

make install


解决错误

rm -rf /tmp/*

cp /boot/initrd-2.6.30.img /tmp

mkdir /tmp/initrd

cd /tmp/initrd/

zcat ../initrd-2.6.30.img | cpio -i


vim /tmp/initrd/init

echo "Loading dm-region-hash.ko module"

insmod /lib/dm-region-hash.ko

echo "Loading dm-region-hash.ko module"

insmod /lib/dm-region-hash.ko


find . | cpio -c -o > initrd

gzip -9 initrd

mv initrd.gz initrd.img


cp initrd.img /boot

vim /boot/grub/grub.conf


特殊属性和facl


i属性 不允许删除,修改,追加 目录不能创建删除文件 可以复制

a属性 允许删除,修改,剪切,可以追加内容。 对目录不可以删除,可以创建新文件。可以复制


facl(基于磁盘)

mount -o acl /dev/sda5 /mnt


setfacl -m u:xiao3:r baobiao.txt  单独设置用户权限

setfacl -m g:cw2:r baobiao.txt 单独设置组权限

setfacl -m o:rw baobiao.txt  修改其他人权限

setfacl -m m:r baobiao.txt 修改mask值


getfacl baobiao.txt


setfacl -x u:xiao3 baobiao.txt 删除一个用户权限

setfacl -x g:cw2 baobiao.txt 删除一个组的权限

setfacl -b baobiao.txt  清楚已设置所有facl 并且去掉+ 


练习:

5.1).建立三个普通用户seker,zorro,shrek.用root用户在/root目录中建立一个文件abc.txt

  2).使seker用户既能读又能写abc.txt文件,但不能删除

     使zorro用户只能读取,不能写也不能删这个文件

     使shrek用户只能删除,不能读写这个文件.

以上三个条件同时成立

facl完成

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^12.14

网络管理

应用层

表示层

会话层

传输层        应用层

网络层      传输层

数据链路层    网络层

物理层        数据链路层


mii-tool

ifconfig

setup

service network restart

配置文件:

/etc/sysconfig/network-scripts/ifcfg-eth0


ifconfig eth0 192.168.100.100  临时修改ip


络管理

应用层

表示层

会话层

传输层        应用层

网络层      传输层

数据链路层    网络层

物理层        数据链路层


mii-tool

ifconfig

setup

service network restart

配置文件:

/etc/sysconfig/network-scripts/ifcfg-eth0


ifconfig eth0 192.168.100.100  临时修改ip

ifconfig eth0:0 10.10.10.10  临时网卡别名


网卡别名永久生效:

cp /etc/sysconfig/network-scripts/ifcfg-eth0 etc/sysconfig/network-scripts/ifcfg-eth0:0

vim etc/sysconfig/network-scripts/ifcfg-eth0:0

DEVICE=eth0:0

BOOTPROTO=none

HWADDR=00:e0:4c:eb:c0:d8

ONBOOT=yes

NETMASK=255.255.255.0

IPADDR=10.10.10.1

TYPE=Ethernet


重启网卡

ifconfig eth0 down 禁用网卡eth0

ifconfig eth0 up   开启网卡eth0

相当于

ifdown eth0

ifup eth0

ifdown eth0;ifup eth0

ifdown eth0&&ifup eth0


ip addr show

route -n 查看路由信息

route add default gw 192.168.1.253 添加路由表信息

route del default gw 192.168.1.253

arping 192.168.1.210 判断是否和我ip冲突

arp连接我电脑的ip

traceroute 192.168.1.210 查询到目标ip的路由信息

ping -c 3 192.168.1.210


/proc/sys/net/ipv4/icmp_echo_ignore_all 0回应ping 1不回应

/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 1不响应广播包 0是相应广播包

echo 1 > /proc/sys/vm/drop_caches 释放缓存

echo 1 > /proc/sys/net/ipv4/ip_forward 打开路由转发功能

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^12.17

主机名的设定

hostname

hostname zhb.com

永久修改主机名

vim /etc/sysconfig/network

HOSTNAME=zhb.com


主机名与ip地址的映射关系

/etc/hosts

192.168.1.253   zhb.com


服务管理


DHCP(动态分配ip地址)

安装包:

dhcp-3.0.5-31.el5.i386.rpm

配置文件:

/etc/dhcpd.conf

cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf

启动服务:

service dhcpd restart

/etc/init.d/dhcpd restart


工作原理:

C S

 -----DHCPDISCOVER-->

 <----DHCPOFFER------

 -----DHCPREQUEST--->

 <----DHCPACK--------


配置流程:

ddns-update-style interim;

ignore client-updates;

subnet 172.16.172.0 netmask 255.255.255.0 {

         option routers                  172.16.172.1;

         option subnet-mask              255.255.255.0;

         option domain-name              "domain.org";

         option domain-name-servers      202.106.0.20;

 range dynamic-bootp 172.16.172.3 172.16.172.254;

         default-lease-time 21600;

         max-lease-time 43200;

host ns {

        next-server marvin.redhat.com;

        hardware ethernet 00:0C:29:3D:89:03;  -----指定服务器ip的mac

        fixed-address 172.16.172.100; ---------指定的ip

}

}


客户端:

service network restart

pkill dhclient

dhclient


服务端租约文件位置:/var/lib/dhcpd/dhcpd.leases

客户端租约文件位置:/var/lib/dhclient/


dhcp服务中继服务(三种)

/etc/dhcpd.conf

ddns-update-style interim;

ignore client-updates;


subnet 172.16.172.0 netmask 255.255.255.0 {


        option routers                  172.16.172.1;

        option subnet-mask              255.255.255.0;

        option domain-name-servers      202.106.0.20;

        range dynamic-bootp 172.16.172.2 172.16.172.254;

        default-lease-time 21600;

        max-lease-time 43200;

}

subnet 100.100.100.0 netmask 255.255.255.0 {

        option routers                  100.100.100.1;

        option subnet-mask              255.255.255.0;

        option domain-name-servers      202.106.0.20;

        range dynamic-bootp 100.100.100.2 100.100.100.254;

        default-lease-time 21600;

        max-lease-time 43200;

}


service dhcpd restart


中继服务器的配置

vim /etc/sysconfig/dhcrelay

INTERFACES="eth0 eth1"

DHCPSERVERS="192.168.1.153"


开启路由转发功能 echo 1 > /proc/sys/net/ipv4/ip_forward


service dhcrelay restart


日志管理

配置文件:

/etc/syslog.conf

启动服务:

service syslog restart



AAAAA.BBBBB CCCCC


AAAAA 产生日志的对象

authpriv

mail

cron

uucp

news

daemon

syslog


BBBBB 日志级别

debug

info

notice

warning

err

crit

alert

emerg


mail.err 记录err以上级别的信息

mail.=err 只记录err级别信息

mail.!=err 除了err级别的信息


CCCCC 保存日志的位置

1.保存到文件

*.info;mail.none;authpriv.none;cron.none        /var/log/messages

2.报存到某个终端

*.info;mail.none;authpriv.none;cron.none        /dev/pts/0

3.发送给某个用户

*.info;mail.none;authpriv.none;cron.none tom


日志集中管理

服务端:

vim /etc/sysconfig/syslog


# Options to syslogd

# -m 0 disables 'MARK' messages.

# -r enables logging from remote machines

# -x disables DNS lookups on messages recieved with -r

# See syslogd(8) for more details

SYSLOGD_OPTIONS="-m 0 -r -x"


service syslog restart


客户端:

vim /etc/syslog.conf

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

*.info;mail.none;authpriv.none;cron.none        @192.168.1.253


service syslog restart


日志的轮转

vim /etc/logrotate.conf


实验:

/var/log/test.log     被切割日志

/etc/logrotate.d/test 配置文件

/var/log/test.log {

    missingok

    size 30k

    daily

    rotate 7

    create 0777 root root

}

logrotate -f /etc/logrotate.d/test

logrotate /etc/logrotate.d/test (修改系统时间)

logrotate -d test(显示调试信息)


文件服务器(nfs ftp  samba)

nfs

配置文件:

/etc/exports

启动服务:

server portmap restart (6.0版本是rpcbind)

server nfs restart


配置流程:

vim /etc/exports

/nfs *(rw,sync)

/nfs192.168.1.0/24(rw,sync) 10.10.10.0/24(ro)

/nfs   192.168.1.252/32(rw)


service portmap restart

service nfs restart


客户端可以创建文件:

1.服务端设定共享目录其他人权限有写权限(客户端使用的用户为nfsnobody)

2./nfs    *(rw,sync,no_root_squash) no_root_squash 取消root权限


客户端:

showmount -e 192.168.1.253

mount -t nfs 192.168.1.253:/nfs /opt

服务端:

showmount -a


练习:

服务端共享/nfs目录 客户端3种方式自动挂载

192.168.1.253:/nfs      /opt             nfs     defaults        0 0


作业:

NAS服务器(raid lvm nfs)

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^12.18

ftp服务器

安装包:

vsftpd-2.0.5-24.el5.i386.rpm

配置文件:

/etc/vsftpd.conf

数据目录:

/var/ftp

启动服务:

service vsftpd restart

端口:20(数据传输的端口) 21(服务的端口)

vim /etc/service 查询服务的端口和协议等


lftp 

get   下载文件

mirror    下载目录

put   上传文件

mirror -R 上传目录



允许匿名用户上传:

修改/etc/vsftpd.conf

anon_upload_enable=YES

anon_mkdir_write_enable=YES 

service vsftpd restart

chmod 777 /var/ftp/pub  此目录作为上传目录(ftp主目录权限不能改变)


练习:lftp lcd 

上传一个文件/root/install.log和一个目录/boot

测试install.log 能否下载?  boot目录是否能看目录内文件?


上传文件权限:

anon_umask=022

允许匿名用户删除或者改名:

anon_other_write_enable=YES

修改匿名用户主目录:(两种方法)

1.修改ftp用户家目录

vim /etc/passwd里面ftp的家目录

2.修改/etc/vsftpd/vsftpd.conf文件,加上anon_root=/nfs

然后重启服务

上传下载限速:

anon_max_rate=20000


本地用户登录

lftp -u tom,123 192.168.1.253

修改本地用户登录目录

local_root=/nfs

限制本地用户的下载速度

local_max_rate=20000


练习:

公司有2个部门,每个部门有一个帐户登录到自己部门的目录

2个部门的主管各有一个帐号登录到同一个目录


限制本地目录的切换:

1.chroot_local_user=YES(限制本地所有普通用户)

2.chroot_list_enable=YES(有选择的禁止用户切换目录)

  chroot_list_file=/etc/vsftpd/chroot_list

  (touch /etc/vsftpd/chroot_list 不允许切换目录的用户,写到该文件中)


限制本地用户的登录:

1./etc/vsftpd/ftpusers 写入该文件的用户不能登录到ftp服务器

2.userlist_deny=YES  黑名单 写入/etc/vsftpd/user_list文件的用户不能登录到ftp服务器

  userlist_deny=NO   为白名单 只有写入/etc/vsftpd/user_list文件用户能登录


虚拟用户

1.建立用户数据库

# cat ftpuser.txt

test111 # 账户

pass111 # 密码

test222

pass222

# rpm -qf $(which db_load)

db4-utils-4.3.29-9.fc6

#

# db_load -T -t hash -f ~/ftpuser.txt /etc/vsftpd/vsftpd_login.db

2.建立验证模式文件

# mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak

# vi /etc/pam.d/vsftpd

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

:wq

3.建立一个所有虚拟用户使用的系统用户

# useradd -d /home/vsftp virtual

# chmod 755 /home/vsftp

4.修改配置文件启用虚拟用户

guest_enable=YES # 开启虚拟用户功能

guest_username=virtual # 指定虚拟用户使用的系统用户

pam_service_name=vsftpd # 以/etc/pam.d/验证模式文件名相同

5.重新启动后可以用虚拟用户登陆了.

为虚拟用户设置不同权限

virtual_use_local_privs

设置为YES 时,虚拟用户使用与本地用户相同权限,设置为NO 时,虚拟用户使用与匿

名用户相同权限

1.添加per_user 功能参数,如果开启了此功能,必须为每一个用户都有配置文件

vi /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/vsftp_user_conf

:wq

2.在/etc/vsftpd/vsftp_user_conf 这个目录下建立与虚拟用户同名的文件,文件中写入用户的

有参数

# echo "write_enable=NO" > /etc/vsftpd/vsftp_user_conf/test111

我们限制test111 禁止上传文件

3.重启动 vsftpd 登录测试.


samba

安装包:

samba-3.0.33-3.37.el5.i386.rpm

samba-client-3.0.33-3.37.el5.i386.rpm

配置文件:

/etc/samba/smb.conf

启动服务:

service smb restart


配置流程:

security = share


[ll]

        comment = smb server

        path = /smb

        public = yes

        writable = yes

        printable = no

        browseable = yes   是否可见



客户端

smbclient -L //192.168.1.253

smbclient //192.168.1.253/ll


mount -t cifs //192.168.1.253/ll /opt



用户共享模式

security = user


[tt]

        comment = smb server

        path = /smb

        public = yes

        writable = yes

        printable = no

        browseable = yes

        valid users = tom @uplooking

        


        write list = tom

        read list = jerry(将writable = yes注释掉)

         

        create mask = 777

        directory mask = 777



smbpasswd -a tom 添加 

smbpasswd -x tom 删除

pdbedit -L 查询添加smb的用户



客户端登录

smbclient -U tom //192.168.1.253/tt

smbclient -U tom%123 //192.168.1.253/tt


mount -o user=tom,password=123 //192.168.1.253/tt /mnt

三种挂载:1 tt -fstype=cifs user=tom,password=123   


ssh服务


配置文件:

/etc/ssh/sshd_config


启动服务:

service sshd restart

端口:

22


ssh 192.168.1.252

ssh root@192.168.1.252

ssh tom@192.168.1.252


scp install.log 192.168.1.253:/tmp/

scp -r /root/Desktop/ 192.168.1.253:/tmp/


wall (写完内容后加一回车)

asdfasdafsdf

ctrl+d


write root /dev/pts/11

afasdfa

ctrl+d


netstat -anplt 查看端口:

netstat -anplt 80

 

who

w

last

lastlog


whoami当前登录的用户

who i am (和who am i一样)切换用户当前的登录用户


nmap(+IP)扫描端口

nmap 192.168.1.91

nmap -v -sP 192.168.1.0/24


ssh 192.168.1.253 -p 54321

scp -P 54321 ruan.txt  192.168.1.253:/tmp/

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^12.19


密钥

ssh-keygen  生成公钥和私钥

id_rsa  id_rsa.pub

scp /root/.ssh/id_rsa.pub 192.168.1.129:/root/.ssh/authorized_keys

测试

ssh 192.168.1.129

在虚拟机中做ssh-keygen还有scp操作后,实体机登录虚拟机后不需要密码


练习:

互相密钥登录

3台相互登录怎么做?


服务的管理(开机自启动)

chkconfig --list

chkconfig --list dhcpd

chkconfig smb on

chkconfig smb off

chkconfig --level 35 smb on

chkconfig --del smb

chkconfig --add smb


ntsysv 工具


web服务器(apache)

安装包:

httpd-2.2.3-63.el5.i386.rpm

配置文件:

/etc/httpd/conf/httpd.conf

启动服务:

service httpd restart

服务器数据目录:

/var/www/html/

端口:

80(不加密) 443(加密)


进程模式改为线程模式:

1.vim /etc/sysconfig/httpd 

  httpd-2.2.3-63.el5.i386.rpm     

2.mv /usr/sbin/httpd /usr/sbin/httpd.prefork

  mv /usr/sbin/httpd.worker /usr/sbin/httpd

两种方法都要重启服务 


基于用户家目录发布网页

<IfModule mod_userdir.c>

#UserDir disable

UserDir public_html

</IfModule>


useradd tom

useradd jerry


mkdir /home/tom/public_html

mkdir /home/jerry/public_html


chmod 707 /home/tom/

chmod 707 /home/jerry/


echo 'tom home' >> /home/tom/public_html/index.html

echo 'jerry home' >> /home/jerry/public_html/index.html


测试:

http://192.168.1.253/~tom/

http://192.168.1.253/~jerry/


发布一个不用拷贝的目录

别名

alias /download /etc

<directory /etc>

        options indexes 目录结构

order allow,deny

allow from 192.168.1.0/24  访问控制

        #deny from 192.168.1.0/24

        deny from all

</directory>

注意:访问控制

设置order表,当规则有冲突时,apache将会从后往前读order表,最后位置关键字生效


用户登录访问(验证模式登录)

帮助文档包:httpd-manual-2.2.3-63.el5.i386.rpm

firefox /var/www/manual/index.html &


alias /download /etc

<directory /etc>

        options indexes

        AuthType Basic

        AuthName "Please insert your name and passwd!!!"

        AuthBasicProvider file

        AuthUserFile /etc/httpd/passwdb

        Require user jack

</directory>


htpasswd -c -b /etc/httpd/passwdb jack 123  创建用户文件 

htpasswd -b /etc/httpd/passwdb rose 123     添加用户


测试


发布CGI脚本

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

<Directory "/var/www/cgi-bin">

    AllowOverride None

    Options None

    Order allow,deny

    Allow from all

</Directory>


在网页内显示用可执行文件的结果

touch /var/www/cgi-bin/

#!/bin/bash

echo -e "Content-type: text/html\n"

uname -a

date


测试

http://192.168.1.253/cgi-bin/cgi.sh


虚拟主机

基于域名配置

NameVirtualHost *:80

<VirtualHost *:80>

        DocumentRoot /var/www/html/baidu/

        servername www.baidu.com

</VirtualHost>

<VirtualHost *:80>

        DocumentRoot /var/www/html/sina/

        servername www.sina.com

</VirtualHost>


mkdir /var/www/html/baidu

mkdir /var/www/html/sina


echo "this is baidu" >> /var/www/html/baidu/index.html

echo "this is sina" >> /var/www/html/sina/index.html


cat /etc/hosts

192.168.1.253   www.baidu.com

192.168.1.253   www.sina.com


service httpd restart


测试

http://www.baidu.com/

http://www.sina.com/


基于ip配置

<VirtualHost 192.168.1.253:80>

        DocumentRoot /var/www/html/baidu/

        servername www.baidu.com

</VirtualHost>

<VirtualHost 10.10.10.1:80>

        DocumentRoot /var/www/html/sina/

        servername www.sina.com

</VirtualHost>


mkdir /var/www/html/baidu

mkdir /var/www/html/sina


echo "this is baidu" >> /var/www/html/baidu/index.html

echo "this is sina" >> /var/www/html/sina/index.html


cat /etc/hosts

192.168.1.253   www.baidu.com

10.10.10.1   www.sina.com


service httpd restart


测试

http://www.baidu.com/

http://www.sina.com/

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^12.20

DNS(域名解析服务)

安装包:

bind-9.3.6-20.P1.el5.i386.rpm

bind-chroot-9.3.6-20.P1.el5.i386.rpm 

bind-devel-9.3.6-20.P1.el5.i386.rpm

caching-nameserver-9.3.6-20.P1.el5.i386.rpm

启动服务:

service named restart

端口:53


1.正向解析:

vim /etc/named.caching-nameserver.conf

listen-on port 53 { any; };

allow-query     { any; };

allow-query-cache { any; };

match-clients      { any; };

match-destinations { any; };


2.定义域名,以及解析该域名服务器类型;

vim /etc/named.rfc1912.zones 

zone "163.com" IN {

        type master;

        file "163.com.zone";

};


3.设置域名解析

cd /var/named/chroot/var/named/

touch /var/named/chroot/var/named/163.com.zone

$TTL 86400

@       IN SOA  dns.163.com.  root ( 20121221 3H 15M 1W 1D )

        IN NS dns.163.com.

dns     IN A 192.168.1.253

www     IN A 192.168.1.253


chown :named 163.com.zone 

chmod 640 163.com.zone


测试:

客户端DNS指向

vim /etc/resolv.conf

nameserver 192.168.1.253


host www.163.com

nslookup www.163.com


$TTL 86400

@       IN SOA  dns.baidu.com.  root ( 20121221 3H 15M 1W

1D )

        IN NS dns.baidu.com.

dns     IN A 192.168.1.253

        IN MX 5 mail.baidu.com.

mail    IN A    192.168.1.253

web     IN CNAME  ftp.baidu.com.

ftp     IN A    192.168.1.253

www     IN A 192.168.1.10

www     IN A 192.168.1.89

www     IN A 192.168.1.1

*       IN A 192.168.1.253

ww      IN A 192.168.1.253

wwww    IN A 192.168.1.253

$GENERATE       1-254   stu$    IN A    192.168.1.$


反向解析:

1.vim /etc/named.rfc1912.zones

zone "1.168.192.in-addr.arpa" IN {

        type master;

        file "163.com.arpa";

};


2.touch /var/named/chroot/var/named/163.com.arpa

  chwon :named /var/named/chroot/var/named/163.com.arpa

  chmod 640 /var/named/chroot/var/named/163.com.arpa

   $TTL 86400

   @       IN SOA  dns.163.com.    root ( 20121221 3H 15M 1W 1D)

           IN NS   dns.163.com.

   1       IN PTR  www.163.com.

   249     IN PTR  www.163.com.

   $GENERATE       1-254   $       IN PTR  stu$.uplooking.com.

3. service named restart


测试

host 192.168.1.1


转发域服务器

options {

        allow-query { 192.168.1.0/24; };

        forward first;

        forwarders {61.175.153.129;};

};


allow-query-cache { any; };

forward only;

forwarders {192.168.1.254;};


主从服务器配置:

主:

1.vim /etc/named.rfc1912.zones

 zone "sohu.com" IN {

         type master;

         file "sohu.com.zone";

 allow-transfer { 192.168.1.252; };

 };

2.touch /var/named/chroot/var/named/sohu.com.zone

  chwon :named /var/named/chroot/var/named/sohu.com.zone

  chmod 640 /var/named/chroot/var/named/sohu.com.zone


$TTL 86400

@       IN SOA dns1.sohu.com.   root ( 20121224 3H 15M 1W 1D )

        IN NS dns1.sohu.com.

        IN NS dns2.sohu.com.

dns1    IN A  192.168.1.253

dns2 IN A  192.168.1.252

www     IN A  192.168.1.253


3. service named restart


从:

1.安装软件包

bind-9.3.6-20.P1.el5.i386.rpm

bind-chroot-9.3.6-20.P1.el5.i386.rpm 

bind-devel-9.3.6-20.P1.el5.i386.rpm

caching-nameserver-9.3.6-20.P1.el5.i386.rpm

2.vim /etc/named.caching-nameserver.conf

  listen-on port 53 { any; };

  allow-query     { any; };

  allow-query-cache { any; };

  match-clients      { any; };

  match-destinations { any; };


3.vim /etc/named.rfc1912.zones

zone "sohu.com" IN {

        type slave;

        file "slaves/sohu.com.zone";

        masters { 192.168.1.253; };

};


4. service named restart

   ls /var/named/chroot/var/named/slaves/sohu.com.zone


DNS主从数据transfer的TSIG方法

TSIG 事务签名的 方式(Key)


dnssec-keygen -a hmac-md5 -b 128 -n HOST zhb.

cat Kzhb.+157+45587.private


主:

key zhb {

        algorithm hmac-md5;

        secret "KOowsxtnZEV2MKfmuan7aw==";

};


zone "uplooking.com" {

        type master;

        file "uplooking.com.zone";

        allow-transfer { key zhb; };

};


从:

key zhb {

        algorithm hmac-md5;

        secret "KOowsxtnZEV2MKfmuan7aw==";

};


zone "uplooking.com" IN {

        type slave;

        file "slaves/uplooking.com.zone";

        masters { 192.168.1.250 key zhb; };

};


子域授权

父域:

zone "sina.com" {

        type master;

        file "sina.com.zone";

};


$TTL 86400

@       IN SOA  dns.sina.com.   root ( 20121225 3H 15M 1W 1D)

        IN NS   dns.sina.com.

dns     IN A    192.168.1.250

music.sina.com.         IN NS   dns.music.sina.com.

dns.music.sina.com.     IN A    192.168.1.240

www     IN A    192.168.1.240

ftp     IN A    192.168.1.240


子域:

zone "music.sina.com" IN {

        type master;

        file "music.sina.com.zone";

};


$TTL 86400

@       IN SOA  dns.music.sina.com.     root ( 20121224 3H 15M 1W 1D )

        IN NS dns.music.sina.com.

dns     IN A  192.168.1.240

www     IN A  192.168.1.240

        IN MX 5 mail.music.sina.com.

mail    IN A  192.168.1.240


测试:

将DNS指向父域,能够解析到子域定义的域名


DNS视图(智能DNS)

httpd服务端

192.168.1.55 192.168.1.101 192.168.1.210

客户端

192.168.32 192.168.1.42 192.168.1.59


DNS:192.168.1.250



vim /etc/named.caching-nameserver.conf 

首先注释掉已有的模热视图

acl tel { 192.168.1.32; };

acl cnc { 192.168.1.42; };

acl other { 192.168.1.59; };


view cncnet {

        match-clients { cnc; };

        recursion yes;

        include "/etc/12306cnc";

};

view telnet {

        match-clients { tel; };

        recursion yes;

        include "/etc/12306tel";

};

view othernet {

        match-clients { other; };

        recursion yes;

        include "/etc/12306other";

};      


2.cd /var/named/chroot/etc/

touch 12306{tel,cnc,other}

vim 12306cnc

zone "12306.com" IN {

        type master;

        file "12306.com.cnc";

};


vim 12306other

zone "12306.com" IN {

        type master;

        file "12306.com.other";

};


vim 12306tel

zone "12306.com" IN {

        type master;

        file "12306.com.tel";

};


3.cd /var/named/chroot/var/named

touch 12306.com.{cnc,tel,other}

vim 12306.com.cnc

$TTL 86400

@       IN SOA  dns.12306.com.  root ( 20121224 3H 15M 1W 1D )

        IN NS   dns.12306.com.

dns     IN A    192.168.1.250

www     IN A    192.168.1.101


vim 12306.com.other

$TTL 86400

@       IN SOA  dns.12306.com.  root ( 20121224 3H 15M 1W 1D )

        IN NS   dns.12306.com.

dns     IN A    192.168.1.250

www     IN A    192.168.1.210


vim 12306.com.tel

$TTL 86400

@       IN SOA  dns.12306.com.  root ( 20121224 3H 15M 1W 1D )

        IN NS   dns.12306.com.

dns     IN A    192.168.1.250

www     IN A    192.168.1.55


chmod 640 12306.*

chown :named 12306*


service named restart


连续解析client1-client10



iptables


iptables -L -t filter

iptables -L -t nat

iptables -L -t mangle


service iptables save


iptables -A INPUT -j DROP

iptables -D INPUT -j DROP

iptables -D INPUT 3

iptables -I INPUT 1 -j DROP

iptables -R INPUT 3 -j ACCEPT

iptables -P INPUT DROP

iptables -P INPUT ACCEPT


iptables -A INPUT -s 192.168.1.0/24 -j DROP

iptables -A INPUT -d 10.10.10.250 -j DROP

iptables -A OUTPUT -d 192.168.1.0/24 -j DROP

iptables -A OUTPUT -s ! 192.168.1.0/24 -j DROP


iptables -A INPUT -s 192.168.1.0/24 -i eth0 -j DROP

iptables -A OUTPUT -d 192.168.1.0/24 -o eth0 -j DROP


iptables -A INPUT -p icmp -j DROP

iptables -A INPUT -p ! tcp -j DROP


iptables -A INPUT -p tcp --dport 22 -j DROP

iptables -A OUTPUT -p tcp --sport 22 -j DROP


iptables -A INPUT -s 192.168.1.210 -i eth0 -p tcp --dport 80 -j DROP

iptables -A OUTPUT -d 192.168.1.210 -o eth0 -p tcp --sport 80 -j DROP


自定义链 

iptables -N new-chain 

iptables -A INPUT -s 192.168.1.0/24 -j new-chain

iptables -A new-chain -j DROP


iptables -E new-chain drop-chain


删除自定义链

删除定义自定链的规则

iptables -D INPUT 1

iptables -F drop-chain

iptables -X drop-chain



练习:

1.拒绝所有人访问你的22号端口 除了自己主机ip(input 和 output)

iptables -A INPUT -s ! 192.168.1.250 -p tcp --dport 22 -j REJECT

iptables -A OUTPUT -d ! 192.168.1.250 -p tcp --sport 22 -j REJECT

2.拒绝192.168.1.0网段访问你的httpd服务.(input 和 output实现) 

iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 80 -j REJECT

iptables -A OUTPUT -d 192.168.1.0/24 -p tcp --sport 80 -j REJECT

3.只允许你的主机ip通过eth0网卡访问虚拟机的ftp服务

iptables -A INPUT -s ! 10.10.10.250 -i eth0 -p tcp -m multiport --dport 20,21 -j REJECT

4.公司要求:只开启服务器的80 8080 5900端口

iptables -A INPUT -p tcp -m multiport ! --dport 80,8080,5900,22 -j REJECT 




iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to 10.10.10.250

iptables -t nat -A POSTROUTING -j MASQUERADE


 iptables -t nat -A PREROUTING -d 192.168.1.250 -p tcp --dport 8080 -j DNAT --to 10.10.10.1



邮件服务器

安装包:

postfix-2.3.3-2.3.el5_6.i386.rpm

dovecot-1.0.7-7.el5_7.1.i386.rpm

配置文件:

/etc/postfix/main.cf

/etc/dovecot/dovecot.conf

启动服务:

service postfix restart

service dovecot restart

端口:

25 110 143


发送邮件:

1.安装软件

rpm -ivh postfix-2.3.3-2.3.el5_6.i386.rpm 

2.修改配置文件:

vim /etc/postfix/main.cf

69.myhostname = mail.zhb.com

77.mydomain = zhb.com

93.myorigin = $mydomain

107.inet_interfaces = all

155.mydestination = $myhostname, $mydomain, localhost


service sendmail stop

chkconfig sendmail off

service postfix restart

netstat -anplt | grep :25

lsof -i:25

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

master  4745 root   11u  IPv4  18724      0t0  TCP *:smtp (LISTEN)


测试发送邮件:

useradd tom

passwd tom

useradd jerry

passwd jerry


telnet 192.168.1.250 25

Trying 192.168.1.250...

Connected to mail.zhb.com (192.168.1.250).

Escape character is '^]'.

220 mail.zhb.com ESMTP Postfix

ehlo mail.zhb.com  -------------------------------与服务起建立一次连接

250-mail.zhb.com

250-PIPELINING

250-SIZE 10240000

250-VRFY

250-ETRN

250-ENHANCEDSTATUSCODES

250-8BITMIME

250 DSN

mail from: tom@mail.zhb.com-----------------------发件人信息

250 2.1.0 Ok

rcpt to:jerry@mail.zhb.com  ------------------------收件人信息

250 2.1.5 Ok

data      -----------------------------------------内容

354 End data with <CR><LF>.<CR><LF>

hello i am tom !!!! who is it????------------------邮件内容

.  ------------------------------------------------结束邮件

250 2.0.0 Ok: queued as 6591F1F1002E

quit   --------------------------------------------退出登录

221 2.0.0 Bye

Connection closed by foreign host.


接受邮件:

1.安装软件:

yum install dovecot

service dovecot restart

netstat -anplt | grep :110

lsof -i:110


测试接收:

telnet 192.168.1.250 110

Trying 192.168.1.250...

Connected to mail.zhb.com (192.168.1.250).

Escape character is '^]'.

+OK Dovecot ready.

user jerry

+OK

pass 123

+OK Logged in.

list

+OK 1 messages:

1 475

.

retr 1

+OK 475 octets

Return-Path: <tom@mail.zhb.com>

X-Original-To: jerry@mail.zhb.com

Delivered-To: jerry@mail.zhb.com

Received: from mail.zhb.com (mail.zhb.com [192.168.1.250])

        by mail.zhb.com (Postfix) with ESMTP id B84101F1004A

        for <jerry@mail.zhb.com>; Thu, 27 Dec 2012 10:28:57 +0800 (CST)

Message-Id: <20121227022901.B84101F1004A@mail.zhb.com>

Date: Thu, 27 Dec 2012 10:28:57 +0800 (CST)

From: tom@mail.zhb.com

To: undisclosed-recipients:;


hello i am tom !!!! who is it????

.

quit

+OK Logging out.

Connection closed by foreign host.


图形

squirrelmail-1.4.8-5.el5_4.10.noarch.rpm


service httpd restart

http://192.168.1.250/webmail/


修改中文

vim /etc/squirrelmail/config.php


$squirrelmail_default_language = 'zh_CN ';




xinetd

配置tftp

vim /etc/xinetd.d/tftp 

service tftp

{

        socket_type             = dgram

        protocol                = udp

        wait                    = yes

        user                    = root

        server                  = /usr/sbin/in.tftpd

        server_args             = -s -c /tftpboot  #-c 允许上传

        disable                 = no #开启服务

        per_source              = 11

        cps                     = 100 2

        flags                   = IPv4

}


service xinetd restart

netstat -anplu | grep :69


tftp (rpm -ivh tftp-0.49-2.i386.rpm 安装包)

tftp 192.168.1.250

tftp> get aa.txt

tftp> put install.log (相对路径)


telnet服务

rpm -ivh telnet-server-0.17-39.el5.i386.rpm 

vim /etc/xinetd.d/telnet


service telnet

{

        flags           = REUSE

        socket_type     = stream

        wait            = no

        user            = root

        server          = /usr/sbin/in.telnetd

        log_on_failure  += USERID

        disable         = no  #开启服务

}


service xinetd restar

netstat -anplt | grep :23


测试登录:

telnet 192.168.1.250

Trying 192.168.1.250...

Connected to mail.zhb.com (192.168.1.250).

Escape character is '^]'.

Red Hat Enterprise Linux Server release 5.8 (Tikanga)

Kernel 2.6.18-308.el5 on an i686

login: tom

Password: 123


root管理不能登录到telnet服务



无人职守安装

yum install system-config-kickstart

system-config-kickstart

注意yum名称[rhel-server]


vim /nfs/ks/ks.cfg

25 rootpw --iscrypted $1$hHg2yEYO$ciMLfXq7VVBIpTlu/ybb..

26 key --skip


nfs共享

vim /etc/exports 

/nfs/ks         *(ro)  共享自动应答文件

/nfs/iso        *(ro)   共享光盘内容



cd /tftpboot/

  958  ls

  959  touch aa.txt

  960  ll -d /tftpboot/

  961  chmod 757 /tftpboot/

  962  ll -d /tftpboot/

  963  ls

  964  cat install.log 

  965  lsa

  966  ls

  967  rm -rf aa.txt install.log 

  968  ls

  969  history 

  970  cd 

  971  ls

  972  cd /media/

  973  ls

  974  cd /mnt/

  975  ls

  976  ls

  977  cd images/pxeboot/

  978  ls

  979  cp initrd.img vmlinuz /tftpboot/

  980  cd /nfs

  981  mkdir /nfs

  982  cd /nfs/

  983  ls

  984  mkdir ks

  985  mkdir iso

  986  ls

  987  vim /etc/exports 

  988  mount /dev/cdrom /nfs/iso/

  989  service nfs restart

  990  service nfs restart

  991  showmount -e 192.168.33.1

  992  ls

  993  cd /

  994  cd 

  995  ls

  996  vim anaconda-ks.cfg 

  997  cd /nfs/ks/

  998  ls

  999  vim ks.cfg 

 1000  vim /etc/exports 

 1001  history