学习笔记6-14

sd硬盘最多划分61个逻辑分区
sisc 最多划分11个逻辑分区

ctrl+l 清屏
ctrl+c 中断

基本命令
ls -l install.log
-:rw-r--r-- :1 :root :root :39410 : 2013-05-21: install.log
文件类型:权限:硬链接数:拥有者:所属组:文件大小:最后一次修改时间:文件名
- 普通文件
d 目录文件
c 字符文件
b 块设备文件
l 软链接文件(符号)
p 管道文件
s 套接子文件

ls -l 长格式 -a 所有文件  -A 所有文件除了.和.. F 显示文件类型
. 当前目录
.. 上层目录
-d 显示目录信息 -h 最大单位显示  -t 安时间排序
-r 反向 -R 递归

1.ls --help
2.info ls
3.type ls
 alias la='ls -la'
 unalias la
4.man ls
一  用户命令
二  系统调用
三  库调用
四  特殊文件
五  配置文件
六  游戏
七  杂项(man)
八  系统命令
九  内核参考

makewhatis 维护man后台
man -f passwd  查询命令在那些章节有相应说明
man -k passwd  模糊查询

cd  cd / .. ../.. . ~  -返回上次工作目录
pwd 查询位置

/下目录作用
/bin  /usr/bin /usr/local/bin   普通用户可执行目录
/sbin /usr/sbin /usr/local/sbin 系统可执行目录
/etc/    配置文件目录
/usr/    应用程序目录
/var/    服务器数据目录(经常变化的文件,如日志文件,用户邮箱文件),建议独

立分区
/lib /usr/lib /usr/local/lib 库文件目录(系统模块)
/dev/    块设备目录和字符设备
/boot    引导程序目录(内核,启动文件,引导程序) 建立独立分区
/root    管理员家目录
/home    普通用户家目录 建立独立分区
/proc    内存信息目录(内存信息和进程信息) 伪文件系统
/sys    内存信息目录(内存信息和进程信息) 伪文件系统
/tmp    临时文件目录
/opt    第三方软件目录
/mnt    临时挂在点
/srv    服务器数据目录。。。。。。。。。。。
/media    媒体目录
/misc    autofs
/net    autofs
/tftpboot    tftp服务使用
/selinux selinux使用
/lost+found  用于文件系统恢复

查看文件内容
1.head 显示文件从头部开始10行
head -n 30 install.log
2.tail 显示文件从底部开始10行
tail -n 20 install.log
tail -f /var/log/messages  动态显示文件内容
3.more 显示全部文件 百分比显示
more install.log
4.less 显示全部文件可以上下翻页
less install.log
5.cat 查看文件内容 一次显示完毕
cat -n install.log 显示文件内容 带 行号包括空行
cat -b install.log 显示文件内容 带 行号不带空行

cat -n install.log | less  查看文件内容带行号显示后 再用less翻页查看
| 管道符号
前一个命令输出作为后一个命令输入

创建文件
touch
touch aa.txt
touch cc.txt tt.txt
touch abc{1..10}.txt
touch {a,b,c}{1..3}.txt

创建目录
mkdir
mkdir tt
mkdir test1 test2
mkdir abc{1..10}
mkdir {a..c}{1..10}.txt
mkdir -p dir/aa
mkdir -pv dir/aa

拷贝copy
cp /root/install.log /tmp/
cp /root/install.log /tmp/install 拷贝的同时重命名
cp -r /tmp/dir/ /

剪切move
mv /root/xx.txt /tmp/
mv /root/xx.txt /tmp/haha.txt
mv xx.txt xx.txt.bak
mv /tmp/tt /

删除
rmdir 只能删除空目录
rm
rm tt.txt
rm -f install.log
rm -rf abc9
rm -rf *.txt
rm -rf abc*
rm -rf /dir/

********************************************************************************

练习:
1.建立以下目录结构(验证?)
   /aa
   /  \
      ba/  bb/
     /  \   \
    ca/  cb/ cc/

mkdir -p /aa/ba/c{a,b} /aa/bb/cc
tree /aa/
tree -L 2 /
ls -R /aa  显示目录结构

2.进入ba目录 查询自己所在路径?
pwd 显示当前工作目录

3.由ba进入ca目录有几种写法?分别是什么?
cd ca/
cd /aa/ba/ca/

4.拷贝/etc/man.config到ca目录
cp /etc/man.config /aa/ba/ca/

5.移动ca目录下的man.config /cc目录并且改名为test.txt
分两种写法操作
mv /aa/ba/ca/man.config /aa/bb/cc/test.txt
mv ca/man.config ../../aa/bb/cc/test.txt

6.两次拷贝同一个文件到同一个不出现覆盖提示?
unalias cp /root/install.log /
\cp install.log /   不提示 强制覆盖文件

********************************************************************************

vim 文本编辑器 vi

命令模式进入输入模式
a 当前字符后输入
A 当前行行尾输入
i 当前字符前输入
I 当前行行首输入
o 当前行下一行输入
O 当前行上一行输入
s 删除当前字符后输入
S 删除当前行后输入

home键位行首  end行尾

命令模式
u 撤销一步操作
ctrl + r  重做

yy 复制一行
50yy 复制50行
dd 剪切一行  dd删除
50dd 剪切50行

p 粘贴

w 下一个单词的首字符
dw 删除/剪切一个单词 yw

^ 行首  d^ y^
$ 行尾  d$ y$

G 尾行
gg 首行
750G 定位到750
dgg 删除当前行到首行  
dG 删除当前行到尾行

末行模式
:w :q :wq
:w! :q! :wq!
:e /root/aa.txt           打开/读入
:2,3w /root/newfile.txt 2到3行另存为新文件
:r /root/file.txt  在当前文件追加读入
:e! 重新读入当前文件

:set nu 显示行号
:set nonu 去掉行号
:set autoindent 自动缩进
:set noautoindent 去掉自动缩进

查找
/ 从上往下
? 从下往上
n N 上下查找关键词

替换
:%s/ab/OO/gc  %所有行 g全局  s替换 c交互式替换
2,5s/ab/OO/gc

:%s/^\t//  替换文件中所有行首制表符
:%s/\t//  替换文件中每行第一个指标符
:%s/ //g  去掉所有空格
:%s/^#//g  删掉行首#

:g/^$/d 删除空行
:g/^\s*$/d 删除所有类型空行

:X 加密 解密

vim配置文件 /etc/vimrc

vim教程
/usr/share/vim/vim70/tutor/tutor.zh.euc

gedit /usr/share/vim/vim70/tutor/tutor.zh.euc
文件--->另存---->字符集----->保存----->替换
vimtutor
***********************************************************
字符编码转换

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

多文件操作
vim aa.txt cc.txt tt.txt
:args  next prev first last

文件间切换 Ctrl+6  下一个文件
:bn          下一个文件
:bp          上一个文件
对于用(v)split在多个窗格中打开的文件,这种方法只会在当前窗格中切换不同的文

件。

vimdiff aa.txt cc.txt tt.txt 比较文件不同
ctrl+w+w 切换编辑文档

vim -O  aa.txt tt.txt cc.txt 不带颜色多屏幕显示 纵屏
vim -o aa.txt tt.txt cc.txt  横屏显示

shift+k 显示文档里边 选定词语 显示 命令帮助

可视化模式v
y 复制 d 删除 p 粘贴

可视化块模式 ctrl+v
方向选择编辑区域----> shift+i -----> 输入字符 -->ESC(两次)修改成功

用户管理
uid 0        root        gid 0 root
uid 1-499 system     gid 1-499  system group
uid 500-60000 user     gid 500-60000  group

添加用户useradd
useradd abc1

保存用户信息的文件:/etc/passwd
robin:x:500:500:ptuser:/home/robin:/bin/bash
用户名:密码占位符号:uid:gid:描述:家目录:shell

useradd -u 1000 -g 500 -c hello -d /mnt/abc2 -s /bin/bash abc2

添加组groupadd
groupadd uplooking

保存组信息的文件 /etc/group
uplooking:x:502:
组名:组密码占位符号:gid:用户名
groupadd -g 2000 upup

设置密码
1.root通过passwd robin
2.robin执行passwd修改自己密码

密码保存文件:/etc/shadow
robin:$1$Bj0Exbfx$e24mczi0jmsiDR:15847:2:10:3:2::

第一列:用户名
第二列:密码(md5)
第三列:密码最后一次修改时间(天)
第四列:密码最小时间
第五列:密码最大时间(密码有效期)(天)
第六列:密码过期前警告时间
第七列:密码过期后帐号过期时间
第八列:帐号有效期
第九列:保留列

********************************************************************************

练习:
1.添加组kkk gid为1500

groupadd -g 1500 kkk

2.添加用户 zorro uid 1500 属于kkk组 描述:hello 家目录/mnt shell:bash

useradd -u 1500 -g kkk -c hello -d /mnt/zorro -s /bin/bash  zorro

3.通过管理员设置该用户密码为123

终端登录zorro 设置自己密码为123.com

********************************************************************************

修改用户信息
usermod
usermod -u 用户uid
usermod -g 用户gid
usermod -c 用户描述
usermod -d 用户家目录
usermod -s 用户shell

usermod -l abc2abc abc2 更改用户名
usermod -L robin 锁定帐号
usermod -U robin 解锁帐号
usermod -f 密码过期后帐号过期时间
usermod -e 帐号有效期

修改组信息
groupmod -g 2500 uplooking
groupmod -n upup uplooking

修改密码及信息
passwd -n(最小时间) -x 最大时间 -w 警告时间 -i 密码过期后帐号过期时间

passwd -l robin 锁定密码
passwd -u robin 解锁密码
passwd -S robin  查看密码状态

添加用户tom和jerry 分别设置两个用户密码为123
锁定tom帐号 锁定jerry密码
终端登录测试 返回值是否一致? 一样的
查看shedow文件 两个用户有什么区别? 锁定帐户是 一个! 锁定密码是两个 !

删除用户:
userdel -r abc2
删除组
groupdel upup

附加组
groupadd yw
groupadd kf
useradd -G kf,yw wg   覆盖附加组信息
useradd -a -G kf,yw wg 追加附加组信息

groupadd boss
gpasswd boss

手动添加帐号
1.groupadd zu
1).vim /etc/group
zu:x:2000:

2.useradd -g zu zhb
1).vim /etc/passwd
zhb:x:2000:2000::/home/zhb:/bin/bash
2).mkdir /home/zhb
3).cp /etc/skel/.bash* /home/zhb/

3.passwd zhb
1).vim /etc/shadow
zhb::15848:0:99999:7:::
2).grub-md5-crypt产生密码 将密码复制到第二列

终端登录测试 创建文件?

多用户导入
1.导入文件(user.txt)内的用户和系统的passwd文件用户信息不能冲突
2.导入文件(user.txt)内用户不能冲突

cat user.txt
user1:x:3000:3000:ptuser:/home/user1:/bin/bash
user2:x:3001:3001:ptuser:/home/user2:/bin/bash

newusers < user.txt

cat passwd.txt
user1:123
user2:123

chpasswd < passwd.txt

用户配置文件
/etc/default/useradd
HOME=/home
SHELL=/bin/bash
SKEL=/etc/skel

/etc/login.defs(限制uid数量 密码限制)

root 密码丢失
*******************************
e 2 e 进入编辑模式
输入 1 或者 single
按 b 进入单用户模式
输入 passwd 修改密码
reboot 重启成功

家目录下环境配置文件
env 查询环境变量
set 查询所有变量
环境变量可以被子进程继承 export b=2
自定义变量不能被子进程继承 a=1  

环境配置文件(每个用户家目录下都存在)
.bash_history 保存用户的历史命令,当用户退出时保存到文件
.bash_logout 保存用户退出时执行的命令
.bashrc         保存用户别名 (开启新的终端就可以读取该文件)
.bash_profile 保存用户搜索命令的位置

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

su - 登录级别切换
su   shell 级别切换

全局环境配置文件
/etc/bashrc
/etc/profile

加载顺序
/etc/profile
.bash_profile
.bashrc
/etc/bashrc

定义变量文件顺序
/etc/profile1
/etc/profile2
.bash_profile1
.bashrc1
/etc/bashrc1
/etc/bashrc2
.bashrc2
.bash_profile2

权限(基本权限和高级权限)
ls -l install.log
-rw-r--r-- 1 robin upup 39751 05-23 11:15 aa.txt
      rwx  |  rwx  | rwx
      robin   upup    other
uid=0----->uid=robin----->group=upup----->other
      磁盘配额       对比权限
对于文件     r--------cat head tail....
       w--------vim,gedit,vi,> >>
       x--------执行./ 绝对路径

对于目录    r--------ls     r-x查看目录下文件信息
       w--------mkdir touhc rm    rwx
       x--------cd

能否删除文件决定于该用户拥有该文件所在文件夹的权限 r-x
-w- 权限可以查看文件夹下边文件 但是不能查看详细信息
-wx 只限于删除已知文件名的文件

user  u
group g
other o

chmod u+r file/dir
chmod u+r,g+w file/dir
chmod ug-rw file/dir
chmod ugo+rwx file/dir
chmod a+rwx file/dir

chmod u=r file/dir
chmod u=r,g=w file/dir
chmod uo=rw file/dir
chmod ugo=rwx file/dir
chmod a=rwx file/dir

/            rwxr-xr-x  755
/etc/            rwxr-xr-x  755
/usr/            rwxr-xr-x  755
/var/            rwxr-xr-x  755
/tmp            rwxrwxrwt  1777
/etc/shadow        r--------  400  
/etc/passwd        rw-r--r--  644
/home/robin        rwx------  700  
/root            rwxr-x---  750
root创建文件默认权限    rw-r--r--  644
root创建目录默认权限    rwxr-xr-x  755
普通用户创建文件默认权限    rw-rw-r--  664
普通用户创建目录默认权限    rwxrwxr-x  775

r------4 w------2 x-----1
777
rwxr----x 741  123--x-w--wx
r-x-wx-w- 532  456r--r-xrw-

默认权限计算方法
666        023
110110110    000010011
111101100    111101100
110100100
644

umask权限对照表
=============================================
umask值        目录权限    普通文件
 0           7               6
 1           6           6
 2           5           4
 3           4           4
 4           3           2
 5           2           2
 6           1           0
 7           0           0
=============================================
chmod -R 777 /test

修改拥有者所属组
chown robin tt.txt
chgrp uplooking tt.txt
chown robin.uplooking tt.txt
chown .uplooking tt.txt
.=:
chown -R robin.uplooking  dir/

练习:
创建用户tom和jerry
1.在/tmp目录下创建文件tt.txt
要求:
tt.txt权限设置为651 在改为rwxr----x
chmod 651 /tmp/tt.txt
chmod u=rwx,g=r,o=x /tmp/tt.txt

设置tt.txt文件拥有这tom所属组jerry
chown tom.jerry /tmp/tt.txt

2.根据以下要求设置拥有者和权限
在/tmp目录下创建目录test/,在test目录下创建文件aa.txt
tom可以读写文件aa.txt 不能删除
jerry 不可以读写文件aa.txt 可以删除

mkdir /tmp/test/
touch /tmp/test/aa.txt

/tmp/test/     jerry  root   rwxr-xr-x
/tmp/test/aa.txt tom    root   rw-r-----

=============================================
=    配置视频服务器            =
=    1.将ip设置到192.168.1.0/24网段    =
=    2.showmount -e 192.168.1.201    =
=    3.mount 192.168.1.201:/source /mnt/    =
=    cd /mnt/                =
=    4.cp uplayer.client.tar.bz2 /root/    =
=    5.cd /root                =
=    tar -jxvf uplayer.client.tar.bz2        =
=    cd uplayer/            =
=    ./install.sh            =
=============================================

主组附加组
robin  robin  robin,uplooking
/tmp/test   rwxrwx---  root uplooking
robin能不能进去/tmp/test? 为什么?
可以 因为附加组有uplooking
进入后创建文件aa.txt 该文件 拥有者 所属组??
robin  robin
如果该用户想创建属于uplooking组的文件 怎么做?
sg uplooking
robin  uplooking  robin,uplooking

高级权限

1.suid
必须作用于二进制可执行文件
chmod u+s  file
作用:任何用户在执行拥有suid权限的命令时,都以该命令拥有者的身份执行

********************************************************************************
实验:
在不改变/etc/shadow权限的前提下,使普通用户robin可以使用cat查看/etc/shadow文件

内容
which cat
chmod u+s /bin/cat
给相应的权限 添加 u+s 的权限
********************************************************************************

2.sgid
必须作用于目录
chmod g+s dir
作用:任何用户在拥有sgid的目录下创建的文件,都要继承该目录的组

********************************************************************************
实验:
1.在/tmp/创建下test目录 权限设定为 rwxrwxrwx root upup
 使用robin用户进入该目录并且创建文件aa.txt
 aa.txt 所属组?

-rw-rw-r-- 1 robin robin     0 05-24 10:59 aa.txt

2.在/tmp/test目录上添加sgid权限
 使用robin用户进入该目录并且创建文件cc.txt
 cc.txt 所属组?

-rw-rw-r-- 1 robin upup      0 05-24 10:59 cc.txt

3.修改/tmp/test目录的所属组为redhat
 使用robin用户进入该目录并且创建文件tt.txt
 tt.txt 所属组?  aa.txt cc.txt 所属组?
redhat
-rw-rw-r-- 1 robin redhat    0 05-24 11:00 tt.txt

4.在/tmp/test目录下创建目录abc
 abc 权限和所属于组 是什么?
redhat redhat
drwxrwsr-x 2 robin redhat 4096 05-24 11:01 abc

********************************************************************************

练习:
umask 0027
公共组 uplooking
就业部 组 job  用户 tom jerry
资讯部 组 sal  用户 zorro  shrek

/stu

资讯部-----> stu.txt -----> /stu
就业部-----> 查看stu.txt
资讯部-----> 查看stu.txt

uplooking job sal

useradd -g job -G uplooking tom
useradd -g job -G uplooking jerry
useradd -g sal -G uplooking zorro
useradd -g sal -G uplooking shrek

chmod 775 stu/
chown .uplooking stu/

drwxrwxr-x 2 root uplooking 4096 05-24 11:49 stu/

aa.txt tom job
tt.txt tom uplooking rw-r-----

********************************************************************************

3.sticky(t 冒险位 粘贴位)  /tmp 具有此权限
必须作用于目录
chmod o+t dir
作用:任何用户在拥有t权限的目录下创建的文件,都属于该用户自己,
其他人无权删除 (root,目录拥有者除外)

********************************************************************************

实验:
在/目录下创建/test目录 拥有者root 所属组root 权限777
用户jack rose
1.jack在/test目录创建aa.txt
 rose能不能删除aa.txt?
可以删除
2.在/test目录上添加t权限
 jack在/test目录下创建jack.txt
 rose能不能删除jack.txt?
无法删除
 rose在/test目录下创建rose.txt
 jack能不能删除rose.txt?
无法删除
3.root能不能删除/test目录下的文件?
可以删除
4.添加用户robin
 robin能不能删除/test目录下的文件?
无法删除
 chown robin /test
 robin能不能删除/test目录下的文件?
可以删除

********************************************************************************

高级权限

suid-------4
sgid-------2
sticky-----1
7
1777
2777
4777
3777

[root@localhost ~]# ll aa.txt
-rwSrwSrwT 1 root root 0 05-24 12:16 aa.txt

[root@localhost ~]# ll aa.txt
-rwsrwsrwt 1 root root 0 05-24 12:16 aa.txt

高级权限显示为大写 源文件没有执行权限
高级权限显示为小写 源文件有执行权限

特殊属性 facl

********************************************************************************

进程管理
静态查询
ps -ef
ps aux
动态查询
top

cat /proc/cpuinfo
cat cpuinfo | grep pae
cat cpuinfo | grep vmx INTER支持全虚拟
cat cpuinfo | grep svm AMD
cat cpuinfo | grep lm  是否支持64位系统

kill -9  强制结束
kill -15 正常结束
pkill httpd
killall httpd
xkill

ctrl+alt+backspace

前后台切换
xclock -update 1
xclock -update 1 &
nohup xclock -update 1 & 关闭父进程 子进程继续

xclock -update 1
ctrl+z
jobs 查询编号
bg 编号
fg 编号

kill %编号 杀掉后台进程

优先级调整(-20~~19)
nice -n -20 xclock -update 1
renice 15 -p 5316------>(pid)

PROCESS STATE CODES
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
<    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 -n /etc/passwd |head -20 |tail -1 只显示文件第20行

cat -n /etc/passwd | head -20 |tail -1 | tac  上下反序

cat -n /etc/passwd | head -20 |tail -1 | rev  左右反序

sort 按首字符排序 -n 按整个数字排序 -r反向 -u去掉重复值
uniq 去连续重复值 -d 显示重复行 -u 显示不重复行 -c 统计重复次数

grep 过滤字符

grep root /etc/passwd
grep ^root /etc/passwd
grep halt$ /etc/passwd
grep -v ^root /etc/passwd

cut 截取字符

截取行

cut -d: -f1 /etc/passwd     截取 以:分割行 第一列
cut -d: -f1,3,5 /etc/passwd
cut -d: -f1-3,5 /etc/passwd     截取 以:分割行 第1-3列 5列

截取字符

cut -c 1 /etc/passwd | head -5
cut -c 1,2,4 /etc/passwd | head -5 截取 1,2,4 个字符
cut -c 1-4 /etc/passwd | head -5

wc 统计字符

wc
wc -l /etc/passwd  l 行数
wc -w aa.txt  w 单词数
wc -c aa.txt  c 字符数

一个汉字 3个字符
练习题:

1.统计你系统中有多少个用户可以登录(/bin/bash)

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

2.获取网卡ip地址 192.168.1.254
1).ifconfig eth0 | awk -F':| +' '/Bcast/{print $4}'
2).ifconfig eth0 | grep 'inet addr'| cut -d: -f2 | cut -d' ' -f 1
3).ifconfig eth0 |head -2 |tail -1 |cut  -d: -f2 |cut -d' ' -f1
4).ifconfig eth0 |grep Bcast |cut  -d: -f2 |cut -d' ' -f1

3.[root@localhost ~]# stat aa.txt
 File: “aa.txt”
 Size: 4               Blocks: 8          IO Block:
4096   一般文件
Device: 802h/2050d      Inode: 554909      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   G
id: (    0/    root)
Access: 2013-05-27 10:16:46.000000000 +0800
Modify: 2013-05-27 10:16:46.000000000 +0800
Change: 2013-05-27 10:16:46.000000000 +0800

过滤显示时间

10:16:46
10:16:46
10:16:46

stat 显示文件属性

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

第二节 shell基础

history
!1015     执行第1015条命令
!!    执行上一次命令
!    cat 在执行一次最后一条以cat开始的命令
!$    引用上一个命令最后一个参数
alt + .    引用上一个命令最后一个参数

重新定向符和 文件描述符 { 0 1 2 > >>  }

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

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

&> /etc/null 标准错误和标准正确同时输出

2&>1 标准错误输出定向到标准正确输出位置

shell 脚本语法  批量创建用户
================================
#!/bin/bash
#add user script
for i in {1..10}
do
#显示添加用户
   echo "add user abc$i"
#执行添加用户
   useradd abc$i
#等待1秒显示  
   sleep 1  
#显示用户创建完毕
   echo "add user finish"
   echo "********"
#设置用户密码
   echo "set abc$i password now"
#设置密码,去掉命令返回值
   echo 123 | passwd --stdin abc$i &> /dev/null
   sleep 1
   echo "passwd finish !!!"
done
================
if脚本   显示存在文件
================
#!/bin/bash
#文件是否存在!
if [ -f /tmp/aa.txt ]
then
       echo "文件存在!显示信息!!!"
       sleep 1
       ls -l /tmp/aa.txt
else
       echo "文件不存在!创建文件!"
       sleep 1
       touch /tmp/aa.txt
fi
================
null 黑洞文件
zero 数据发生器

du -s    显示大小
du -sh    只显示总大小

压缩打包安装软件

winrar 和 zip
gzip bzip2

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

gzip data 压缩文件
gunzip data 解压文件

hexdump aa.txt  二进制显示文件

gzip data    压缩文件
gunzip data.gz    解压文件

bzip2 data    压缩文件
bunzip2 data.bz2解压文件

打包
tar -cvf boot.tar /boot/   c 创建 v显示过程 f file
tar -tvf boot.tar         t显示包内容
tar -rvf boot.tar install.log    r追加打包
tar -xvf boot.tar            x解包

tar -cvf /tmp/boot.tar /boot
tar -xvf boot.tar -C /tmp

tar -zcvf /tmp/boot.tar.gz /boot/
    存放位置,压缩名   压缩目标
tar -ztvf boot.tar.gz
tar -zxvf boot.tar.gz

tar -jcvf boot.tar.bz2 /boot/
tar -jtvf boot.tar.bz2
tar -jxvf boot.tar.bz2

boot.tgz boot.tbz2

软件安装
mount
mount -t iso9660 /dev/cdrom /mnt/cdrom/
umount /dev/cdrom
umount /mnt/cdrom
umount -l /dev/cdrom 强制卸载!
mount /var/ftp/ULE05-21/rhel5u8.iso /mnt/cdrom/ -o loop 挂在文件

制作镜像
*****************************************************************
cat /dev/cdrom >> rhel5-8.iso
dd if=/dev/cdrom of=/opt/rhel5-8.iso
*****************************************************************
安装软件包
rpm -ivh httpd-*.rpm i install v过程 h 百分比
rpm -q httpd     查询信息 q检索信息
rpm -qi httpd     查询安装包信息 i信息
rpm -ql httpd | cut -d\/ -f 2 |uniq 转议正常显示/ 然后去重复
rpm -qd httpd  
rpm -qc httpd
rpm -qa all
rpm -qa | grep lib
rpm -qf /etc/httpd/conf/httpd.conf
rpm -qf `which mount` 查询命令 那个软件报安装的
rpm -e httpd 卸载

未安装包
rpm -qpi zip-2.31-2.el5.i386.rpm 查询未安装包的信息
rpm -qpl zip-2.31-2.el5.i386.rpm 查询包安装后位置
强制安装
rpm -ivh httpd-2.2.3-63.el5.i386.rpm --force
不检测依赖关系
rpm -ivh apr-devel-1.2.7-11.el5_6.5.i386.rpm --nodeps
导入key安装
rpm --import RPM-GPG-KEY-redhat-release

yum库
**************************************************************
光盘作为yum源
1.mount /var/ftp/ULE05-21/rhel5u8.iso /mnt/cdrom -o loop
2.vim /etc/yum.conf
gpgcheck=0
3.cd /etc/yum.repos.d/
touch yum.repo
vim yum.repo

[rhel-server]
name=server
baseurl=file:///mnt/cdrom/Server
enable=1
gpgcheck=0
******************************************************
4.测试
yum clean all
yum list
yum install httpd-devel  安装
yum remove httpd-devel  卸载
yum reinstall httpd-devel  重新安装

ls /mnt/cdrom/Server/ | grep -v rpm$ 过滤ls显示后 包含rpm$的文件并显示出来

2.建库
rpm -ivh createrepo-0.4.11-3.el5.noarch.rpm
所有软件包拷贝/yum
createrepo /yum

yum库配置文件 指向/yum
vim /etc/yum.repos.d/yum.repo
[rhel-server]
name=server
baseurl=file:///yum
enabled=1
gpgcheck=0

mv `ls |grep .rpm` /opt/server/ 过滤当前文件件中含有.rpm的文件 然后移动到/opt/server

[root@localhost ~]# lftp 192.168.1.254
lftp 192.168.1.254:~> ls              
drwxrwxrwx    6 0        0            4096 May 28 02:53 ULE05-21
drwxr-xr-x    2 0        0            4096 Dec 05  2011 pub
lftp 192.168.1.254:/> cd ULE05-21/
lftp 192.168.1.254:/ULE05-21> get biji
lftp 192.168.1.254:/ULE05-21> mirror software/
lftp 192.168.1.254:/ULE05-21>

源码包安装
tar -jxvf lftp-3.5.10.tar.bz2 -C /usr/local/src/
cd /usr/local/src/lftp-3.5.10
1.  ./configure --prefix=/usr/local/lftp
2.   make
3.   make install

修改命令搜索路径

vim /etc/bashrc
添加变量,直接在终端调用
PATH=/usr/local/lftp/bin:$PATH
添加变量位置
export PATH
刷新变量
. /etc/bashrc
应用新命令

lftp-3.5.1-2.fc6.src.rpm安装
安装 rpm -ivh rpm-build-4.4.2.3-27.el5.i386.rpm
rpm -q rpm-build
rpm -ivh lftp-3.5.1-2.fc6.src.rpm 安装半源码包
cd /usr/src/redhat/SPECS/    切换到目录
rpmbuild -bb lftp.spec         建立rpm包
cd /usr/src/redhat/RPMS/i386/    切换rpm包目录下
rpm -ivh lftp-3.5.1-2.i386.rpm    执行rpm包安装

安装rpmbuild包
rpm -ivh rpm-build-4.4.2.3-27.el5.i386.rpm
rpm -q rpm-build
安装半源码包
rpm -ivh lftp-3.5.1-2.fc6.src.rpm
切换到目录
cd /usr/src/redhat/SPECS/
建立rpm包
rpmbuild -bb lftp.spec
切换rpm包目录下      
cd /usr/src/redhat/RPMS/i386/
执行rpm包安装  
rpm -ivh lftp-3.5.1-2.i386.rpm
运行lftp

磁盘管理
df -Th
fdisk -l
硬盘最多主分区 4
硬盘最多扩展分区 1  逻辑结构(逻辑分区)

分主分区
fdisk /dev/sda
Command (m for help): m
d   delete a partition            删除分区
l   list known partition types        显示分区类型列表
p   print the partition table        打印分区表
q   quit without saving changes        不保存设置退出
t   change a partition's system id    设置分区系统id类型
n   add a new partition            创建新的分区
w   write table to disk and exit    保存分区表

分区

Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
    p
Selected partition 4
First cylinder (2691-3916, default 2691): ---- 回车
Last cylinder or +size or +sizeM or +sizeK (2691-3916, default 3916): +1000M   ----- 回车
Command (m for help): w

刷新分区表
partprobe /dev/sda
格式化分区
mkfs.ext3 /dev/sda4
挂在分区
mount -t ext3 /dev/sda4 /opt/

删除分区
首先卸载挂在分区
1.umount /dev/sda4
进入编辑模式
2.fdisk /dev/sda
删除分区
Command (m for help): d
所删除分区编号
Partition number (1-4): 4
保存退出
Command (m for help): w
刷新分区表
partprobe /dev/sda  ========RHEL6===> partx -a /dev/sda 执行2此刷新分区表

扩展分区和逻辑分区
1.fdisk /dev/sda
Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
e
Selected partition 4
First cylinder (2691-3916, default 2691):----回车
Using default value 2691
Last cylinder or +size or +sizeM or +sizeK (2691-3916, default 3916):-------回车
Using default value 3916

Command (m for help): w

partprobe /dev/sda

fdisk /dev/sda
Command (m for help): n
Command (m for help): p
Command (m for help): w

partprobe /dev/sda
mkfs.ext3 /dev/sda5
*********************************************************************
练习:
划分两个逻辑分区 200M
/dev/sda5 ---------> /mnt  sda5.txt
/dev/sda6 ---------> /mnt  能不能挂? 看看/mnt/sda5.txt? 怎么才能看到?

/dev/sda5 -----> /mnt
/dev/sda5 ------> /opt? 能不能看到sda5.txt
*********************************************************************
解决u盘只读问题
mount -o remount,rw /dev/sdb1
umount /dev/sdb1
mount -o rw /dev/sdb1 /mnt

查询卷标

blkid -s LABEL 查询所有卷标
e2label /dev/sda1  查询
e2label /dev/sda5 disk5  设置卷标

mount /dev/sda5 /mnt

卷标使用实验:
1.分4个分区 /dev/sda5 /dev/sda6 /dev/sda7 /dev/sda8
2.mount /dev/sda7 /mnt
 touch /mnt/sda7.txt
 umount /dev/sda7
3.删除sda5分区 partprobe /dev/sda5
4.fdisk -l  (sda5 sda6 sda7)
5.mount /dev/sda7 /mnt
 查看/mnt/sda7.txt 文件是否存在? 不存在
 umount /mnt
6.mount LABLE=disk7 /mnt
 查看/mnt/sda7.txt 文件是否存在? 存在

磁盘满

硬盘满(1.空间100%  2.inode号%100)

pardted 超过2TB硬盘用 1024进制,厂家1000进制
Kb Bb Gb Tb Pb Eb

磁盘配额

acl.特殊属性
chattr +i aa.txt
lsattr aa.txt

i 不能删除,修改内容,移动,追加,重命名,修改属性... 可以读,cp
 目录不能删除或者创建新的文件
a  不能删除,修改内容,移动,重命名,修改属性... 可以读,cp 追加
 目录不能删除  可以创建新的文件
******************************************************************
facl(文件访问控制列表)
1.挂在磁盘时打开acl功能 带有 + 说明有facl 访问控制列表
mount -o acl /dev/sda5 /opt/
getfacl aa.txt
setfacl -m u:robin:rw aa.txt    设置用户权限
setfacl -m g:sal:rw aa.txt    设置组权限  
setfacl -m o:rwx aa.txt        设置其他用户权限
setfacl -m m:r            设置umask权限
aa.txt  

删除权限
setfacl -x u:robin aa.txt
彻底删除
setfacl -b aa.txt 删除限制权限 用户和组的权限 other保留

**********************************************************************************
作业:
 1).建立三个普通用户seker,zorro,shrek.用root用户在/root目录中建立一个文件abc.txt
 2).使seker用户既能读又能写abc.txt文件,但不能删除
    使zorro用户只能读取,不能写也不能删这个文件
    使shrek用户只能删除,不能读写这个文件.
以上三个条件同时成立
/root root root rwxr-w---
/root/abc.txt root root rw-r-----

setfacl -m u:seker:rw /root/abc.txtsetfacl -m u:seker:rx /root/
setfacl -m u:zorro:r /root/abc.txt
setfacl -m u:zorro:rx /root/

chmod o=0 /root/abc.txt
setfacl -m u:shrek:0 /root/abc.txt
setfacl -m u:shrek:rwx /root

2.删除除了/分区 /boot分区 swap分区意外 所有分区
创建逻辑分区 创建6逻辑分区 200M

交换分区扩大缩小
扩大
free -m
fdisk /dev/sda
partprobe /dev/sda
mkswap /dev/sda5
swapon /dev/sda5
free -m
swapon -s  查询交换分区信息

缩小
swapoff /dev/sda5

用文件扩大交换分区
dd if=/dev/zero of=/swap bs=200M count=5
mkswap /swap
free
swapon /swap
free
swapon -s

取消/swap
对/swap 格式化ext3 是否能mount?

ext3  1k
4   块越小 效率低 磁盘利用率高
16 快越大 效率高 磁盘利用率小

取消/swap
对/swap 格式化ext3 是否能mount?

文件系统 ext2 ext3 ext4 swap fat32 ntfs nfs cifs gfs
xfs rezirefs
**********************************************************
Reserved 保留
Maximum mount count: 磁盘检测
ext3-----super block 超级块信息
dumpe2fs /dev/sda5
tune2fs -l /dev/sda5 超看磁盘分区信息

tune2fs -c 50 /dev/sda5 最大挂载次数检测设置
tune2fs -C 10 /dev/sda5 更改已经挂载次数
tune2fs -L newdisk /dev/sda5 更改卷标名称
tune2fs -o acl /dev/sda5 自动开启acl列表功能
tune2fs -o ^acl /dev/sda5 关闭自动开启acl列表功能
**********************************************************

bl -1 小数计算参数

符号链接和硬链接
ln /root/ying.txt /root/Desktop/
ln -s /root/ruan.txt /root/Desktop/

区别
1.软链接不能对源文件执行删除或者重命名
  硬链接可以对源文件执行删除或者重命名
2.软链接文件权限永远都是777和源文件权限不同
  硬链接文件和源文件权限永远一致
3.软链接文件的inode号和源文件是不同的
  硬链接文件的inode号和源文件是相同的
4.软链接在创建中必须写绝对路径
  硬链接在创建中可以绝对路径也可以相对路径
5.软链接可以跨文件系统
  硬链接不可以跨文件系统
6.软链接可以对目录做链接
  硬链接不可以对目录作链接

ll显示的是硬件连接数

***************************************************************

磁盘配额(基于磁盘)

1.开启用户磁盘配额支持
mount -o usrquota /dev/sda5 /mnt
2.生成(检测)用户配额文件
quotacheck /mnt/    生成磁盘配额配置文件
3.edquota -u robin    对用户开启磁盘配额
Disk quotas for user robin (uid 504):
Filesystem  blocks  soft  hard  inodes  soft  hard
/dev/sda5   0       0     0     0       0     0
       大小限制            文件个数
4.quotaon /mnt
5.测试 su - robin  到/mnt

组配额
groupadd uplooking
添加用户 tom 和 jerry 属于uplooking
mount -o grpquota /dev/sda6 /opt
quotacheck -g /opt
edquota -g uplooking
设置软限 硬限
quotaon -g /opt

quota -u tom        查看用户配额
quota -g uplooking    查看组配额

测试 tom 和 jerry
配额限制是uplooking共有
还是tom和jerry分别限制

查询已激活配额的用户或者组
repquota -u /dev/sda5
repquota -g /dev/sda6

edquota -p robin zorro 复制用户配额
          old    new
grace time 的设置 edquota -t    -g 组
**********************************************************

自动挂载
1./etc/rc.local(进去系统前最后一个执行脚本)
mount -o acl,grpquota,usrquota,rw,sync /dev/sda5 /mnt/
2./etc/fstab
/dev/sda6  /opt  ext3 defaults,rw,acl      0 0
mount -a 测试
3.autofs(按需mount)不要对系统目录做该服务
/test    /etc/auto.test    --timeout=10 10秒钟自动卸载
分区(/dev/sda7) 格式化
修改主配置文件
1) vim /etc/auto.master
/test   /etc/auto.test  
挂载目录  挂载文件
2) mkdir /test 建立挂载目录
  touch /etc/auto.test 创建配置文件
3) vim /etc/auto.test 编辑配置文件
disk7   -fstype=ext3,rw     :/dev/sda7
(触发名-随意)   文件系统类型及参数   被挂载设备
4)service autofs restart
**********************************************************
测试:
cd /test/disk7
ls /test/disk7
mount
watch -n 1 mount 自动检测mount变化
**********************************************************
计划任务
at
[root@localhost ~]# at 15:55        定制
at> touch /tmp/at.txt      
at> <EOT>
job 1 at 2013-05-29 15:55
[root@localhost ~]# at -l        查询
1       2013-05-29 15:55 a root
[root@localhost ~]# atrm 1           删除

crond 计划任务服务
service crond resatrt

crontab -e  定制计划任务
* * * * *
分 时 日 月 周
分(00-59)
时(00-23)
日(1-31)
月(1-12)
周(0-7) 0和7 代表周日

* * * * * 每分钟执行
10 * * * *  每小时10执行
10 02 * * *  每天的2点10分
10 02 13 * * 每个月的13号2点10分
10 02 13 10 * 每年10月13号2点10分
10 02 13 10 5 每年10月13号如果是周5 2点10分执行
10 02-06 10,15,25 8-10,12 5 每年的8-10或者12月10,15,25号如果是周5那么2点到6点的10

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

计划任务保存位置 /var/spool/cron/
每个用户的计划任务都保存/var/spool/cron/ 以用户名字作为文件名

crontab -e -u robin

crontab -l  查询当前用户所有的计划任务
crontab -r  删除当前用户所有的计划任务

系统计划任务/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

/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.weekly/
/etc/cron.monthly/
/etc/amdin/.....脚本
/etc/cron.deny 拒绝普通用户执行计划任务

anacron 开机后执行为执行的计划任务
**********************************************************

5月29日作业:
1.在当前系统时间5分钟后 将install.log复制/tmp
crontab -l
05 * * * * cp /root/install.log /tmp

2.在当前系统时间的5分钟后 将/boot打包保存到/backup目录
要求:
`date +%m-%d-%H-%M-boot
月-日-时-boot.tar.gz

cat back.sh
#!/bin/bash
tar -zcvf /backup/`date +%m-%d-%H`-boot.tar.gz /boot

10 02 * * * /backup/back.sh

3.把镜像文件实现自动挂载 3种方法实现
1.vim /etc/rc.local
mount -o loop /soft/rhel5u8.iso /2tst

2.vim /etc/fstab
/soft/rhel5u8.iso       /1tst    iso9660 default,loop    0 0

3.vim /etc/auto.master

4.使用autofs触发挂载iso文件 和 yum结合一起使用
vim /etc/auto.master
/iso    /etc/auto.iso
mkdir /iso
touch /etc/auto.iso
cd  -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom 有时需要加上
iso -fstype=iso9660,loop :/soft/rhel5u5.iso

iso -fstype=iso9660,loop :/soft/rhel5u5.iso

auto.master
/yum    /etc/auto.yum

mkdir /yum
touch /etc/auto.yum
cat /etc/auto.yum
iso     -fstype=iso9660,loop :/var/ftp/ULE05-21/rhel5u8.iso

vim /etc/yum.repo.d/5rhel.repo

[rhel-opt-server]
name=server
baseurl=file:///soft/server
enalbe=1
gpgcheck=0

yum clean all
yum list
先做iso的自动
yum库

RAID(磁盘阵列冗余 提高硬盘访问速度)
raid0         raid1         raid5            raid10
条带化写      冗余    带奇偶校验的条带化  raid1+raid0
2块磁盘      2块磁盘       3块磁盘         4块磁盘
500G          500G        500G            500G  
1T          500G        1T               1T  

mdadm -C /dev/md0 -l 5 -n 3 /dev/sda{6,7,8} 物理硬盘sdb1,sdc1,sdd1
mdadm -C /dev/md0 -l 5 -n 3 /dev/sda{6,7,8} x 1 /dev/sda9 备用盘
-C  create  创建 -l level 类型 -n number 硬盘数量  
mdadm -D /dev/md0   查看Raid
mdadm -Ds        扫描查看简洁信息
mdadm -S /dev/md0   停止Raid
mdadm -A /dev/md0 /dev/sda{6,7,8}   停止后再启动

删除
mdadm -S /dev/md0
rm -rf /dev/md0
使用
mkfs.ext3 /dev/md0

模拟损坏
dd if=/dev/zero of=data bs=100M count=3
md5sum data
mdadm /dev/md0 -f /dev/sda6 损坏
mdadm /dev/md0 -r /dev/sda6 卸载
mdadm /dev/md0 -a /dev/sda9 挂载
mdadm /dev/md0 -a /dev/sda9 备用磁盘
mdadm -D /dev/md0

永久保存
touch /etc/mdadm.conf
cat /etc/mdadm.conf
DEVICE /dev/sda6 /dev/sda7 /dev/sda8
ARRAY /dev/md0 level=raid5 num-devices=3 metadata=0.90 UUID=3
302db2d:e60e1cfb:5518ba01:f353f556
(mdadm -Ds >> /etc/mdadm.conf)

/usr/share/doc/mdadm-2.6.9/mdadm.conf-example 配置模板

mdadm -S /dev/md0
mdadm -As /dev/md10 重启测试

创建raid时直接指定备盘
mdadm -C /dev/md0 -l 5 -n 3 /dev/sda{6,7,8} -x 1 /dev/sda9

彻底删除
mdadm -S /dev/md0
rm -rf /dev/md0
mdadm --zero-superblock /dev/sda6
mdadm --zero-superblock /dev/sda7
mdadm --zero-superblock /dev/sda8
mdadm --zero-superblock /dev/sda9

lvm(逻辑卷管理)作用:支持硬盘在线扩容
建立lvm过程

创建物理卷
pvcreate /dev/sda6 /dev/sda7
查看物理卷pvs
显示详细信息pvdisplay

pvscan时提示"/dev/cdrom open failed"的解决方法

1.解决方法
vim /etc/lvm/lvm.conf

filter = [ "a/.*/" ]
注释掉

filter = [ "r|/dev/cdrom|" ]
取消注释即可。

创建卷组
vgcreate vg0 /dev/sda6 /dev/sda7
查看卷组vgs
显示详细信息vgdisplay

创建逻辑卷
lvcreate -L 200M -n /dev/vg0/lv0 vg0
查看逻辑卷lvs
显示详细信息lvdisplay
格式化
mkfs.ext3  /dev/vg0/lv0
挂载
mount /dev/vg0/lv0 /mnt/
查看信息
df -Th

在线扩容
lvextend -L +100M /dev/vg0/lv0
lvs
df -Th
刷新扩展空间
resize2fs /dev/vg0/lv0 300M 刷新到300G

lv缩小
df -Th
umount /dev/vg0/lv0
e2fsck -f /dev/vg0/lv0
resize2fs /dev/vg0/lv0 150M 调整到150M
lvs
lvresize -L 150M /dev/vg0/lv0

实验:
1.创建lv0 大小200M  将lv0格式化化挂载/mnt
在该目录下创建data文件150M 并记录下md5sum值
创建pv
pvcreate /dev/sda6 /dev/sda7 /dev/sda8
创建vg
vgcreate vg0 /dev/sda6 /dev/sda7 /dev/sda8
创建lv
lvcreate -L 200M -n /dev/vg0/lv0 vg0
mkfs.ext3 /dev/vg0/lv0
mount /dev/vg0/lv0 /lvm
2.对lv0进行缩小操作,缩小到140M 可不可以?报错
缩小到160M  可不可以?可以

3.将lv0挂载起来。验证缩小操作是否完成?
 在不卸载lv0的前提下将lv0在线扩容到300M

vg扩大和缩小(卷组硬盘数量)
pvcreate /dev/sda8
vgextend vg0 /dev/sda8

缩小(减少硬盘数量数量)
vgreduce vg0 /dev/sda8

数据移动
前提,使用的设备必须在同一个vg
pvmove /dev/sda6 /dev/sda8  指定sda6存储的数据移动到sda8

pvmove /dev/sda8   不指定设备移动数据

删除lv
umount /dev/vg0/lv0     卸载设备
lvremove /dev/vg0/lv0    删除lv    -ff 强制删除(数据丢失)
vgremove vg0        删除vg
pvremove /dev/sda{6,7,8}删除pv

lvm快照
创建快照
lvcreate -L 50M -s -n /dev/vg0/lv0-s0 /dev/vg0/lv0
                      快照名称         原文件

lvm快照
创建
lvcreate -L 50M -s -n /dev/vg0/lv0-s0 /dev/vg0/lv0
1.只使用快照(原lv不挂载)只能在原lv数据基础上作出50M的修改,
一旦到了最大值该快照自动损坏所有的修改都是记录在快照里
2.只是使用原lv(快照保存,不挂载)
使用快照数据恢复原数据(快照size 大于 原lv)

作业:
1.分6个分区200M  做个raid5(400)  raid0(400) sda10(200)
创建raid5
mdadm -C /dev/md5 -l 5 -n 3 /dev/sda{5,6,7}
mkfs.ext3  /dev/md5
mount /dev/md5 /raid5/
df -Th

创建raid0
mdadm -C /dev/md0 -l 0 -n 2 /dev/sda{8,9}
mdadm -Ds
mkfs.ext3 /dev/md0
mount /dev/md0 /raid0
df -Th

2.将raid5 创建成pv vg lv
 扩大vg sda10
 扩大lv到500M

将sda10 数据移动 raid0  移除 sda10

vgcreate /dev/sda10
pvcreate /dev/sda10
vgextend vg0 /dev/sda10
lvextend -L +200M /dev/vg0/lv0
df -Th
resize2fs /dev/vg0/lv0 500M
df -Th
pvs
pvcreate /dev/md0
vgextend vg0 /dev/md0
pvs
df -Th
pvmove /dev/sda10 /dev/md0

1.只使用快照(原lv不挂载)
写入母盘数据,然后卸载母盘,挂载快照,
查看快照内容和母盘数据一样,只能修改快照数据,母盘数据不变。
重新挂在母盘,原来数据依旧存在
2.只是使用原lv(快照保存,不挂载)
使用快照数据恢复原数据(快照size 大于 原lv)

系统启动过程(排错)
1.bois-------->启动项(光盘,硬盘,u盘,网路,软盘)------->硬盘
2.引导程序(bootloader(grub.conf))MBR(主引导记录 512字节)(446引导程序-64(分区

表)--2字节magic number aa55)
stage1(446)---> stage1.5------>stage2
3.读取grub.conf文件 找到内核 initrd文件
 引导程序损坏
 光盘修复模式
 boot:linux rescue
 在内存中打开光盘系统
 mkdir /a
 mount /dev/sda2 /a
 ls /a -------原根目录结构
 安装引导程序
 grub
 grub> root (hd0,0)
 grub> setup (hd0)
   success 安装成功
4.启动内核,启动文件------> init
5.init------>/etc/inittab
 启动级别
6.执行rc.sysinit 初始化操作系统(fstab)
7.运行对应级别启动脚本目录rc[1-6].d  启动系统中定义的服务
8./etc/rc.local 进入系统前最后一个执行脚本
9.加载文本的环境(加载图形环境)
10.login----->bash环境配置文件

ts1.sh
inittab
fstab
passwd

修改启动级别
vi /etc/inittab
第18行 id:5:initdefault:
vi /etc/fstab
defaults
vi/etc/passwd
用户密码

ts2.sh
grub.conf
inittab
fstab
passwd

root (hd0,0)
      kernel /vmlinuz-2.6.18-308.el5 ro root=LABEL=/ rhgb quiet 1
      initrd /initrd-2.6.18-308.el5.img
vi /etc/inittab
vi /etc/fstab
vi /etc/passwd

故障3
缺少grub内核
kernel /vmlinuz-2.6.18-308.el5 ro root=LABEL=/ rhgb quiet 1
sh-3.2# grub
sh-3.2# root (hd0,0)
sh-3.2# setup (hd0)

缺少卷标识 查看 /etc/fstab 内卷标修改
e2lable /dev/sda1 /boot
e2lable /dev/sda2 /

修改启动级别
vi /etc/inittab
第18行 id:5:initdefault:
vi /etc/fstab
defaults
vi/etc/passwd
用户密码
wall " you lose "

ts1.sh
inittab
fstab
passwd

ts2.sh
grub.conf
inittab
fstab
passwd

ts3.sh
引导程序
grub.conf
卷标
inittab
fstab
passwd

ts4.sh
引导程序
grub.conf
卷标
inittab
fstab
passwd

mount被删除
光盘系统
mkdir /a
mount /dev/hdc /a/mnt
chroot /a
rpm -ivh /mnt/Server/util-linux-2.13-0.59.el5.rpm --force

rc.local
tmp目录权限被修改
crontab -e

查找命令

计划任务

系统启动过程(排错)

编译内核(模块管理)

网络管理

编译内核(模块管理)

显示加载模块
lsmod
查询模块
modinfo ext3
移出模块
rmmod 8139too
手动加载模块
insmod /lib/modules/2.6.18-308.el5/kernel/drivers/net/8139too.ko
动态加载模块
modprobe 8139too 依赖/lib/modules/2.6.18-308.el5/modules.dep  依赖库文件
重建依赖关系库
depmod -a 建立 modprobe 8139too

查看内核版本号

uname -r
2.6.18-308.el5
主版本.次版本号.修订版本号
次版本号如奇数  测试版 beta
次版本号如偶数  稳定版 release

内核参数调整

cat /proc/sys/net/ipv4/icmp_echo_ignore_all
值为1忽略所有的ping命令
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all


cat /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
忽略ping广播
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

cat /proc/sys/vm/drop_caches
清楚缓存
echo 1 > /proc/sys/vm/drop_caches

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

编译内核
tar -jxvf linux-2.6.30.tar.bz2 -C /usr/local/src/
/usr/local/src/linux-2.6.30/Documentation/devices.txt

创建字符设备
mknod -m 640 /dev/sda11    b                 8               11
                权限  设备名称   类型  主设备号  从设备号

编译内核文件
make mrproper 清理以前编译痕迹
make menuconfig 执行编辑
make 编译
make modules_install 模块安装
make install 安装

修改.i㎎文件
解压 .img 文件

zcat initrd-2.6.30.img | cpio -i
cd /tmp
mkdir init
cp /boot/initrd-2.6.30.img /tmp
cd init
zcat ../initrd-2.6.30.img | cpio -i

打包
find . | cpio -c -o >> ../initrd
cd /tmp
gzip -9 initrd
mv initrd.gz initrd.img

测试编译 .img 文件
cp initrd.img /boot/
vim /boot/grub/grub.conf

title Red Hat Enterprise Linux Server (2.6.30)
       root (hd0,0)
       kernel /vmlinuz-2.6.30 ro root=LABEL=/ [rhgb quiet] "[]" 内去掉后 快速启动
       initrd /initrd.img   添加行

title Red Hat Enterprise Linux Server (2.6.18-308.el5)
       root (hd0,0)
       kernel /vmlinuz-2.6.18-308.el5 ro root=LABEL=/ rhgb quiet
       initrd /initrd-2.6.18-308.el5.img

***********************************************************************************

*
网络管理

设置ip
setup
service network restart 重启网卡
/etc/init.d/network restart
网卡配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0

查看网卡信息

ifconfig eth0
ifconfig eth0 10.10.10.10

ifconfig eth0 down 或 ifdown eth0  停用网卡
ifconfig eth0 up 或者 ifup eth0  启用网卡

ifdown eth0 || ifup eth0    || 前一个命令正确执行,后一个命令不执行    (逻辑或)
ifdown eth0 && ifup eth0    && 前一个命令必须正确执行,然后执行后一个命令  (逻

辑与)
ifdown eth0 ; ifup eth0        ; 不管前一个命令是否正确执行,后一个命令都

要执行

临时修改MAC地址

ifconfig eth0 down
ifconfig eth0 hw ether 00:01:22:a1:c2:3d
ifconfig eth0 192.168.1.188
ifconfig eth0 up
service network restart
永久修改 /etc/sysconfig/network-scripts/ifcfg-eth0 相应行

网卡别名
ifconfig eth0:0 10.10.10.10
永久保存
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-eth0:0
vim ifcfg-eth0:0

DEVICE=eth0:0
BOOTPROTO=none
HWADDR=00:0c:29:d5:0b:2b
ONBOOT=yes
IPADDR=10.10.10.10
NETMASK=255.255.255.0
GATEWAY=10.10.10.1
TYPE=Ethernet
service netwrok restart

多余网卡备份网卡配置文件
/etc/modprobe.conf
/etc/sysconfig/hwconf hw配置的实际mac地址
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/networking/devices
/etc/sysconfig/networking/profiles/default

删除虚拟网卡地址
ip add del xxx.xxx.xxx.xxx dev eth0:0

添加路由
route -n 查看
route add default gw 192.168.1.254
route del default gw 192.168.1.254

traceroute www.baidu.com 路由追踪

arping 192.168.1.254  检测冲突检测

arp 检查连接本机的地址

ip addr show 显示所有网卡信息

主机名
hostname
hostname robin.com

/etc/sysconfig/network  主机名配置文件
HOSTNAME=robin.com

查找命令
1.which 查找命令位置
2.whereis
3.grep 过滤文件
4.locate(依赖 updatedb 命令)  查找昨天创建文件
vim /etc/crontab 系统自动维护
vim /etc/anacrontab 未执行任务 延期 开机65分钟维护
tmp不维护 7天后自动清空不用文件

5.find
find / -name .img           按照 名称超找
find / -type p -ls          按照 类型查找
find / -links 30 -ls        按照 硬连接数查找
find /home -user xiao -ls  按照 用户名查找
find /home -group xiao -ls 按照 组查找
find /home -nouser -ls       查找无用户名文件
find /home -nogroup -ls    查找无组名文件
find /home \(-nouser -a nogroup \) -ls 显示 无用户名与无组的文件
find /home \(-nouser -o nogroup \) -ls 显示 无用户名或无组的文件
find /home -nouser -exec rm -rf {} \;  查找无用户名的文件 然后删除  rm -rf {} \; 固定格式
find /home -nogroup -ok rm -rf {} \;   交互式删除 查找到满足条件的文件

按照 文件大小查找文件
find /home/test -size 300M              等于
find /home/test -size +150M -a -size -350M    大于小于 全满足
find /home/test -size -150M -o -size +350M    小于大于 任其一

***************************************************************************
stat
 File: `mac.sh'
 Size: 461             Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d      Inode: 58425610    Links: 1
Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2013-06-04 10:02:04.000000000 +0800
访问时间
Modify: 2013-06-04 09:50:51.000000000 +0800
修改时间
Change: 2013-06-04 09:50:51.000000000 +0800
属性权限
*****************************************************************************
修改文件时间
touch -m -d 20120101 aa.txt         创建文件带时间
touch -m -t 201010101010.10 aa.txt     创建文件日期时间
******************************************************************************
按照时间查找
find /home/test -mtime +8             查询8天以前的文件
find /home/test -mtime -8             查询8天以内的文件
find /home/test -mtime +2 -a -mtime -10     查询2天以前,10天以内文件
find /home/test -mtime +2 -o -mtime -10     查询2天以前或10天以内文件

按照 权限查找 (9个权限位置)
find . -perm  644  正好匹配
find . -perm +314  任意匹配 含有一个字符就可以
find . -perm -424  完全匹配 子集(匹配任意重合位置)

内存溢出查询
find / -type f | xargs file
横向排列查出字段
cut -d: -f 1 /etc/passwd | xargs
查找出字段创建成文件夹
cut -d: -f 1 /etc/passwd | xargs mkdir

服务管理

dhcp
安装包:dhcp-3.0.5-31.el5.i386.rpm
启动服务:service dhcpd restart  或者/etc/init.d/dhcdp restart
模板文件:/usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample
配置文件:/etc/dhcpd.conf
覆盖原来文件
cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf

修改虚拟机 IP地址  host-only 模式 开启dhcp服务 否则会有启动dhcp服务失败的情况
ifconfig vmnet1 172.16.17.100

修改参数
ddns-update-style interim;
ignore client-updates;

subnet 172.16.17.0 netmask 255.255.255.0 {              # 网段

# --- default gateway
       option routers                  172.16.17.1;    # 网关
       option subnet-mask              255.255.255.0;    # 掩码

       option nis-domain               "domain.org";
       option domain-name              "domain.org";
       option domain-name-servers      172.16.17.1,8.8.8.8;    # DNS地址

       option time-offset              -18000; # Eastern Standard Time
#       option ntp-servers              192.168.1.1;
#       option netbios-name-servers     192.168.1.1;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
#       option netbios-node-type 2;

       range dynamic-bootp 172.16.17.100 172.16.17.200;    # 地址池
       default-lease-time 21600;
       max-lease-time 43200;

       # we want the nameserver to appear at a fixed address
       host ns {
               next-server marvin.redhat.com;
               hardware ethernet 12:34:56:78:AB:CD;        # 指定MAC地址
               fixed-address 207.175.42.254;            # 指定获取IP地址
       }
}

启动服务
service dhcpd restart
netstat -anplt -a all n 去掉host解析  p pid   l长格式  t tcp  u udp
租约文件
动态查看分配地址 (服务端)
tail -f /var/lib/dhcpd/dhcp.leases
客户端获取文件 (客户端)
tail -f /var/lib/dhclient/dhclient-eth0.leases

杀死dhcp客户端进程 pkill dhclient

工作原理(服务端:tail -f /var/log/messages)
Client              Server
 -------DHCPDISCOVER------->
 <------DHCPOFFER-----------
 -------DHCPREQUEST-------->
 <------DHCPACK-------------

DHCP多网段分配

DHCP服务器配置
vim /etc/dhcpd.conf
subnet 10.10.10.0 netmask 255.255.255.0 {
       option routers                  10.10.10.10;
       option subnet-mask              255.255.255.0;
       option domain-name              "domain.org";
       option domain-name-servers      202.106.0.20;
       range dynamic-bootp 10.10.10.1 10.10.10.253;
       default-lease-time 21600;
       max-lease-time 43200;
}
subnet 100.100.100.0 netmask 255.255.255.0 {
       option routers                  100.100.100.254;
       option subnet-mask              255.255.255.0;
       option domain-name              "domain.org";
       option domain-name-servers      202.106.0.20;
       range dynamic-bootp 100.100.100.1 100.100.100.253;
       default-lease-time 21600;
       max-lease-time 43200;
}

route add default gw 10.10.10.254 网关设置

DHCPRELAY服务器 (中继服务器)

安装软件:dhcp-3.0.5-31.el5.i386.rpm
ifconfig eth0 10.10.10.254
ifconfig eth1 100.100.100.254
开启转发功能
echo 1 >/proc/sys/net/ipv4/ip_forward

vim /etc/sysconfig/dhcrelay
INTERFACES="eth0 eth1"          网卡接口
DHCPSERVERS="10.10.10.10"      dhcp服务器的ip

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

ssh服务(远程连接telnet 23)
启动服务:service sshd restart | start | stop |status
配置文件 /etc/
端口:22

nmap 192.168.1.49 扫描对方端口

远程拷贝   authorized_keys
scp install.log 192.168.1.254:/tmp  远程登录后操作
scp 192.168.1.49:/root/install.log /tmp/ 本地操作ssh远程
ssh root@192.168.1.188

端口改变后登录与远程拷贝
ssh 192.168.1.254 -p 54321
scp -P 54321 anaconda-ks.cfg 192.168.1.254:/tmp/

修改端口
vim /etc/ssh/sshd_config
Port 54321

wall 广播
write root /dev/pts/13 给某个登录用户发送
netstat -anplt
kill -9 pid号码 踢掉单一用户

whoami  当前用户身份
who i am 登录用户身份

last  登录记录
lastlog 最后登录用户日志

作业:
给虚拟机分一个在200.200.200.0/24网端的ip
指定200.200.200.200给虚拟机

ssh密钥登录
ssh-keygen
在执行该命令用户的家目录下产生.ssh目录保存密钥信息
id_rsa  id_rsa.pub
私钥    公钥
scp id_rsa.pub 192.168.1.240:/root/.ssh/authorized_keys

两台服务器互相登录不需要密码。
服务器1.ssh-keygen
 scp id_rsa.pub 192.168.1.240:/root/.ssh/authorized_keys
服务器2.ssh-keygen
 cat id_rsa.pub >> authorized_keys
 scp authorized_keys 192.168.1.254:/root/.ssh/

服务器拒绝密码验证
vim /etc/ssh/sshd_config  修改60行
PasswordAuthentication no
重启服务
service sshd restart
============================================================================
syslogd+日志轮转
日志存放位置/var/log
日志的配置文件/etc/syslog.conf
启动服务:service syslog restart

AAAAA.BBBBB        CCCCC
AAAAA产生日志的对象
mail
authpriv
cron
news
uucp
syslog

BBBBB日志级别(8)
debug
info
notice
warning
err
crit
alter
emerg(panic)  


mail.info   从info以上信息显示
mail.=err    只要err信息
mail.=!err   除了err 其他记录都显示  !取反的意思
定义到 /etc/syslog.conf 内显示错误信息

CCCCC 保存日志的位置
*********************************************************************
所有用户信息
*.info;mail.none;authpriv.none;cron.none         /var/log/messages
authpriv.*     /var/log/secure 认证信息全部保存
*.emerg        *  所有紧急信息都存放 可存放位置
**********************************************************************
CCCCC 保存日志的位置 gpm 鼠标进程
1.保存文件 要有可读写权限
*.info;mail.none;authpriv.none;cron.none    *  /tmp/log.log
2.发送终端  tty 查询位置
*.info;mail.none;authpriv.none;cron.none    /dev/pts/0
3.发送给用户
*.info;mail.none;authpriv.none;cron.none        robin

自定义日志
例子:
vim /etc/ssh/sshd_config    自定义日志位置
SyslogFacility local6        定义位置
vim /etc/syslog.conf        添加自定义日志文件位置
local6.*            /tmp/ssh.log
重启服务生效
service sshd restart
service syslog  restart
日志将存放在/tmp/ssh.log
=========================================================================
远程日志

服务端 vi /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"

客户端 vi /etc/syslog.conf
*.info;mail.none;authpriv.none;cron.none       @192.168.1.254
service syslog restart
过滤日志信息    grep 192.168.1.188 var/log/message

iptables -L 查看防火墙

getenforce 查看selinx状况
/etc/selinux/config 关闭disable
setenforce 0
chkconfig  --level 2345 服务名称 off/on
ntsysv 图形化管理服务

====================================================================
下午课程

日志切割
主配置文件:/etc/logrotate.conf
子配置文件:/etc/logrotate.d/

touch /etc/logrotate.d/test

/var/log/test.log {
   missingok
   daily
   notifempty
   rotate 7
   create 0700 root root
}

touch /var/log/test.log
强制切割日志
logrote -f /etc/logrotate.d/test

练习:
#!/bin/bash
while :
do
      cat /root/install.log >> /var/log/test.log
      sleep 2
done

1./var/log/test.log 对该文件进行日志轮转
每天一次 空文件不切割 每天切割一次 保留7分  文件权限700

/etc/logrotate.d/test
/var/log/test.log {
   missingok
   notifempty
   daily       天   时间 主要
   rotate 7    7份
   create 0700 root root
}

2./var/log/test.log 每分钟切割一次 大小如果大于10k  ?

/etc/logrotate.d/test
/var/log/test.log {
   missingok   丢失不提示
   notifempty  空文件
   size 10K    文件大小
   rotate 7
   create 0700 root root   创建文件权限
}

crontab -e
* * * * * logrotate /etc/logrotate.d/test

===========================================================
文件服务器搭建nfs samba vsftpd

nfs服务器
配置文件 /etc/exports
启动服务:service  portmap restart(rpcbind)
        service  nfs restart
端口:2049

查看端口 /etc/services

配置
vim /etc/exports
/nfs    *(rw,sync,no_root_squash)读写,同步 没有root切换
/nfs    192.168.1.0/24(rw) 10.10.10.0/24(ro)  网段划分权限
/nfs    192.168.1.240/32(rw)              单机用户  

service portmap restart
service nfs restart
exportfs -a 直接刷新 生效配置
chmod o=rwx /nfs

客户端
showmount -e 192.168.1.254

mount 192.168.1.254:/nfs /mnt

作业:
1.raid+lvs+nfs nas服务器
服务器端设置:
fdisk -l
partprobe /dev/sdb
partprobe /dev/sdd
partprobe /dev/sde
mkfs.ext3 /dev/sdb1
mkfs.ext3 /dev/sdd1
mkfs.ext3 /dev/sde1
创建raid5
mdadm -C /dev/md5 -l 5 -n 3 /dev/sdb1 /dev/sdd1 /dev/sde1
mkfs.ext3 /dev/md5
mdadm -Ds
echo DEVICE /dev/sdb1 /dev/sdd1 /dev/sde1 > /etc/mdadm.conf
mdadm -Ds >> /etc/mdadm.conf
创建lvm
pvcreate /dev/md5
vgcreate vg0 /dev/md5
lvcreate -L 10G -n /dev/vg0/lv0 vg0
mkfs.ext3 /dev/vg0/lv0
mount /dev/vg0/lv0 /lv0
df -Th
编辑 nfs 配置文件
vim /etc/exports
添加
/lv0    *(rw,sync,no_root_squash)
启动服务
service portmap restart
service nfs restart
动态刷新配置
exportfs -a
查看连接用户
showmount -a
查看共享目录
showmount -e

客户端设置
service portmap restart

2.mount lv0时 自动挂载3方式(autofs 随意触发挂载)

方法1
编辑 vim /etc/rc.d/rc.local
添加
mount 10.8.8.8:/lv0 /nfs1
实现开始自动挂载到nfs1目录下 nfs1目录存在情况下

方法2
编辑 vim /etc/fstab
添加
10.8.8.8:/lv0       /nfs8     nfs   rw    0 0
实现开始自动挂载到/nfs8目录下 nfs8目录存在情况下

方法3
编辑自动挂载配置文件
vim /etc/auto.master
添加挂载点
/nfs88  /etc/auto.nfs88 --timeout=20
创建挂载配置文件
vim /etc/auto.nfs88
任意挂载
*       -fstype=nfs,rw 10.8.8.8:/lv0
重启自动挂载服务
service autofs restart
触发挂载
cd /nfs88/nfs8
查看效果
df -Th

samba
安装包:
samba-3.0.33-3.37.el5.i386.rpm
samba-client-3.0.33-3.37.el5.i386.rpm
samba-common-3.0.33-3.37.el5.i386.rpm
启动服务:
service smb restart
配置文件:
/etc/samba/smb.conf

匿名配置
security = share
[smb]
       comment = test server
       path = /smb     共享目录
       public = yes     共享
       writable = yes   可写
   browseable = no (no 为不可见共享)

chmod  777 /smb
测试
linux
smbclient -L //192.168.1.254
smbclient //192.168.1.254/smb
挂载smb
mount //192.168.1.254/smb /opt

用户验证
security = user
[nfs]
       comment = nfs
       path = /nfs
       writable = yes
       valid users = tom @tom 所有组用户添加进samba数据库
   write list = tom
   read list = @tom
认证可写用户
   comment = nfs
       path = /nfs                    
       valid users = tom @kkk所有组用户添加进samba数据库
   write list = kkk
认证可读用户  
   comment = nfs
       path = /nfs
       writable = yes
       valid users = tom @kkk 所有组用户添加进samba数据库
   read list = @kkk

#windows创建文件和目录的权限掩码
   directory mask = 0555
   create mask = 0444
   #访问控制  
   hosts allow = 192.168.1.240
   hosts deny = 192.168.1.240  exect 192.168.1.5 先拒绝 后允许

useradd  tom
smbpasswd -a tom
pdbedit -L 查询samba用户

测试
smbclient -U tom%123 //192.168.1.254/nfs
mount -o cifs username=tom,password=123 //192.168.1.254/nfs /opt
===================================================================
练习:
在/tmp目录下创建两个目录/tmp/u1 /tmp/u2
用户jack  组upup(abc1 abc2)
jack 可以rw /tmp/u1目录  upup组 只读
upup 可以rw /tmp/u2目录  jack 只读

useradd jack
groupadd upup
useradd -g upup abc1
useradd -g upup abc2

smbpasswd -a jack
smbpasswd -a abc1
smbpasswd -a abc2

pdbedit -a -u jack
pdbedit -a -u abc1
pdbedit -a -u abc2

pdbedit -L

vim /etc/samba/smb.conf
security = user
[u1]
        comment = u1
       path = /tmp/u1
       valid = jack @upup
       write list = jack
[u2]
      comment = u2
       path = /tmp/u2
       writable = yes
        valid = jack @upup
       read list = jack
====================================================================
下午课程

vsftpd 服务
安装包:
vsftpd-2.0.5-24.el5.i386.rpm
lftp-3.7.11-7.el5.i386.rpm
端口: 20 数据 21 控制
配置文件位置:/etc/vsftpd/vsftpd.conf
启动服务:service vsftpd restart
服务主目录:/var/ftp   只能为 755

配置匿名服务(ftp)
默认vsftpd服务器只能下载
允许上传
anon_upload_enable=YES        27行