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
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