第一天
linux的起源和发展
gun计划  (GNU工程已经开发了一个被称为“GNU”(GNU 是由“GNU's Not Unix”)
gul  
什么是开源软件  开源软件,英文缩写OSS(Open Source Software),是对源代码开放的软件总称,是区别于商业软件的一类自由软件,可免费获取和使用,其作者或是个人,或是团队,或是公司

=================================================================

第二天
基本命令使用
cp                   复制命令  
cp -rfv              /media/*  /mnt/rhel6  
mv        移动文件夹或者修改文件名称
mv aa bb 把aa文件名修改成bb
touch     新建文件
touch aa.txt  创建aa.txt
mkdir   创建目录
mkdir file  创建file目录
rm 删除文件  
rm -rf  file  删除file文件



第三天
useradd   添加用户
useradd -u 600 -g group1  redhat  
userdel  -r redhat     删除用户
groupadd  -g 600   添加组
groupdel     删除组
whoami    查看当前用户
whatis   获取命令的解释
who   显示正在登录系统的用户
cal  -j   查看日历
cat   查看文本
date   设置时间和日期
poweroff   关闭电源
reboot   重新启动
df  -h   查看过在的磁盘分区信息
du  -s -h   查看文件或目录大小
halt -p   关闭电源



file 权限设置

chown  修改owner权限  -R(递归修改)
chown test file -R  
chown test.user1 file1 -R
chmod    修改文件权限(u.g.o权限)
chmod 777 file1  给文件file赋予属主rwx  属组 rwx 其他用户 rwx权限
chgrp 修改属组权限        
chgrp test file1



interface config

device eth0  设备名
bootproto=none 接口获取ip地址方式   (dhcp,none,static)
noboot=yes  开机是否启用
ipaddr=10.0.0.1    接口IP地址配置
netmask  接口子网掩码配置
gateway  默认网管
dns1  dns domain name server) 配置



yum config

name = localhost yum  yum 资源名
baseurl=file:///mnt/   本地路径  或者网络路径
enabled=1  安装软件时是否检测yum源
gpgcheck=0  安装软件是是否检测软件key


yum install vsftpd   安装软件
yum remove vsftpd    卸载软件
yum reinstall vsftpd  重新安装软件



rpm

rpm -ivh  安装软件是显示进度和定义hash
rpm -ql    查询软件包所在目录
rpm -V 查询软件包配置文件是否被修改过
rpm -K 验证软件包是否被篡改
rpm -i 查看软件包信息
rpm -qf 文件属于那个软件包
rpm -qp 查询未安装的软件包
rpm -qd 查询软件包文档
rpm -qc 查询软件包配置文件路径
rpm -qip 查询未安装软件包信息
rpm -qlp 查询软件包要安装的路径
rpm -qi 查询软件包信息
rm -rf /bin/mount  删除mount命令
rpm -qf /bin/mount 查询mount命令属于那个软件包


rescue 模式  

如何恢复mount命令
reboot 重新启动系统
通过网络或本地光盘引导
选择rescue模式
mkdir /cdrom    在恢复模式输入mkdir /cdrom 创建cdrom挂载点
mount /dev/sr0  /cdrom    挂载cdrom到/cdrom
chroot /mnt/sysp_w_picpath  改变根目录到/mnt/sysp_w_picpath
rpm -qf /bin/mount    查询mount命令属于那个软件包
rpm -ivh /source/Packers/utli-linux-ng  --root=/mnt/sysp_w_picpath --force   安装util-linux-ng 软件包
reboot   重新启动系统


====================================================================

第四天

locate 查找本地资源  需要(updatedb)
locate /mnt/ file  查找文件file
find 查找命令  
find /mnt/  -name file -exec cp -rfv {} /tmp \; 查找/mnt下 以文件名file的然后复制到/tmp
find /mnt/  -user root -group test -exec chmod 777 {} \;   查找/mnt 下用户名为root 组为test 的文件  改变权限为777
find /mnt/ -not -user root -not -group test  查找/mnt下  不是以root用户和test组的文件
mail -s hello root   在发送邮件时直接定义邮件主题  
mail -u user1   查看user1用户的邮件
grep bash /etc/passwd   在passwd中过滤有bash的行
grep 'nologin$' /etc/passwd
grep  -i -v #  
grep -i 忽略大小写
grep -v 反向过滤
grep ^root passwd   在passwd文件中过滤 以root字符开头的数据
grep ‘bash$’ passwd   在passwd中过滤以bash结尾的行
grep -i  passwd     在过滤时忽略大小写
wc  -w -c -d
wc -w /etc/passwd    统计在passwd中文字数量
wc -c  /etc/passwd   统计passwd文件中的字符数
wc -l  /etc/passwd   统计passwd文件中的行数
cut  -d : -f 2   /etc/passwd   过滤passwd文件中以:结束的第二行  
sort -nur
sort -n  file 以从小到达显示file中的数字
sort -u  file  以从小到达显示file中的数字 并且忽略重复出现的数字
sort -r  file  以从大到小方式显示file文件中的数字
diff
diff  -u  aa bb  > cc    以详细方式对比aa文件和bb 文件中的不同  导入到cc
patch -b   aa  bb   在打补丁是备份aa中的数据
sed    查找替换
sed  -e  链接
sed 's/bash/nologin/g' /etc/passwd
sed -e '1,6s/nologin/hello/g' -e '7,11s/sbin/westos/g' /etc/passwd
{
touch file
vim file
1,5s/nologin/hello/g
6,11s/nologin/westos
sed -f file /etc/passwd
}
touch file{1,2,3,4,5,6,7,8,9}{a,b,c,d,e,f,g,h}{a,b,c,d,e,f,g} 快速创建文件
rm -rf file[1,2,3][a,b,c][a.b.c] 删除多个文件
rm -rf file[^1,2,3]* 除file【1,2,3】以外的全部删除
rm -rf * 删除所有
rm -rf filea?
rm -rf [^aa]

=========================================================

第五天
>   正确输出
[kft@desktop29 file]$ find /etc/ -name passwd > file
find: `/etc/polkit-1/localauthority': Permission denied
find: `/etc/audit': Permission denied
find: `/etc/audisp': Permission denied
find: `/etc/pki/CA/private': Permission denied
[kft@desktop29 file]$ cat file
/etc/passwd
/etc/pam.d/passwd

2>  错误输出
find /etc/ -name passwd 2> file

&>  正确和错误同时输出
[kft@desktop29 file]$ find /etc/ -name passwd &> file
[kft@desktop29 file]$
[kft@desktop29 file]$ cat file
/etc/passwd
find: `/etc/polkit-1/localauthority': Permission denied
find: `/etc/audit': Permission denied
find: `/etc/audisp': Permission denied
find: `/etc/pki/CA/private': Permission denied
find: `/etc/cups/ssl': Permission denied
find: `/etc/ntp/crypto': Permission denied
/etc/pam.d/passwd
find: `/etc/lvm': Permission denied
find: `/etc/selinux/targeted/modules/active': Permission denied
find: `/etc/libvirt': Permission denied
find: `/etc/dhcp': Permission denied


>>  正确输出追加

[kft@desktop29 file]$ find /etc/ -name passwd >>file
find: `/etc/polkit-1/localauthority': Permission denied
find: `/etc/audit': Permission denied
find: `/etc/audisp': Permission denied
find: `/etc/pki/CA/private': Permission denied
find: `/etc/cups/ssl': Permission denied
[kft@desktop29 file]$ cat file
find: `/etc/ntp/crypto': Permission denied
find: `/etc/lvm': Permission denied
find: `/etc/selinux/targeted/modules/active': Permission denied
find: `/etc/libvirt': Permission denied
find: `/etc/dhcp': Permission denied
/etc/passwd
/etc/pam.d/passwd

2>>   错误追加
[kft@desktop29 file]$ find /etc/ -name passwd 2>> file
/etc/passwd
/etc/pam.d/passwd

<     导入数据处理
[kft@desktop29 file]$ tr 'a-z' 'A-Z' < /etc/passwd
ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
BIN:X:1:1:BIN:/BIN:/SBIN/NOLOGIN
DAEMON:X:2:2:DAEMON:/SBIN:/SBIN/NOLOGIN
ADM:X:3:4:ADM:/VAR/ADM:/SBIN/NOLOGIN
LP:X:4:7:LP:/VAR/SPOOL/LPD:/SBIN/NOLOGIN
SYNC:X:5:0:SYNC:/SBIN:/BIN/SYNC

<<    导入多行数据
[kft@desktop29 file]$ mail -s test root <<end
> fs
> afdsa
> fdsa
> fdsa
> end

find /etc/ -name passwd 2>&1 |wc -l    把错误重定向通过正确信息输出
|     管道
[kft@desktop29 file]$ cat /etc/passwd |wc -l
43

ls /etc/ |grep passwd |wc -l

[kft@desktop29 file]$ ifconfig br0 |grep 'inet addr' |cut -d : -f 2 |cut -d ' ' -f 1     过滤ifconfig eth0中的ip地址

echo $PATH    查看当前用户环境变量

如何通过手动创建用户
vim /etc/passwd   用户信息
vim /etc/group    组信息
vim /etc/shadow   用户密码信息
vim /gshadow      组密码
cp /etc/skel/.* /home/users
用户和组管理

useradd 添加用户
groupadd 添加组
passwd 修改密码
usermod 修改用户参数
groupmod 修改组参数
userdel 删除用户
userdel -r 删除用户全部信息(mail)
groupdel 删除组

普通用户提升权限

root    ALL=(ALL)       ALL
kft    desktop29.example.com=/sbin/ifconfig,/sbin/fdisk,/sbin/poweroff

sudo /sbin/ifconfig eth0:1 192.168.0.111
sudo ifconfig eth0:0 192.168.0.112


test3-1,test3-2,test3-3
1:vim /etc/resolv.conf
nameserver 192.168.0.254  (检查是否正确)
2:vim /etc/sysconfig/network-script/ifcfg-eth0
DEVICE eth0
BOOTPROTO=none
NOBOOT=YES
IPADDR=192.168.0.222
NETMASK=255.255.255.0    (检查是否一致)
GATEWAY=192.168.0.254
DNS1=61.134.1.4


test3-4

root 用户不能能登录系统
1:reboot
2:按e编辑启动兰
3:在启动栏按上下键切换kernel  按e编辑   在quit后面 添加1
4:进入单用户以后 用vim /etc/shadow    把root加密密码前面的!号去掉
5:如果想直接修改密码 需要关闭selinux   命令 setenforce 0
5:reboot重新启动


test3-5

mount 命令丢失以后如何修复

reboot
通过光盘或者网络引导系统
进入rescue以后
amkdir cdrom 建立光盘挂载点
chroot /mnt/sysp_w_picpath 切换根目录
rpm -qf /bin/mount
exit
rpm -ivh /cdrom/Packets/uilt-linux-ng -root=/mnt/sysp_w_picpath --force

预科结束

===============================================================

RH124
第一单元
gnome 桌面入门
gnome是REDHAT ENTERPRISE LINUX 默认的桌面
在X WINDOWS SYSTEM 上运行的桌面环境
gnome桌面包含集成运用程序,系统文件管理,服务器的集成控制,配置服务,和联系远程系统
在gnome下修改密码   密码更改要求最少小于6位,包括大小写字符,并且不是字典中出现的字符( 以上这些除root以外)
修改密码步骤:system-preferences->about me -> change password
gnome下帮助文档 system ->document -> release  notes
通过gedit 编辑文件
application-> accessories->gedit text Editor

==================================================================

第二单元
使用nautilus 在图形下管理文件
在shell中输入nautilus or application -> system tools -> file browser
nautilus 是gnome桌面附带的一个文件管理工具
在nautilus中打开隐藏文件  view->show hidden
nautilus在同分区下移动文件直接拖动,复制文件按键盘ctrl  建立软链接 按键盘的alt拖动
在nautilus中访问远程设备
places -> connect to server
支持远程链接服务
公共ftp,windows 共享 nfs 网络文件系统,ssh 等

====================================================================

第三单元
在图形下获得本地帮助
system -> documentation -> release notes
system-help
在终端中直接输入yelp
在线帮助
http://www.redhat.com/docs

redhat 全修支持服务
通过rhn_register

====================================================================

第四单元
root用户是非常危险的,所以一般在本地或者远程登录系统是先从登录本地用户,在切换root
管理系统时钟
system-config-date  打开系统时钟配置
system->administration->date&time
配置ntp服务
启动system->administration->date&time
单击time zone 选择utc
单击date and time 选择sysncheonize date and time
点击add 添加要同步的ntp server
在advanced options (高级选项) 选择speed up inital synchronization
和local time source
点击ok
配置打印机
打印机简介 咋irhel linux  系统的打印操作是由 (common unix printering system)cups  
每个打印机会有一个或多个关联队列
图形配置printer  system -> administration  -> printing
点击new 点击internet printing protocol (ipp)
输入打印机ip地址,和打印机名称,加载驱动ceneric(通用)
输入打印机名称,打印机描述,和位置
选择打印文件的模式 test-noly
ls -l / |lpr  打印/目录
打印机在线帮助 http://localhost:631/htlp

=======================================================================

第五单元
bash入门
要获取命令的帮助使用--help or man command or info command
命令行是由shell提供的
rhellinux 默认shell 是bash (unix 下 bourne shell 改进的)
在bash中前后台的进程的调用
ctrl+c 结束进程
ctrl+z 暂停当前打开的进程
jobs 查看后台进程
bg 把进程打入到后台 bg 1
fg 调用后台进程 fg 2
command & gedit &

==========================================================================

第六单元
管理物理存储
分区的中列: mbr,primary,extended,logical。
在图形下磁盘管理 application -> system tools disk utility
开机自动挂载磁盘 vim /etc/fstab
add /dev/sda6 /mnt/test ext4 defaults  0 0

RHEL6下虚拟机的使用

========================================================================

第七单元
管理逻辑卷
物理卷 pv
卷组 vg
逻辑卷 lv
物理范围 pe
lvm图形配置 system-config-lvm
建立lvm
1,创建分区
2,初始化并建立pc
3,建立vg
4,创建lv
5,创建文件系统
6,挂载分区
lvm设备管理
lvm拉伸与缩减
vg拉伸和缩减
lvm设备删除
lvm删除顺序
删除lv,删除vg 删除pv



vim
s 删除向后一个字符插入
S 删除整行插入
o 下一行插入
O 上一行插入
a 下一字符插入
A 行未插入
dd 删除当前行
d2d 删除当前向下2两行
yy 复制当前行
y3y 复制当前行向下3行
cc 剪切当前行
c3c 剪切当前行向下3行
i 当前行插入
ctrl+r 撤销
p 粘贴
u 撤销操作
ctrl+y 复制上一行
:wq 保存推出
:w 保存
:q! 强制退出
:wq! 强制保存退出
ctrl+w s 竖屏显示
ctrl+w+v 横屏显示
ctrl+w+c 撤销横竖屏

================================================================

第八单元

监控系统资源
操作系统通过信号与进程进行通信
这些信号向进程报告我们的动作
信号 1
信号 9
信号 15

每个逻辑处理单元在其 cpu 上一次只能执行一个进程
我们靠优先级来调度进程处理的排名
优先记得范围是从 -20~19
优先级越小,进程调度越优先

监控磁盘使用情况
文件系统级磁盘使用情况分析
- 应用程序 --> 系统工具 --> 磁盘情况分析器
- 编辑 --> 首选项
目录级磁盘使用情况分析
- 应用 --> 系统工具 --> 磁盘情况分析器
- 分析器 --> 扫描文件系统


==================================================================

第九单元

图像话管理系统软件
system-adminstration-add/remove software
对系统软件的查看
对系统软件软件的管理
对系统软件的升级

Yum 命令的使用
Yum clean all 清除yum缓存
Yum list 列出yum所以资源
Yum install 安装软件包
Yum grouplist */mount 列出group
Yum whatprovides 查询单个命令输入那个软件包
Yum update 更新软件包

Rhn 的使用
可以通过 rhn_register 进行注册

===================================================================

第十单元

Linux 下常用的命令
简介
本单元涵盖的主题:
系统基础命令 ls,cd,pwd,touch,mkdir,cp,mv,rm
文本察看命令 cat,less,head,tail
文本过滤命令 grep,cut
文本处理命令 wc,sort,diff,patch
文本转换命令 tr,sed
文本编辑命令 nano ,vim

=================================================================

第十一单元
touch
Touch 新建空文件
Touch 修改文件的时间

mkdir
Mkdir 建立目录
Mkdir -p 建立递归目录
Mkdir -m 指定权限建立目录

cat
Cat 显示文件内容
Cat -b 显示文件内容并显示行号

grep
Grep 过滤关键字
Grep -i 跳过大小写
Grep -v 反向过滤
Grep -nx 显示过滤行在内的前 n 行和后 n 行
Grep -Ax 显示过滤行在内的后 n 行
Grep -bx 显示过滤行在内的前 n 行

cut
Cut 截取关键字
Cut -d 指定分割符
Cut -f 指定截取的段
Cut -c 指定字符截取

===================================================================

第十二单元

用户和组管理分组项目
从 gnome 界面,依次选择“系统” --> 管理 --> 用户和组
打开用户和组
单击”添加用户”
填写用户,全名,密码,然后确定
修改用户的密码


对用户的调节
修改用户密码
调整用户密码期限属性
对用户帐号的锁定与解锁
用户与组隶属关系的管理
用户的删除


====================================================================

第13单元
u (user)
g (group)
o (other)

r (read-only)
w (write)
x (execution)

chmod 755 file
chmod go+w file
chmod go-x file
chmod -x file
chmod o+t file
chmod 1777 file
chmod u+s file
chmod g+s file
chmod a+w file

chmod 755 file
chgrp group1 file
chown user1.group1 file

r=4
w=2
x=1

suid 冒险位
sgid 粘制位
sticky 强制位

suid=4
sgid=2
sticky=1

chmod o+t file
chmod g+s file
chmod u+s file
chmod 7755 file


=======================================================================

第14单元
ssh 加密传输
ssh root@192.168.0.188 以root身份登录
ssh -X root@192.168.0.188 ls /mnt 以root身份在远程执行ls /mnt
ssh -X root@192.168.0.188 halt 远程关机
ssh-keygen 生成加密key
ssh-copy-id -i id_rsa.pub root@192.168.0.188 上传pubkey到服务器
ssh-agent bash 生成新的bash层 记录ssh密码
ssh-add 在生成bash中添加密码

scp /mnt/file root@192.168.0.188:/mnt  上次本机/mnt/file文件到远程主机/mnt目录下
scp -r /mnt root@192.168.0.188:/tmp 上传本机/mnt目录到远程主机/tmp下
scp -r /mnt/ root@192.168.0.188:/tmp 上传本机/mnt/目录下所有到远程主机/tmp下
scp -r /mnt/ root@192.168.0.188:/tmp 上传本机/mnt/目录到远程主机/tmp下

rsync -r /mnt/ root@192.168.0.188:/nnt 同步本机/mnt/目录到远程主机/mnt目录
rsync -r root@192.168.0.188:/mnt /tmp 同步远程主机/mnt目的到本机/tmp



tar
tar -cf etc.tar /etc
tar xf etc.tar 解压etc.tar
tar -t etc.tar 显示etc.tar 压缩包内容
tar -r etc.tar file 添加file文件到etc.tar
tar -f etc.tar --get file1 在etc.tar 压缩包中获取file1文件
tar -f etc.tar --delete file1 在etc.tar 压缩包中删除file1文件
tar -xf etc.tar -C /mnt 解压etc.tar 文件到/mnt下

gz
tar -zcf etc.tar.gz /etc
tar -zxf file.tar.gz -C /mnt
gzip file.tar
gunzip file.tar.gz
bg2
tar -jcf etc.tar.bg2 /etc
tar jxf etc.tar.bg2
bzip2 file.tar
bzunip2 file.tar.bg2
zip
zip etc.tar.zip etc.tar
unzip etc.tar.zip

vncserver
vncview
/etc/sysconfig/vncservers
vncpasswd
vncview -shared -viewonly 192.168.0.67:1 &
vncserver -kill :1
vncview -shared  -via root@192.168.0.60 localhost:1

================================================================================

第十五单元

Ssh 的访问安全
Package = openssh-server
Service = sshd
Configfile = /etc/sshd_conf
No root login = pemitRootLogin no
No password authentication =
passwdAuthentication no

配置 vnc 服务器
Package = vnc-server
Service = vncserver
Config file = /etc/sysconfig/vncservers
Useful options to VNCSERVERARGE
- NOLISTEN TCP
- LOCALHOST

VNC 的命令
Vncserver
Vncviewer
Vncpasswd

Vnc 的加密连接
Vncviewer -via root@192.168.0.254 localhost:1


=================================================================================

RH135

第一单元
自动安装
kickstart
yum install system-config-kickstart
system-config-kickstart  使用kickstart工具创建ks.cfg
/root/anaconda-ks.cfg ks模板
ksvalidator 编辑ks.cfg 文件以后可以使用命令检测语法错误
为安装程序提供kickstart文件
网络服务器 ftp http nfs
dhcp/tftp服务器
usb磁盘或者cdrom
本地磁盘  

ks=http://server/dir/ks.cfg
ks=ftp://server/dir/ks.cfg
ks=nfs:server:/dir/ks.cfg
ks=hd:divice:/dir/ks.cfg
ks=cdrom:/dir/ks.cfg

=============================================================================

第二单元
shell
w
last
lastd


用户
touch /mnt/file.sh
add
#!/bin/bash
ping -c1 -w1 192.168.0.$ip

cd ~
vim .bash_profile  add export ip=100
source .bash_profile
sh  /mnt/file.sh

临时
export ip=100
ping -c1 -w1 192.168.0.$ip

全局
vim /etc/profile
add
export ip=100
source /etc/profile
su - kft
sh /mnt/file.sh

添加shell执行目录
用户
cd ~
vim .bash_profile
add
PAHT=$PATH:$HOME/bin:/mnt
全局
vim /etc/profile
add
export PATH=$PATH:/mnt

alias 设置

临时
alias vi="vim"
用户
cd ~
vim .bashrc
add alias vi="vim"
source . bashrc
全局
vim /etc/bashrc
add alias vi="vim"

=======================================================================

第三单元

链接间的对比:
硬链接 符号链接 (或软链接)
指向相同 indoe 的多个名称 指向原始名称的附加名称
增加链接数 分隔文件
所有名称是平等的 附加名称可以断开
在删除所有名称之前,
数据一直保留 如果删除了原始名称,
则数据丢失
必须在相同文件系统中
可以跨多个文件系统

ln /mnt/file /mnt/file1
ln -s /mnt/file /opt/file1 必须使用绝对路径

链接间的对比:

硬链接
指向相同 indoe 的多个名称
增加链接数
所有名称是平等的
在删除所有名称之前,数据一直保留
必须在相同文件系统中

符号链接 (或软链接)
指向原始名称的附加名称
分隔文件
附加名称可以断开
如果删除了原始名称,则数据丢失
可以跨多个文件系统

1 indoe编号
2 连接数。
创建新的硬链接时链接数会增加,
删除时会减少。
3 文件的字节大小 (名称“original”为八个单字节字符)
4 符号链接的名称
5 符号链接所指向文件的名称

软链接:增加indoe号,文件大小不变
硬链接:增加复制文件,indoe号不变

Tar 主要选项:
c 创建归档
x 提取归档
t 测试或列出归档内容
v 显示详细信息
f 指出要创建或提取的归档文件名称
g 使用 gzip 压缩类型
j 使用 bzip2 压缩类型
Tar 语法示例:
# tar zcvf /mnt/etc.tar.gz /etc
$ tar ztvf /mnt/etc.tar.gz
$ tar zxvf /mnt/etc.tar.gz

======================================================================

第四单元

管道和重定向
在 Linux 中,管道和 I/O 重定向是两个最强大的命令行功能。
I/O 重定向允许您将标准输出或错误消息从程序重定向至文件,以进行保存或稍
后进行分析,或禁止其在终端显示。您还可以通过文件而非键盘将输入读取至命
令行程序。
管道允许您将标准输出信息从程序连接至另一个程序的输入。这允许将多个小程
序链接成一个管道,每个程序作用于前一个程序的输出。
名称 说明 编号 默认
STDIN 标准输入 0 键盘
STDOUT 标准输出 1 终端
STDERR 标准错误 2 终端

使用 grep
grep 命令是一个 General Regular Expression Parser; 该命令搜索
字符串与指定正则表达式匹配的文件,并且默认情况下,将打印出包含
匹配字符串的任何行;
对于 grep ,有许多选项可以设置,从而会影响其输出。最有用的一些
选项包括: - -color (可为匹配的行中的模式着色)、 -i (采用区分大
小写的格式匹配 regex )和 -v (打印出不包含与 regex 匹配的字符
串的任何行)
分析配置文件或在系统上存储在文本文件中的信息时, grep 命令是一
个非常有用的工具。
6
通过从 /etc/passwd 文件中提取行来学习 grep 的使用:
grep ‘root’ /etc/passwd
grep --color ‘root’ /etc/passwd
grep ‘^root’ /etc/passwd
grep ‘:/bin/bash$’ /etc/passwd
grep ‘:/home/.*:’ /etc/passwd
Grep ‘:0:’ /etc/passwd
Grep ‘:1[0-9]:’ /etc/passwd

管道和重定向示例:
列出 /usr/share/doc 中以数字四结尾的所有文件
ls /usr/share/doc | grep ‘4$’
打印 /etc/hosts 中包含数字的所有行
grep ‘[0-9]’ /etc/hosts
打印 /etc/hosts 中包含 127.0.0.1 的行
grep ‘127\.0\.0\.1’ /etc/hosts
以 student 用户身份运行以下命令,将 STDOUT 重定向到 /tmp/output.txt ,将
STDERR 重定向到 /tmp/error.txt find /etc -name ‘host*’
find /etc -name ‘host*’ > /tmp/output.txt 2> /tmp/error.txt
以 student 用户身份运行以下命令,将 STDOUT 和 STDERR 重定向到
/tmp/all.txt find /etc -name ‘host*’
find /etc -name ‘host*’ > /tmp/all.txt 2>&1
排列 /etc/passwd 文件,并将其发送到默认打印机
cat /etc/passwd | sort | lpr
打印 /etc/passwd 中冒号 (:) 之间是三位数的行
grep ‘:[0-9][0-9][0-9]:’ /etc/passwd


第五单元

ifconfig 显示网卡信息
hostname 获取主机名
/etc/hosts
/etc/resolv.conf 配置dns
/etc/sysconfig/network
/etc/init.d/network
host www.baidu.com
dig www.baidu.com
ifup eth0
ifdown eth0
ifconfig up eth0:1
ifconfig down eth0:1
ip addr show eth0
ip addr
toute -n
ip route
traceroute www.baidu.com

NetworkMnaager 图形下的网络托管

静态
DEVICE=eth0
BOOTPROTO=static
IPADDR=102.168.0.100
PREFIX=24 配置子网掩码
GATEWAY=192.168.0.254
DNS1=192.168.0.254
NOBOOT=yes
DELAY=0

DHCP
DEVICE=eth0
BOOTPROTO=dhcp
NOBOOT=yes 开机是否启动网卡
PEERDNS=yes dhcp是否获取dns

==========================================================================

第六单元
加密文件系统 cryptsetup

fdisk -cu /dev/sda
create partition
cryptsetup luksFormat /dev/sda5 然后添加密码
cryptsetup luksOpen /dev/sda5 diskname  解密文件系统
mkfs.ext4 /dev/mapper/diskname 创建文件系统
开机自动挂载加密文件系统
vim /etc/fstab
add
/dev/mapper/diskname /mnt ext4 defaults 0 0
vim /etc/crypttab
diskname /dev/sda5 none or /root/passwd (加密文件系统密码)
cryptsetup luksAddKey /dev/sda5 /root/passwd

删除加密文件系统
cryptsetup luksClose /dev/sda5

===========================================================================

第七单元
fdisk -cu /dev/vda
create  parttition
convert id 8e
pvcreate /dev/vda5 /dev/vda6 /dev/vda7
pvscan
pvdisplay
vgcreate vg0 /dev/vda5 /dev/vda6
vgscan
vgexted vg0 /dev/vda7
vgdisplay

lvcreate vg0 -L 50M -n lv0
lvscan
lvexted -L 100M /dev/vg0/lv0
lvdisplay

mkfs.ext4 /dev/vg0/lv0
mount /dev/vg0/lv0 /mnt
df -H
lvexted -L 150M /dev/vg0/lv0
df -H
resize2fs /dev/vg0/lv0
df -H
e2fsck -f /dev/vg0/lv0
resize2fs /dev/vg0/lv0 50M
lvreduce -L /dev/vg0/lv0 50M




先用resize2fs /dev/vg0/lv0 10M 缩小
再用lvreduce -L 10M /dev/vg0/lv0
如果相反则出现问题
以下是解决问题的方法
lvreduce -L 10M /dev/vg0/lv0
mount /dev/vg0/lv0
.......
vim /etc/fstab
add
/dev/vg0/lv0 /mnt ext4 defaults 1 2




1.input root passwd
vim /etc/fstab
#/dev/vg0/lv0 /mnt ext4 defaults 1 2
reboot
2.lvexted -L 50M /dev/vg0/lv0
resize2fs /dev/vg0/lv0
e2fsck -f /dev/vg0/lv0
resize2fs /dev/vg0/lv0 40M
resize2fs /dev/vg0/lv0

df -H
mount /dev/vg0/lv0 /mnt

ok

========================================================================

第八单元
yum install samba-client
yum install cifs
showmount -e 192.168.0.254
mount 192.168.0.254:/var/nfs /mnt
smbclient -L 192.168.0.254
mount //192.168.0.81/share /mnt
umount /mnt

yum install autofs
vim /etc/sysconfig/autofs
vim /etc/auto.master
add
/mnt/ /etc/auto.mnt
vim  /etc/auto.mnt
add
pub  192.168.0.254:/vat/ftp/pub
/etc/init.d/autofs stop
/etc/init.d/autofs start

==========================================================================

第九单元

pa aux
account:passwd:uid:gid:gecos:directory:shell
account 是 UID 到名称的一种映射,便于用户使用。
password 以前是以加密格式保存密码的位置。现在密码存储在称为 /etc/shadow 的单独文件中。
UID 是用户的 ID ,在最基本的级别标识用户的编号。
GID 是主组 ID ,默认情况下,是与所有新建文件关联的号码,用于潜在的合并。
GECOS 字段存储任意文本,通常是用户的实际姓名、办公电话或个人电话号码。
directory 是用户的个人数据和配置文件的位置。
shell 是在用户登录时,以及如果 shell (例如 /bin/bash )提供用户命令行提示时,执行的程序。

useradd
userdel
id
uid 0  root
uid 1-499 按约定的是“系统用户” 一般是非交互服务帐户
uid 500 常规帐号
/etc/passwd 存储帐号信息
/etc/shadow 存储密码和其他信息
管理密码
一直以来,密码都存储在 /etc/passwd 文件中。但是 /etc/passwd 必须完全可
读,因为命令(例如 ls )需要访问该文件才能将 UID 映射到用户名。
将密码迁移到更加安全的 /etc/shadow 文件,该文件支持若干个不同的密码加密
算法。只要加密的密码存储在专用文件中,密码期限策略和数据就可以存储。
密码哈希中存储有哪 3 条信息?
$1$myPMmLiM$NUAUYAnGzIt1maaTWmj1k.
1. 1 - 哈希算法( 1 表示 MD5 哈希)
2. myPMmLiM – 用于加密哈希的 salt
3. NUAUYAnGzIt1maaTWmj1k. - 已加密的哈希

/etc/shadow 字段
root:$1$myPMmLiM$NUAUYAnGzIt1maaTWmj1k.:15183:0:99999:7:::
1. 用户名
2. 密码散列
3. 上次密码更改日期(自 1970 年 1 月 1 日以来的天数)
4. 最短密码期限(按天数计, 0 = 无最短期限要求)
5. 最长密码期限(按天数计)
6. 密码警告期限(按天数计, 0 = 未指定警告)
7. 密码非活动期限(按天数计)
8. 账户到期日(自 1970 年 1 月 1 日以来的天数)

# chage -m 0 -M 90 -W 7 -I 14 username
在下次登录时, chage -d 0 username 将强制更新密码。
chage -l username 将列出用户名的当前设置。
usermod 可以修改账户,包括通过 -L 选项进行“锁定”。

useradd
userdel
passwd
chage
chage -d 0 username
chage -m 0 -M 30 -W 3 -I 15
chage -l username
usermod -L username

cat /etc/shadow
$1 表示md5加密

======================================================================


第十单元
ldap
yum groupinstall directory-client
terminal run system-config-authentication
user account database > LDAP
LDAP Search Base DN > dc=example,dc=com
LDAP server >ldap://instruceor.example.com
use TLS to encrypt connections
Download CA certificate
add ftp://instrator.example.com/pub/EXAMPLE-CA-CERT
OK
getent passwd 获取/etc/passwd文件中的所有用户
getent ldapuser1 passwd 在/etc/passwd文件中查找ldapuser1用户信息
vim /etc/sssd/sssd.conf
add enumerate = True 通过getent命令可以查看到/etc/passwd 中的网络用户
第十一单元

====================================================================

setfacl
setfacl -m u:username:rwx file
setfacl -m d:u:username:rwx directory acl 目录权限集成
setfacl -m m:rx file acl mask
setfacl -x u:username file
setfacl -x d:u:username dir acl 清除权限
setfacl -b file or dir
setfacl -m o::- file or dir
getfacl 查看文件acl权限
getfacl file or dir
dumpe2fs /dev/vda7  |grep options 查看/dev/vda7磁盘参数
tune2fs -o acl /dev/vda7 给/dev/vda7磁盘附加acl参数
tune2fs -o ^acl /dev/vda7 撤销/dev/vda7磁盘附加的acl参数
vim /etc/fstab
add
/dev/vda7 /opt ext4 defaults,acl 0 0

=====================================================================

第十二单元

selinux 加强型防火墙

/etc/sysconfig/selinux selinux配置文件
setenforce 设置selinux
getenforce 查看selinux状态
chcon -t httpd_sys_content_t /www 临时设置selinux
restorecon /www 刷新/www下selinux策略
restorecon -RFvv /www 强制刷新/www下selinux策略并显示过程
semanage fcontext -a -f "" -t httpd_sys_content_t '/www(.*)?' 永久设在selinux策略
semanage fcontext -a -f "" -t httpd_sys_content_t '/httpd(.*)?'
getsebool -a |grep ftp 获取ftp selinux布尔值
setsebool -P ftp_home_dir on 修改ftp selinux 布尔值

=====================================================================

第十三章
rpm
rpm -ivh
rpm -qf
rpm -ql
rpm -aq
rpm -qp

yum
yum list all
yum reinstall
yum remove
yum grouplist
yum groupinstall
yum groupinfo
yum info
yum update
yum upgrade
yum install


yum install createrepo -y
cp linuxqq /mnt
createrepo -v /mnt

vim /etc/yum.repos/server.repo
add
[qq]
name=qq
baseurl=file:///mnt
gpgcheck=0

======================================================================

第十四单元

service start  netstat -tanlp  iptables  selinux

netstat
/etc/init.d/rc5.d
ntsysv
chkconfig httpd on
chkconfig vsftpd --level 35 on
netstat -tanlp
netstat -r

=====================================================================

第十五章

yum install logwatch
logwatch
vim /etc/logwatch/conf/watch.conf
add
MailTo = username

=====================================================================

第十六章

ps
ps aux
kill
kill -1 9 15
killall -9 httpd
pkill -9 httpd
pstree
ps -aux
ps -ax -o nice,comm,pid
ps -o nice,comm,pid
ps -o nice,comm,pid,user
nice -n -5 vim &
renice -1 pid
top ukPM

crontab
-e
-u
-l
-r
crontab -e -u westos
*/30 8-21  * * echo hello

==================================================================


第十七章

lsmod
rmmod
modprobe -a
modprobe -r

mkinitrd -with fat.ko initramfs-`uname -r`.img 'uname -r'
mv initramfs-* initramfs.gz
guniz initramfs.gz
cpio -i < initramfs-*
rpm -ivh kernel


===================================================================


第18章
dd if=/dev/vda of=mbr bs=446 count=1
hexdump -C mbr 查看备份的mbr文件内容
vim  /etc/sysconfig/network-script/ifcfg-eth0
add DELAY=0
reboot
rescue
grub-install /dev/vda
ok

vim /boot/grub/grub.conf
add
default=0
timeout=5
splashp_w_picpath=(hd0,0)/grub/splash*
hiddenmenu
title REDHAT ENTERPRISE LINUX 6.0
root (hd0,0)
kernel /vmlinuz-* ro root=/dev/vda2
initrd /initrd*

rm -rf /boot/initramfs-*
mkinitrd initramfs-`uname -r` `uname -r`      `is ~
rm -rf /boot/kernel-*
rescue  run rpm -ivh kernel-* -force
rm -rf /etc/rc.d/init.sysinit
rescue run rpm -ivh initscript* --force



======================================================================


iptables ======>>tcpwarp=====>xinted=======selinux======filesystem

yum install xinted
yum install telnet-server telnet
vim /etc/xinted.d/telnet
modify dispable=no
service xinted restart


vim /etc/xinted.conf
no_access = ()
only_from 只允许访问的ip地址
max_load cpu负载    超过负载以后中断
cps = 10 10 防止ddos*** 每秒链接10个   超过后断开10秒
instances = 10 链接最大数
per_source = 10 本地最大链接数



hosts.allow
ldd /usr/sbin/xinted
ldd /usr/sbin/vsftpd

see libwarp.so

vim /etc/hosts.allow
add
in.telnetd:192.168.0.188
ALL:ALL
vsftpd:ALL
sshd:192.168.0.  EXCEPT 192.168.0.1  :spawn echo 'date' to %c from %s |mail -s warn root



hosts.deny
vim /etc/hosts.deny
add
ALL:ALL

=========================================================================

vsftpd

yum install vsftpd 安装vsftpd
yum whatprovides */semanage 搜索semanage命令属于那个软件包
yum install policycoreutils-python-2.0.83-19.1.el6.x86_64
vim /etc/vsftpd/vsftpd.conf vsftpd主配置文件

modify
anon_upload=YES 开启anonymous上传功能
anon_mkdir_write_enable=YES 开启anonymous创建目录权限
anon_other_write_enable=YES 开启anonymous其他功能(包括删除)
anonymous_enabled=YES 开启anonymous
add
anon_umask=022 anonymous用户的umask控制(上传文件的权限)
anon_root=/var/vsftpd 定义anonymous上传路径
mkdir
mkdir /var/vsftpd/pub -p
selinux
semanage fcontext -a -t public_content_rw_t '/var/vsftpd(/.*)?'
restorecon -RFvv /var/vsftpd
sebool
getsebool -a |grep ftp
setsebool -P allow_ftpd_anon_write on 开启sebool允许anon_write


modify
chown_uploads=YES
chown_username=kft 上传文件是使用本地用户身份



本地用户访问
vim /etc/vsftpd/vsftpd.conf
modify
local_enabled=YES 允许本地用户访问/     local_enable=NO 拒绝本地用户访问/
chroot_list_file=/etc/vsftpd/chroot_list 允许列表用户访问/



local_enabled=YES 允许本地用户访问/     local_enable=NO 拒绝本地用户访问/

两个一起使用
在列表中的用户不能访问/
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list


三个一起使用
在列表中的用户可以访问/
chroot_local_user=YES 启用本地用户访问/
chroot_list_enable=YES 启用在列表中的用户可以访问/
chroot_list_file=/etc/vsftpd/chroot_list 列表用户(需要手动创建文件)



userlist_deny=NO user_list_enable_YES 默认拒绝列表用户 可以通过userlist_deny=NO 来控制列表允许用户


vim /etc/vsftpd/ftpusers 永久拒绝
vim /etc/vsftpd/user_list    临时拒绝   可以通过user_list_deny=NO   来控制拒绝还是允许

限速
local_max_rate=102400
anon_max_rate=10240

监听两个ip方法
复制两份配置文件
cp vsftpd.conf vsftpd1.conf
add vsftpd.conf
listen_address=192.168.0.1
listen_port=8000 可加可不加
vim vsftpd1.conf
add
listen_address=192.168.1.1 定义
listen_port=9000 可加可不加
service vsftpd restart



虚拟ftp用户

vim /etc/vsftpd/vsftpd.conf
add
guest_enable=YES 启用虚拟身份登录
guest_username=ftp 虚拟用户身份(本地帐户)
pam_service_name=virstual pam认证文件

yum install db4-utils 安装db生成加密工具
vim users
(
add
user1
123
user2
123
)
db_load -T -t hash -f users login.db 把创建文本的users用户信息转换为加密的数据文件

vim /etc/pam.d/virstual
add
auth required  pam_userdb.so  db=/etc/vsftpd/login 调用pam_userdb.so服务模块认证login.db文件
account  required  pam_userdb.so  db=/etc/vsftpd/login 调用pam_userdb.so服务模块认证login.db登录用户

给虚拟用户定义家目录
vim /etc/vsftpd/vsftpd.conf
add
local_root=/var/ftp/virtual/$USER 定义虚拟用户家目录
user_sub_token=$USER

mkdir /var/ftp/virtual
cd /var/ftp/virtual
mkdir user1 user2 *
chown ftp.ftp *
service vsftpd restart



==========================================================================


httpd

yum install httpd -y

vim /etc/httpd/conf/httpd.conf

Listen=80

Document Root "/var/www/html"

DirectoryIndex index.html index.html.var

ServerRoot "/etc/httpd"
ServerAdmin root@localhost

userhome index 家目录index

#ServerName www.example.com:80

   Options Indexes FollowSymLinks
   AllowOverride None
   Order allow,deny
   Allow from all

<IfModule mod_userdir.c>

   # UserDir disabled 注释
   UserDir public_html 启用
</IfModule>


VirtualHost 虚拟主机

NameVirtualHost *:80
<VirtualHost *:80>
   ServerAdmin webmaster@dummy-host.example.com
   DocumentRoot /www/docs/dummy-host.example.com
   ServerName dummy-host.example.com
   ErrorLog logs/dummy-host.example.com-error_log
   CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>



cgi support cgi支持

<Directory /var/www/html/admin>
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>


php support

yum install php
/etc/init.d/httpd restart

virstualhost 80

<VirtualHost *:80>
   ServerAdmin webmaster@dummy-host.example.com
   DocumentRoot /var/httpd
   ServerName web.example.com
   ErrorLog logs/dummy-host.example.com-error_log
   CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
<VirtualHost *:80>
   ServerAdmin ekefatong@example.com
   DocumentRoot /var/httpd/virstual/web2
   ServerName web2.example.com
   ErrorLog logs/dummy-host.example.com-error_log
   CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
<VirtualHost *:80>
   ServerAdmin ekefatong@example.com
   DocumentRoot /var/httpd/virstual/web1
   ServerName web1.example.com
   ErrorLog logs/dummy-host.example.com-error_log
   CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>





virstualhost 443  support

vim /etc/httpd/conf.d/ssl.conf
add
<VirtualHost *:443>
   ServerAdmin ekefatong@example.com
   DocumentRoot /var/httpd/virstual/web1
   ServerName web1.example.com
   SSLCertificateFile /etc/pki/tls/certs/localhost.crt
   SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLEngine on
</VirtualHost>
<VirtualHost *:443>
   ServerAdmin ekefatong@example.com
   DocumentRoot /var/httpd/virstual/web2
   ServerName web2.example.com
   SSLCertificateFile /etc/pki/tls/certs/localhost.crt
   SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLEngine on
</VirtualHost>

ldap 认证
<VirtualHost *:443>
   ServerAdmin ekefatong@example.com
   DocumentRoot /var/httpd/virstual/web2
   ServerName web2.example.com
   SSLCertificateFile /etc/pki/tls/certs/localhost.crt
   SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
   <Directory /var/httpd/virstual/web2>
   authname "ldap"
   authtypebasicPiovder ldap
   authLDAPUrl 'idap://instructor.example.com/pub/example-ca-cert'
   require valid-user
   </Directory>
   SSLEngine on
</VirtualHost>


===========================================================================


bind

yum install bind
直接使用顶级dns服务器解析
vim /etc/named.conf
modify
listen-on port 53 { 192.168.0.59; }; 定义侦听本机的ip和端口
//listen-on-v6 port 53 { ::1; };
dnssec-validation no; 关闭dnssec校验
service named start
本地域名解析
vim /etc/named.rfc1912.zones
add
zone "example.com" IN { 定义维护的域名
type master;
file "example.com.zone" 本域的数据文件存放的位置
}
cd /var/named/
cp -p named.localhost example.com.zone
vim example.com.zone
modify

$TTL 1D
@       IN SOA  desktop59.example.com. root.example.com. (
                                       0       ; serial
                                       1D      ; refresh
                                       1H      ; retry
                                       1W      ; expire
                                       3H )    ; minimum
               NS      desktop59.example.com.
desktop59       A       192.168.0.59
master          A       192.168.0.100
kft             CNAME   master dns 别名
@               MX 5   192.168.0.59.      dns 邮件交换记录   (必须加.)                                                



view localhost {
       match-clients {localhost;};
       match-destinations {localhost;};
zone "." IN {
       type hint;
       file "named.ca";
};
zone "example.com" IN {
       type master;
       file "example.com.zone";
};
};

view localnets {
       match-clients { 192.168.0.0/24; };
       match-destinations { 192.168.0.0/24; };
zone "." IN {
       type hint;
       file "named.ca";
};
zone "example.com" IN {
       type master;
       file "example.com.net";
};
};


dns PTR dns反向

cp -p /var/named/named.loopback example.com.local
vim example.com.local
modify

$TTL 1D
@       IN SOA  desktop59.example.com. root.example.com. (
                                       0       ; serial
                                       1D      ; refresh
                                       1H      ; retry
                                       1W      ; expire
                                       3H )    ; minimum
               NS      desktop59.example.com. dns服务器名称
desktop59       A       192.168.0.59 dns服务器ip
59              PTR     master.example.com.
~  


dns slave 辅助dns


master dns server
vim /etc/named/named.rfc1912.zones
add

zone "example.com" IN {
       type master;
       file "example.com.zone";
       allow-update { none; };
       allow-transfer {192.168.0.188;}; 允许主机192.168.0.188更新

slave dns server

vim /etc/named.rfc1912.zones
add
zone "example.com" IN {
       type slave; 设置当前dns server 为slave
       file "slaves/example.com.zone"; 设置区域文件复制的位置
       masters { 192.168.0.59;}; 指定master dns server  (指定要去复制区域文件的服务器)
       allow-update { none; };




slave update 辅助服务器更新数据

master config 在主服务器中配置
vim /etc/named.conf
add
also-notify { 192.168.0.188;}; 主动向slave通知  (slave ip address)

vim /var/named/example.com
modify
0 (最大10位)      ; serial 修改数据文件以后修改值 (slave 按照这个值来判断数据是否更新)

nsupdate 远程更新数据

zone "example.com" IN {
       type master;
       file "example.com.zone";
       allow-update { 192.168.0.188; }; 填写允许远程更新数据ip地址
};

chmod 775 /var/named/ -R

nsupdate -dnssec-keygen

chmod 775 /var/named -R
vim /etc/named.conf
add
include "/etc/example.com.key";

vim /etc/named.rfc1912.zones
modify
zone "example.com" IN {
       type master;
       file "example.com.zone";
       allow-update { key example.com.; }; 要求用key认证 指定域名为 example.com
};

dnssec-keygen -a MHAC-MD5 -b 128  -n HOST example.com.


[root@desktop59 ~]# ls
anaconda-ks.cfg  install.log.syslog           Kexample.com.+157+65195.private
install.log      Kexample.com.+157+65195.key
[root@desktop59 ~]#cat Kexample.com.+157+65195.key
example.com. IN KEY 512 3 157 qpLEeM9wLAa4j/kiRf2W3A==




cp -p /etc/rndc.key /etc/example.com.key
cat Kexample.com.+157+65195.key

vim /etc/example.com.key
key "example.com." {
       algorithm hmac-md5;
       secret "qpLEeM9wLAa4j/kiRf2W3A=="; === cat Kexample.com.+157+65195.key
};

scp Kexample.com.+157+65195.* root@192.168.0.188:/root/

ssh 192.168.0.188

nsupdate -k Kexample.com.+157+65195.key
server 192.168.0.59
update add www.example.com 86400 A 192.168.0.11
send
exit
ok


=============================================================================

squid

yum install squid

acl控制
vim /etc/squid/squid.conf
modify

cache_dir ufs /var/spool/squid 1024 16 256 开启本地缓存  缓存文件1024M  16个文件夹 256个子目录

http_access allow all 允许所以用户

acl baddomain dstdomain www.qq.com www.baidu.com news.baidu.com
http_access deny baddomain

acl good src 192.168.0.0/24
http_access deny good

acl badurl urlpath_regex -i \.mp3$ .wma$
http_access deny badurl




squid 反向代理
vim /etc/squid/squid.conf
add
http_port 192.168.0.60:80 transparent vhost vport
cache_peer 192.168.0.60 parent 8080 0 no-query originserver

vim /etc/httpd/conf/httpd.conf
modify
Listen 8080





squid cluster

server1
yum install bind httpd squid

vim /etc/httpd/conf/httpd.conf
add
NameVirtualHost *:8080
Listen 8080
<VirtualHost *:8080>
   DocumentRoot /var/httpd/web1
   ServerName www.example.com
</VirtualHost>


vim /etc/named.conf
add
       listen-on port 53 { 192.168.0.60; };
       allow-query     { any; };
vim /etc/named.rfc1912.zones

zone "example.com" IN {
       type master;
       file "example.com.zone";
       allow-update { none; };
};

cd /var/named
cp -p name.localhost example.com.zone
vim example.com.zone

$TTL 1D
@       IN SOA  desktop60.example.com. root.example.com. (
                                       0       ; serial
                                       1D      ; refresh
                                       1H      ; retry
                                       1W      ; expire
                                       3H )    ; minimum
               NS      desktop60.example.com.
desktop60       A       192.168.0.60
www             A       192.168.0.60
www             A       192.168.0.61


vim /etc/squid/squid.conf
add

http_access allow all
cache_dir ufs /var/spool/squid 1024 16 256


http_port 192.168.0.60:80 accel vhost vport
icp_port 3130
cache_peer 192.168.0.61 sibling 80 3130
cache_peer 192.168.0.61 parent 8080 0 no-query originserver round-robin name=web2
cache_peer 192.168.0.60 parent 8080 0 no-query originserver round-robin name=web1
cache_peer_domain web1 web2 www.example.com

scp squid.conf root@192.168.0.61


server2 configure

vim /etc/httpd/conf/httpd.conf
Listen 8080
NameVirtualHost *:8080

<VirtualHost *:8080>
   DocumentRoot /var/httpd/web2
   ServerName www.example.com
</VirtualHost>

vim /etc/squid/squid.conf

http_access allow all
cache_dir ufs /var/spool/squid 1024 16 256


http_port 192.168.0.61:80 accel vhost vport
icp_port 3130
cache_peer 192.168.0.60 sibling 80 3130
cache_peer 192.168.0.60 parent 8080 0 no-query originserver round-robin name=web1
cache_peer 192.168.0.61 parent 8080 0 no-query originserver round-robin name=web2
cache_peer_domain web1 web2 www.example.com


============================================================================

nfs

yum install nfs-utils
service rpcbind start
service nfs start
vim /etc/exports
add
/share  *(rw,async)s
exportfs -rv
showmount -e 192.168.0.71
mount 192.168.0.71:/share /mnt
vim /etc/fstab
add
192.168.0.71:/share   /mnt nfs defaults 0 0

精确的地址放在配置文件的首行

vim /etc/exports
add
/share 192.168.0.199(rw,async,anonuid=500,anongid=500)
/share 192.168.0.188(rw,async,no_root_squash)
/share  192.168.0.0/24(ro,async)

rpcinfo -p 查看nfs端口号
固定nfs端口号  方便iptables 管理
vim /etc/sysconfig/nfs
modify
LOCKD_TCPPORT=3000 tcp端口
LOCKD_UDPPORT=3001 udp端口
MOUNTD_PORT=3003 mount端口
STATD_OUTGOING_PORT=3002 状态端口


========================================================================

samba
yum install samba samba-common samba-client
vim /etc/samba/smb.conf

setsebool -P samba_export_all_ro on
setsebool -P samba_export_all_rw on
workgroup = linux
server string = Samba Server Version

security = user

[public]
      comment = Public Stuff
      path = /share
      public = yes
      writable = yes
      printable = no
      write list = users,@group
      guest ok = yes
      browseable = no
      valid users = @group,users

chmod 777 /share
useradd user1 -s /sbin/nologin
smbpasswd -a user1
smbpasswd -x user1
smbpasswd user1

mount //192.168.0.102/test /mnt -o username=user1,password=user1
vim /etc/fstab
add
//192.168.0.102/test /mnt cifs defaults,username=user1,password=user1,ro  0 0


=================================================================

dhcp
yum install dhcp
cp -p /usr/share/doc/dhcpd-*/dhcpd.conf.sample /etc/dhcpd/dhcpd.conf
vim /etc/dhcpd/dhcpd.conf
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;


=================================================================

ddns

yum install dhcp bind
vim /etc/named.conf
modify

//      listen-on port 53 { 127.0.0.1; };
//      listen-on-v6 port 53 { ::1; };
       allow-query     { any; };
include "/etc/ddns.key";

vim /etc/named.rft1912.zones
add

zone "example.com" IN {
       type master;
       file "example.com.zone";
       allow-update { key ddns; };
};

dnssec-keygen -a HMAC-MD5 -b 128 -n USER ddns

cp -p /etc/rndc.key /etc/ddns.key

cat Kddns.+157+01273.key
ddns. IN KEY 0 3 157 469Opt8GjiRJORWk9yIL2g==

vim /etc/ddns.key

key "ddns" {
       algorithm hmac-md5;
       secret "469Opt8GjiRJORWk9yIL2g==";
};

vim /etc/dhc/dhcpd.conf

ddns-update-style interim;
key ddns {
       algorithm hmac-md5;
       secret "469Opt8GjiRJORWk9yIL2g==";
};
zone example.com. {
       primary 127.0.0.1;
       key ddns;
}

option domain-name "example.com";
option domain-name-servers 192.168.0.100;
option routers 192.168.0.100;

default-lease-time 600;
max-lease-time 7200;
authoritative;

subnet 192.168.0.0 netmask 255.255.255.0 {
 range 192.168.0.192 192.168.0.200;
}

dhclient 配置

cd /etc/dhcp/
rm -rf dhclient-eth0
vim /etc/dhcp/dhclient.conf
add

send fqdn.fqdn  "www.example.com.";
send fqdn.encoded on;
send fqdn.server-update on;


==================================================================

iscsi

scsi server
yum install scsi-target-utils
/etc/init.d/tgtd start
chkconfig tgtd on
fdiks -cu /dev/vda
tgtadm --lld iscsi  --op new  --mode target  --tid 1 -T example.com:storage1
tgtadm --lld iscsi  --op new   --mode logicalunit -b /dev/vda5  --tid 1 --lun 1
tgtadm --lld iscsi  --op bind  --mode target   --tid 1 -I ALL
tgtadm  --lld  iscsi  --op show  --mode target

iscsi client

yum install iscsi-initator
/etc/init.d/iscsi start
chkconfig iscsi on
iscsiadm  -m discovery -tsendtargets -p 192.168.0.x
iscsiadm -m node -T storagename -p 192.168.0.x -l
iscsiadm -m node -T storagename -p 192.168.0.x -u
iscsiadm -m node -T storagename -p 192.168.0.x -o delete


==================================================================


postfix

yum install postfix
alternatives --config mta

vim /etc/postfix/main.cf

myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain
inet_interfaces = all

dovecot

pop

yum install dovecot -y
/etc/init.d/dovecot start
vim /etc/dovecot/dovecot.conf
modify
protocols = imap pop3 lmtp
login_trusted_networks = 192.168.0.0/24

vim /etc/dovecot/conf.d
mail_location = mbox:~/mail:INBOX=/var/mail/%u 邮件目录

telnet 192.168.0.x 110
user kft
pass kft

list

mkdir /home/kft/mail/.imap/INBOX -p

mutt -f pop://kft@192.168.0.x

pops

cd /etc/pki/dovecot/certs
rm -rf dovecot.pem
cd /etc/pki/dovecot/private
rm -rf dovecot.pem

cd /etc/pki/tls/certs
make dovecot.pem
cp  devecot.pem /etc/pki/dovecot/certs
cp  devecot.pem /etc/pki/dovecot/private

====================================================================


故障恢复

grub-install  

vim /boot/grub/grub.conf
add kernel line
console=ttyS0
yum install minicom
minicom -p /dev/pts/1


==================================================================


sysctl

icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 忽略所有icmp对主机请求

sysctl -w icmp_echo_ignore_all=1 修改临时生效

vim /etc/sysctl.conf
add icmp_echo_ignore_all = 1
sysctl -p 刷新内核参数  立即生效   /etc/sysctl.conf

net.ipv4.ip_forward = 0 开启ip转发功能

=================================================================


iptables

iptables -nL
iptables -F
iptables -A INPUT -s 192.168.0.1 -j ACCEPT
iptables -A INPUT -S 192.168.0.2 -J REJECT
iptables -A INPUT -s 192.168.0.3 -j DROP
iptables -I INPUT -s 192.168.0.4 -j ACCEPT


iptables -P INPUT ACCEPT 修改默认策略
iptables -N REDHAT 添加表
iptables -E REDHAT redhat 重命名表
iptables -t filter -F REDHAT 刷策略

iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 80 -j ACCEPT

iptables -A INPUT -s 192.168.0.0/24 -i eth0 -p tcp --dport 21  -j DROP


iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -s 192.168.0.0/24 -m state --state NEW -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -s 192.168.0.0/24 -m state --state NEW -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -s 192.168.0.0/24 -m state --state NEW -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -s 192.168.0.0/24 -m state --state NEW -p udp --dport 53 -j ACCEPT



nat

iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-dest 192.168.1.10
iptables -t nat -A POSTROUTING -o eth0 -j SNAT -to--source 192.168.0.10


=====================================================================

gpg

yum install gpg

gpg --gen-key
(1) RSA and RSA (default)
What keysize do you want? (2048)
Key is valid for? (0) 0
Is this correct? (y/N) Y
Real name: REDHAT
Email address: root@example.com
Comment: fdsa
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
   ┌─────────────────────────────────────────────────────┐
           │ Enter passphrase                                    │
           │                                                     │
           │                                                     │
           │ Passphrase ******__________________________________ │
           │                                                     │
           │       <OK>                             <Cancel>     │
           └─────────────────────────────────────────────────────┘


    ┌────────────────────────────────────────────────────────────────────┐
    │ Warning: You have entered an insecure passphrase.   │
    │ A passphrase should be at least 8 characters long.   │
    │                                                                    │
    │ <Take this one anyway>                      <Enter new passphrase> │
    └────────────────────────────────────────────────────────────────────┘


           ┌─────────────────────────────────────────────────────┐
           │ Please re-enter this passphrase                     │
           │                                                     │
           │ Passphrase ________________________________________ │
           │                                                     │
           │       <OK>                             <Cancel>     │
           └─────────────────────────────────────────────────────┘

在终端中输入字符即可生成2048位的加密

gpg: key 50E73CAC marked as ultimately trusted

gpg -a -o ~/pub.key --export 50E73CAC
gpg --import pub.key
gpg --encrypt --armor --recipient encrypt.txt

cat encrypt.txt.asc


解密

gpg --decrypt encrypt.txt.sec
input passwd


=====================================================================

visudo
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool 创建别名

kft  desktop188.example.com=/sbin/ifconfig,fdisk
lee  desktop188.example.com=NETWORKING 调用别名

=====================================================================


nmap
tcpddump
hexdump -C
wireshark

=====================================================================


bond 创建bond

vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="none"
ONBOOT="yes"
MASTER="bond0"
SLAVE="yes"
USERCTL="no"


vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
BOOTPROTO="none"
ONBOOT="yes"
MASTER="bond0"
SLAVE="yes"
USERCTL="no"

vim /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
NOBOOT=yes
IPADDR=192.168.0.11
PREFIX=24
USERCTL=yes
BONDING_OPTS=mode=0 miimon=50    mode 0 1 3
DNS1=192.168.0.254
GATEWAY=192.168.0.254

vim /etc/modprobe.d/bonding.conf
alias bond0 bonding

vim /etc/rc.d/rc.local
ifenslave bond0 eth0 eth1




route
ip route add 192.168.1.0/24 via 192.168.0.11 添加路由表


=====================================================================

rsyslog sync
syslog server

1.
vim /etc/rsyslog.conf

modify
$ModLoad imudp.so 添加支持同步模块
$UDPServerRun 514 添加监听端口

/etc/init.d/rsyslog restart



2.
vim /etc/rsyslog.conf
*.*                                                     @192.168.0.188 指向log同步服务器的ip
/etc/init.d/rsyslog restart


附加rhcsa,rhce 测试题

rhcsa测试题

考试说明
yum服务器的位置:ftp://192.168.0.254/pub/rhel6/dvd
gpgkey的位置/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
DNS:192.168.0.254
网关:192.168.0.254
ipaddr:192.168.0.x
虚拟机主机名:serverX.example.com
虚拟机配置
硬盘:6G
内存:1G
虚拟交换分区:512M

rhcsa测试题

1. 缩减/home分区到100M
2. 新建组manager,创建两个用户natasha,harry这两个用户的附加组为manager,创建用户strlt,这个用户不允许登录系统
3. 复制/etc/fstab 到/var/tmp/fstab ,设置 harry 可以读写,natasha 不能做任何操作,其他用
户可读,设置 manager 组为 fstab 所属组
4. 设置crontab,natasha 在 14:23 执行 echo “file_world”
5. 升级kernel,默认不起动新内核,新内核的位置在:“ftp://192.168.0.254/pub/kernel/”
6. 新建用户bob,其uid为700
7. 设置ldap身份验证,dc=example,dc=com TLS证书:ldap://instructor.example.com/pub/example-ca.crt
8. 当ldap用户登录时,自动挂载用户主
9. 设置ntp时间同步,ntp服务器的地址为:192.168.0.254
10. 在系统中查找属于mail组的文件,并把文件备份到/mnt/backup中
11. 新建目录/share,要求/share目录的组位manager,在这个目录下建立的所有文件都属于manager组,要求在这个目录下所有用户都可以自由建立文件。但用户只能删除属于自己的文件。
12. 新建100M分区并把这个分区挂在到/share下
13. 建立文件/share/testfile,要求只有root和natasha用户可写,其他用户没有任何权限。
14. 增加一个512M的swap分区,自动挂载
15. 创建一个VG和LV,VG名称为vgshare,LV名称为lvshare,PE大小为8M,lv中有20个PE,格式化为vfat,开机自动挂在到/mnt/vfat
16. 配置FTP服务器,匿名用户可以上传下载
17. 配置apache服务器,可以访问http://serverX.example.com,页面自定义
18. 配置客户端NIS认证,domain为notexample,NIS服务器为192.168.0.254
19. 配置网络打印机,将打印作业发送到instructor.example.com上名为/printers/printerX(其中X是1-20)的IPP打印队列,你的打印队列名为remote-testX(其中X是你的桌面号),使用text-only printer作为型号


rhce测试题:

考试说明
yum服务器的位置:ftp://192.168.0.254/pub/rhel6/dvd
gpgkey的位置/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
DNS:192.168.0.254
网关:192.168.0.254
ipaddr:192.168.0.x
虚拟机主机名:serverX.example.com
iscsi 服务器: instructor.example.com

rhce测试题
1. SELinux 设置为开机自动 enforcing
2. 启用内核IP转发
3. 禁用student用户使用crontab
4. ftp服务器仅允许example.com域用户匿名登录
5. mail服务器可以接收本机和远程邮件,student用户可以从远程接收邮件,邮件存放到指定目录/var/spool/mail/username
6. 配置mail别名,使发送给admin的邮件发给student
7. 配置apache服务器,下载页面:ftp://instructor.example.com/pub/materials/station.html 到 /var/www/html 作为首页,可以访问http://serverX.example.com
8. 建立apache虚拟主机,下载页面:ftp://instructor.example.com/pub/materials/www.html 到 /www/virtual 作为首页,可以访问http://wwwX.example.com
9. 在/var/www/html 建一个 secret 目录,并启用身份验证,仅允许本地用户访问
10. 下载文件ftp://instructor.example.com/materials/words,查找hr字符串行,并按顺序复制到/root/lines.txt
11. 挂载 ISO 镜像文件到/mnt/img,启动时自动挂载 ftp://instructor.example.com/pub/materials/boot.iso
12. 编写一个脚本 test.sh,当执行命令“sh test.sh cat”执行脚本时,输出 dog
   执行”sh test.sh dog”执行脚本时 输出 cat
   执行“sh test.sh 空格或其他字符“执行脚本时,屏幕输出错误写符串。
13. 开机后查看/proc/cmdline,其中包含max_loop=16
14. 禁止只允许 192.168.0.0/24 网段用户访问 ssh 服务
15. 配置iscsi 目标:iqn.2010-09.com.example:rdisks.serverX, 永久挂载到/mnt/data,下载文件到/mnt/data 权限为0644,ftp://instructor.example.com/materials/iscsi.txt
16. nfs共享/common, 仅允许当前example.com域用户访问
17. Samba 共享/common,工作组名 STAFF,要求 browseable=yes ,harry用户可以读取密码为harry