Linux笔记

一、用户和组管理
1. 用户管理-命令
useradd :用来建立用户帐号和创建用户的起始目录,使用权限是超级用户。
--> useradd  -d /home/db2inst  db2inst :增加xxxx用户,主目录为/home/xxxx
格式:useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name
主要参数:
-c:加上备注文字,备注文字保存在passwd的备注栏中。 
-d:指定用户登入时的启始目录。
-D:变更预设值。
-e:指定账号的有效期限,缺省表示永久有效。
-f:指定在密码过期后多少天即关闭该账号。
-g:指定用户所属的群组。
-G:指定用户所属的附加群组。
-m:自动建立用户的登入目录。
-M:不要自动建立用户的登入目录。
-n:取消建立以用户名称为名的群组。
-r:建立系统账号。
-s:指定用户登入后所使用的shell。
-u:指定用户ID号。
说明:
useradd可用来建立用户账号,它和adduser命令是相同的。账号建好之后,再用passwd设定账号的密码。使用useradd命令所建立的账号,实际上是保存在
/etc/passwd文本文件中。
应用实例:
(1) 建立一个新用户账户,并设置ID:
#useradd caojh -u 544
需要说明的是,设定ID值时尽量要大于500,以免冲突。因为Linux安装后会建立一些特殊用户,一般0到499之间的值留给bin、mail这样的系统账号。
(2) 若要创建一个名为lisi的用户,并作为student用户组的成员,则操作命令为:
[root@localhost ~]# useradd -g student lisi
[root@localhost ~]# tail -1 /etc/passwd
lisi:x:504:100::/home/lisi:/bin/bash


(3) 添加用户时,若未用-g参数指定用户组,则系统默认会自动创建一个与用户帐号同名的私有用户组。若不需要创建该私有用户组,则可选用-n参数。
比如,添加一个名为lijie的账户,但不指定用户组,其操作结果为:
[root@localhost home]# useradd -n lisi


(4)   创建用户账户时,系统会自动创建该用户对应的主目录,该目录默认放在/home目录下,若要改变位置,可以利用-d参数指定;对于用户登录时使用
   的shell,默认为/bin/bash,若要更改,则使用-s参数指定。
例如,若要创建一个名为 vodup 的账户,主目录放在/var目录下,并指定登录shell为/sbin/nologin,则操作命令为:
[root@localhost ~]# useradd -d /var/vodup -s /sbin/nologin vodup
[root@localhost ~]# tail -1 /etc/passwd
vodup:x:503:503::/var/vodup:/sbin/nologin
[root@localhost ~]# tail -1 /etc/group
vodup:x:503:


userdel:删除用户
-->  userdel [-r] 帐户名
-r为可选项,若带上该参数,则在删除该账户的同时,一并删除该账户对应的主目录。


usermod:对于已创建好的用户,可使用usermod命令来修改和设置账户的各项属性,包括登录名,主目录,用户组,登录shell等,该命令用法为:
--> usermod [option] username
部分option选项
(1) 改变用户帐户名:
使用-l参数来实现,命令用法为:
usermod -l 新用户名 原用户名
例如,若要将用户lisi更名为lixiaosi,则操作命令为:
[root@localhost ~]# usermod -l lixiaosi lisi
[root@localhost ~]# tail -l /etc/passwd
ntp:x:38:38::/etc/ntp:/sbin/nologin
...
db2inst1:x:501:2000::/home/db2inst1:/bin/bash
db2fenc1:x:502:2001::/home/db2fenc1:/bin/bash
db2as:x:503:2002::/home/db2as:/bin/bash
lixiaosi:x:504:100::/home/lisi:/bin/bash
从输出结果可见,用户名已更改为lixiaosi。主目录仍为原来的/home/lisi,若也要更改为/home/lixiaosi,则可通过执行以下命令来实现
[root@localhost ~]# usermod -d /home/lixiaosi lixiaosi
[root@localhost ~]# tail -l /etc/passwd
ntp:x:38:38::/etc/ntp:/sbin/nologin
...
db2inst1:x:501:2000::/home/db2inst1:/bin/bash
db2fenc1:x:502:2001::/home/db2fenc1:/bin/bash
db2as:x:503:2002::/home/db2as:/bin/bash
lixiaosi:x:504:100::/home/lixiaosi:/bin/bash
(2) 锁定的账户:
若要临时禁止用户登录,可将该用户账户锁定。锁定账户可利用-L参数来实现,其命令用法为:
usermod -L 要锁定的账户
linux锁定用户,是通过在密码文件shadow的密码字段前加“!”来标识该用户被锁定。
(3) 解锁账户:
要解锁账户,可以使用带-U参数的usermod命令来实现


passwd username:设定用户密码
--> passwd db2inst 
输入新密码:
再次输入新密码
注:如果没有指定USER,缺省情况是root,超级用户(即root)是:#,普通用户是:$
(1)锁定/解锁账户密码
 在linux中,除了用户账户可被锁定外,账户密码也可被锁定,任何一方被锁定后,都将无法登录系统。只有root用户才有权执行该命令,
 锁定账户密码使用带-l参数的passwd命令,其用法为:
passwd -l 帐户名
passwd -u 帐户名    #解锁账户密码
[root@localhost lee]# passwd -l lee
Locking password for user lee.
passwd: Success
[root@localhost lee]# passwd -S lee
lee LK 2015-12-08 0 99999 7 -1 (Password locked.) --LK代表密码已被锁定。
(2)删除账户密码:
passwd -d 帐户名
帐户密码被删除后,将不能登录系统,除非重新设置密码。


2. 组管理-命令
groupadd:添加组(groupadd  -g gid  xxxx )
-->groupadd  -g 200 utest :增加xxxx组,指定gid
格式:
groupadd [-g gid] [-o]] [-r] [-f] groupname
主要参数:
-g gid:指定组ID号。
-o:允许组ID号,不必惟一。
-r:加入组ID号,低于499系统账号。
-f:加入已经有的组时,发展程序退出。
应用实例:
建立一个新组,并设置组ID加入系统:
#groupadd -g 344 lee
此时在/etc/passwd文件中产生一个组ID(GID)是344的项目。
补充:
用户和用户组属于多对多关系,一个用户可以同时属于多个用户组,一个用户组可以包含多个不同的用户
创建用户组使用groupadd命令,其命令用法为:
groupadd [-r] 用户组名称
若命令带有-r参数,则创建系统用户组,该类用户组的GID值小于500;若没有-r参数,则创建普通用户组,其GID值大于或等于500.


groupdel:删除用户组
--> 其用法为:
groupdel 用户组名
在删除用户组时,被删除的用户组不能是某个账户的私有用户组,否则将无法删除,若要删除,则应先删除引用该私有用户组的账户,然后再删除用户组。
[root@localhost ~]# groupdel teacher
groupdel: cannot remove the primary group of user 'zhangjie'
[root@localhost ~]# userdel -r zhangjie
[root@localhost ~]# groupdel teacher
[root@localhost ~]# grep teacher /etc/group    #没有输出,说明teacher用户组以不存在,删除成功



groupmod:修改用户组属性,对用户组属性的修改,主要是修改用户组的名称和用户组的GID值。
(1)改变用户组的名称
若要对用户组进行重命名,可使用带-n参数的groupmod命令来实现,其用法为:
groupmod -n 新用户组名  原用户组名
对于用户组改名,不会改变其GID的值
比如,若要将student用户组更名为teacher用户组,则操作命令为:
[root@localhost ~]# tail -3 /etc/group
student:x:501:
lijie:x:502:
vodup:x:503:
[root@localhost ~]# groupmod -n teacher student
[root@localhost ~]# tail -3 /etc/group
lijie:x:502:
vodup:x:503:
teacher:x:501:
(2)重设用户组的GID
用户组的GID值可以重新进行设置修改,但不能与已有用户组的GID值重复。对GID进行修改,不会改变用户名的名称。
要修改用户组的GID,可使用带-g参数的groupmod命令,其用法为:
groupmod -g new_GID 用户组名称
例如,若要将teacher组的GID更改为504,则操作命令为:
[root@localhost ~]# tail -3 /etc/group
lijie:x:502:
vodup:x:503:
teacher:x:501:
[root@localhost ~]# groupmod -g 504 teacher
[root@localhost ~]# tail -3 /etc/group
lijie:x:502:
vodup:x:503:
teacher:x:504:
【3-finger和4-fwhois忽略】
3.finger:【?】
功能说明:查找并显示用户信息。
语  法:finger [-lmsp][帐号名称...]
补充说明:finger指令会去查找,并显示指定帐号的用户相关信息,包括本地与远端主机的用户皆可,帐号名称没有大小写的差别。单独执行finger指令,
它会显示本地主机现在所有的用户的登陆信息,包括帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话。
参  数:
 -l  列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状态,还有计划文件和方案文件内容。 
 -m  排除查找用户的真实姓名。
 -s  列出该用户的帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话。 
 -p  列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状态,但不显示该用户的计划文件和方案文件内容。




4.fwhois【?】
功能说明:查找并显示用户信息。
语  法:fwhios [帐号名称]
补充说明:本指令的功能有点类似finger指令,它会去查找并显示指定帐号的用户相关信息。不同之处在于fwhois指令是到Network Solutions的WHOIS数据库去查找,
该帐号名称必须有在上面注册才能寻获,且名称没有大小写的差别
5.id 用户名:
功能说明:显示用户的ID,以及所属群组的ID。
语  法:id [-gGnru][--help][--version][用户名称]
补充说明:id会显示用户以及所属群组的实际与有效ID。若两个ID相同,则仅显示实际ID。若仅指定用户名称,则显示目前用户的ID。
参  数:
 -g或--group  显示用户所属群组的ID。 
 -G或--groups  显示用户所属附加群组的ID。 
 -n或--name  显示用户,所属群组或附加群组的名称。 
 -r或--real  显示实际ID。 
 -u或--user  显示用户ID。
如:
[root@localhost lee]# id lee
uid=500(lee) gid=500(lee) groups=500(lee)
6.whoami:用于查询当前用户的名称;
7.groups:用于产看指定用户所隶属的用户组。
8.添加用户到指定的组/从指定的组中移除用户:
(1)可以将用户添加到指定的组,使其成为该组的成员。其实现命令为:
gpasswd -a 用户账户  用户组名
(2)若要从用户组中移除某用户,其实现命令为:
gpasswd -d 用户账户  用户组名
9.设置用户组管理员
 添加用户到组和从组中移除某用户,除了root用户可以执行该操作外,用户组管理员也可以执行该操作。
 要将某用户指派为某个用户组的管理员,可使用以下命令来实现;
gpasswd -A 用户账户 要管理的用户组
 命令功能:将指定的用户设置为指定用户组的用户管理员。用户管理员只能对授权的用户组进行用户管理(添加用户到组或从组中删除用户),
 无权对其他用户组进行管理。
<<<<<<<<<<<<<用户和用户组的补充内容:>>>>>>>>>>>>>>>>>>
1.用户
1-1.用户类型
A. 管理员 root:具有所有权限的用户,UID的值为0。
B. 普通用户:我们正常创建的用户,UID为500~60000。
C. 系统用户:保障系统运行的用户,一般不提供密码登录系统,UID为1~499。
1-2.用户相关文件
与用户相关的文件主要有/etc/passwd和/etc/shadow。
A. /etc/passwd
存放用户的基本属性,从该文件可以查看Linux的所有用户。格式为:
【用户名:密码:用户ID:用户主组ID:用户详细信息(如姓名,年龄,电话等):用户根目录:用户编程环境】
每个用户有1个主组(私有组),1个或者多个附加组。
如:[root@localhost lee]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
lee:x:500:500:Linux_DB2:/home/lee:/bin/bash
db2inst1:x:501:2000::/home/db2inst1:/bin/bash
db2fenc1:x:502:2001::/home/db2fenc1:/bin/bash
db2as:x:503:2002::/home/db2as:/bin/bash

--->如果想赋予某个用户管理员权限,就可将此文件的uid 更改为0(组id也可同时更改)
lee:x:500:500:Linux_DB2:/home/lee:/bin/bash  改为:lee:x:0:0:Linux_DB2:/home/lee:/bin/bash 

B. /etc/shadow
存放用户密码的一些策略,格式为:
【用户名:密码:最近更改密码的日期:密码不可更该的天数:密码需要重新更改的天数:密码更改前的警告期限:密码过期的宽限时间:帐号失效日期:保留】
如:[root@localhost lee]# cat /etc/shadow
root:$1$AuXf4TvI$wXBrVRKfmifibWi6w5zMF.:16770:0:99999:7:::
lee:$1$5wAoOygh$6HdhhMwvjzARUaXr7pMWh.:16778:0:99999:7:::
db2inst1:$1$ntqaP97S$8fc0yCneXIzmnFLmVi0xF/:16770:0:99999:7:::
db2fenc1:$1$gupsp6yY$SKJPkn2kmIHyclIAwKU.S0:16770:0:99999:7:::
db2as:$1$/45sB3Qv$sZrR4hrQ4RRe/eAKEC3M11:16770:0:99999:7:::
1-3.用户命令
1.查看所有用户:cat /etc/passwd
2.查看单个用户详细:id 用户名
3.查看当前所有的登录用户:who  
2.用户组
2-1.用户组类型
用户组是用户的容器,用户能从用户组继承权限。
A. 普通用户组:可以加入多个用户。
B. 系统用户组:一般加入一些系统用户。
C. 私有用户组:创建用户的时候,如果没有指明用户组,都会为该用户创建一个同名的用户组。私有用户组其实也是普通用户组的一种。
2-2.用户组相关文件
与用户相关的文件主要有/etc/group和/etc/gshadow。
A. /etc/group
存放组的基本信息。格式为:
【组名:组密码:组ID:用户列表】
B. /etc/gshadow
可以参考用户的/etc/shadow
2-3.用户组命令
1.新增组:groupadd -g UID号 组名---------如果不指定UID号则自动生成。
2.修改组:groupmod -n 组名 新组名----------可以用来改组名。
3.删除组:groupdel 组名-------------如果组内还有用户,则无法删除。
4.查看所有组+查看某个组内的用户:cat /etc/group。
5.查看用户的组信息:id 用户名
输出:
[root@localhost lee]# id lee
uid=500(lee) gid=500(lee) groups=500(lee)
gid是主组,groups是附加组。
6.将用户添加入组里:gpasswd -a 用户名 组名
7.将用户从组里移除:gpasswd -d 用户名 组名
------------------------------------------------------------
二、文件系统管理:
==》操作文件的用户都分成三类
文件的拥有者(u)
文件所属组的成员(g)
其他用户(o)
==》对于每一类用户,又分别提供他们三种权限
读(r) :用户是否有权力读文件的内容
写(w) :用户是否有权利改变文件的内容
执行(x) :用户是否有权利执行文件(对目录而言,x意味这你可以进入下一级目录),对于可执行文件,可以使用./exec_file形式执行
==》文件访问权限:rwxrwxrwx
读 - 4
允许用户打开、浏览文件内容
写 - 2
允许用户打开、编辑文件
执行 -1
允许用户执行
【对于可执行文件,可以使用  ”  ./可执行文件名   “形式执行】




1. Linux是一个【多用户多任务】的系统,关机时,需要注意以下事项
观察系统的使用状态,如谁在线,在线的用户在干什么(w)
通知在线使用者关机的相关信息(可选)(wall,write)
使用最安全的关机方式(执行关机命令前执行sync将内存数据写入硬盘)
2.注意Linux是大小写敏感的系统。
3. (1)pwd:显示当前路径
(2)cd:改变当前工作目录,
重点:1)不带参数时回到home目录
如:[root@localhost bin]# cd 
[root@localhost ~]# 
2)cd .. :返回上一级目录;
3)cd / :进入根目录;
4)cd - :回到上次进入的目录 ;
(3)ls :列出当前目录的内容;
<1> ls -R:获取文件与目录的层次关系 
如:[root@localhost lee]# cd lee2
[root@localhost lee2]# mkdir t1
[root@localhost lee2]# cd ..
[root@localhost lee]# ls -R
.:
lee2  test  test.txt


./lee2:
t1


./lee2/t1:


./test.txt:
[root@localhost lee]# 
<2> ls -author:详细信息;
[root@localhost lee]# ls -author
total 60K
drwxr-xr-x. 6 root 4.0K Dec  6 21:16 ..
drwxrwxrwx. 2 root 4.0K Dec  7 18:04 test2.txt
-rw-------. 1 root  12K Dec  7 18:11 .test2.txt.swp
-rw-r--r--. 1 root   49 Dec  7 18:13 ;
-rw-------. 1 root  12K Dec  7 18:20 .test.txt.swp
-rw-------. 1 root  12K Dec  7 18:25 .a.txt.swp
-rw-r--r--. 1 root   32 Dec  7 19:24 b.txt
drwxr-xr-x. 3 root 4.0K Dec  7 19:29 lee2
drwxr-xr-x. 4 root 4.0K Dec  7 19:30 .
显示隐藏文件:
#显示所有文件(包含隐藏文件)
ls -a
#只显示隐藏文件
l.
或者
ls -d .*
重点补充:1) 使用ls命令时会有几种不同的颜色,其中蓝色表示是目录,绿色表示是可执 行文件,
红色表示是压缩文件,浅蓝色表示是链接文件,加粗的黑色表示符号链接,灰色表示是其它格式文件。  
 2) ls最常使用的是ls- l,见图1所示。
[root@localhost lee]# ls -l
total 16
-rw-r--r--. 1 root root   49 Dec  7 18:13 ;
-rw-r--r--. 1 root root   32 Dec  7 19:24 b.txt
drwxr-xr-x. 3 root root 4096 Dec  7 19:29 lee2
drwxrwxrwx. 2 root root 4096 Dec  7 18:04 test2.txt
--> 文件类型开头是由10个字符构成的字符串。
其中第一个字符表示文件类型,它可以是下述类型之一:
-(普通文件)、d(目录)、l(符号链接)、 b(块设备文件)、c(字符设备文件)。
--> 后面的9个字符表示文件的访问权限,分为3组,每组3位。
第一组表示文件属主的权限,第二组表示同组用户的权限, 第三组表示其他用户的权限。每一组的三个字符分别表示对文件的读(r)、写(w)和执行权限(x)。
对于目录,表示进入权限。s表示当文件被执行时,把该 文件的UID 或GID赋予执行进程的UID(用户ID)或GID(组 ID)。t表示设置标志位(留在内存,不被换出)。
如果该文件是目录,那么在该目录中的文件只能被超级用户、目录拥有者或文件属主删除。如果它是可执行文 件,那么在该文件执行后,指向其正文段的指针仍留在内存。
这样再次执行它时,系统就能更快地装入该文件。接着显示的是文件大小、生成时间、文件或命令名 称。
(4)mkdir:创建【目录】,不是文件;
mkdir [options] 目录名
[options]主要参数
-m, --mode=模式:设定权限<模式>,与chmod类似。
-p, --parents:需要时创建上层目录;如果目录早已存在,则不当作错误。
-v, --verbose:每次创建新目录都显示信息。
--version:显示版本信息后离开。
如:
在进行目录创建时可以设置目录的权限,此时使用的参数是“-m”。假设要创建的目录名是test2,让所有用户都有rwx(即读、写、执行的权限),
那么可以使用以下命令:
--> [root@localhost lee]# mkdir -m 777 test2
[root@localhost lee]# ls
lee2  test  test2  test.txt

(5)rmdir :删除目录
1)当使用rmdir命令时,要求被删除的目录是个空目录
如:[root@localhost opt]# rmdir lee
rmdir: failed to remove `lee': Directory not empty
2)当-p选项被使用时,如果该目录的父目录为空,那么也被删除
[root@localhost lee]# rmdir -p lee2
-->rm:
1)当删除的是非空目录时,用” rm -r 目录名 “
这种方式会出现提示询问是否删除;
2)不用询问时,可用“ rm -rf 目录名 ”
f 是force,强制删除;

(6)mv :命令用来为文件或目录改名,或者将文件由一个目录移入另一个目录中,它的使用权限是所有用户。
--> mv[options] 源文件或目录 目标文件或目录
-->应用实例
1)将/usr/cbu中的所有文件移到当前目录(用“.”表示)中:
mv /usr/cbu/ * .
2)将文件a.txt重命名为b.txt:
mv a.txt b.txt
3) 文件夹Lee下有a.txt lee2
mv a.txt lee2(可)
mv a.txt lee2/(可)
mv a.txt /lee2(错)
4.文本编辑:
vi是所有UNIX系统都有的一个文本编辑器,工作在两种模式:
命令模式:初进入vi,在编辑模式下按Esc键
编辑模式:在命令模式下按“iIaAoO”等键进入编辑模式
常用的vi命令:vi filename :打开或【新建】文件,并将光标置于第一行首。
(1)插入文本类命令【以下都是在命令模式下执行,编辑模式下按ESC进入命令模式后再使用以下命令。。】
  i:在光标前    -->shift + g :定位到最后一行;
  I:在当前行首
  a:光标后
  A:在当前行尾 
  o:在当前行后插入一新行开始编辑
  O:在当前行前插入一新行开始编辑
删除命令 x或dd:删除光标处 一个字符及删除该行
(2)保存退出命令
:w 保存当前文件
:x 保存当前文件并退出
:q 退出vi
:q! 不保存文件并退出vi
5.file:根据文件内容判断文件类型,使用权限是所有用户。
如:--> [root@localhost lee]# ls
lee2   test.txt
[root@localhost lee]# file test
test: ASCII text
[root@localhost lee]# 
6. diff:命令用于两个文件之间的比较,并指出两者的不同,它的使用权限是所有用户。
格式:diff [options] 源文件 目标文件
[options]主要参数
-a:将所有文件当作文本文件来处理。
-b:忽略空格造成的不同。
-B:忽略空行造成的不同。
-c:使用纲要输出格式。
-H:利用试探法加速对大文件的搜索。
-I:忽略大小写的变化。
-n --rcs:输出RCS格式。
如:
[root@localhost lee]# diff a.txt b.txt
3,4c3
< hah1a
< ls
---
> haha
7. cat:
使用权限:所有使用者 
使用方式:cat [options] fileName 或 cat [options] file1 file2 > file3
说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案)
参数:
-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting
(1)cat命令一个最简单的用处是显示文本文件的内容。例如,我们想在命令行看一下a.txt文件的内容,可以使用命令:
[root@localhost lee]# cat a.txt
test
grep 
hah1a
ls
ok this is test
(2)有时需要将几个文件处理成一个文件,并将这种处理的结果保存到一个单独的输出文件。cat命令在其输入上接受一个或多个文件,并将它们作为一 个单独的文件打印
到它的输出。例如,把a.txt和b.txt的文件内容加上行号(空白行不加)之后,将内容附加到一个新文本文件d.txt 中:
[root@localhost lee]# cat -b a.txt b.txt > d.txt
[root@localhost lee]# cat d.txt
1 test
2 grep 
3 hah1a
4 ls
5 ok this is test
6 test
7 grep 
8 haha
9 ok this is test
8. umask:设置用户文件和目录的文件创建缺省屏蔽值,若将此命令放入profile文件,就可控制该用户后续所建文件的存取许可。它告诉系统在创建文件时不给谁
  存取许可。使用权限是所有用户。
格式:umask [-p] [-S] [mode]
参数:
-S:确定当前的umask设置。
-p:修改umask 设置。
[mode]:修改数值。
如:
[root@localhost ~]# umask -S
u=rwx,g=rx,o=rx
说明:
传统Unix的umask值是022,这样就可以防止同属于该组的其它用户及别的组的用户修改该用户的文件。既然每个用户都拥有并 属于一个自己的私有组,那么
这种“组保护模式”就不在需要了。严密的权限设定构成了Linux安全的基础,在权限上犯错误是致命的。需要注意的 是,umask命令用来设置进程所创建的文件
的读写权限,最保险的值是0077,即关闭创建文件的进程以外的所有进程的读写权限,表示为 -rw-------。在~/.bash_profile中,加上一行命令umask 0077
可以保证每次启动Shell后, 进程的umask权限都可以被正确设定。
应用实例:
umask -S
u=rwx,g=rx,o=rx
umask -p 177
umask -S
u=rw,g=,o=
上述5行命令,首先显示当前状态,然后把umask值改为177,结果只有文件所有者具有读写文件的权限,其它用户不能访问该文件。这显然是一种非常安全的设置。
【重点补充:】
默认文件和文件夹权限:
用户创建了一个文件或者文件夹,默认是什么权限呢?
这个跟环境掩码有关系,全局环境掩码是配置在/etc /profile里面。用户可以在自己根目录下创建.bashrc文件写入umask xxx来设置私有掩码。当然,
也可以使用umask命令在当前终端 设置掩码,不过下次登录后又会被重置了。这个跟PATH是一个道理的。
直接umask即可查看当前环境的掩码,umask xxxx可以临时更改当前环境的掩码。
[root@localhost lee]# umask
0022
理解umask:
我们的文件或者文件夹拥有rwxrwxrwx权限,也就是777。掩码有4位,第一位是所谓的guid,一般为0或者直接不写第1位,而使用3位的掩码。
777-掩码=新建目录的权限;
666-掩码=新建文件的权限。
比如掩码是022(或者0022),则新建目录的权限是 755,也就是rwxr-xr-x;新建的文件权限是644,也就是rw-r--r--。Linux为了安全起见,
不允许新建的文件带有x属性,所以新建 文件的最大权限是666,这也是为什么对于文件需要使用666来减。如果相减后有-1的情况,则当成0来处理。


9. chmod:用于改变文件或目录的访问权限,用户可以用它控制文件或目录的访问权限,使用权限是超级用户。
格式:
chmod命令有两种用法。一种是包含字母和操作符表达式的字符设定法(相对权限设定);另一种是包含数字的数字设定法(绝对权限设定)。
(1)字符设定法
chmod [who] [+ | - | =] [mode] 文件名
◆操作对象who可以是下述字母中的任一个或它们的组合
u:表示用户,即文件或目录的所有者。
g:表示同组用户,即与文件属主有相同组ID的所有用户。
o:表示其它用户。
a:表示所有用户,它是系统默认值。
◆操作符号
+:添加某个权限。
-:取消某个权限。
=:赋予给定权限,并取消其它所有权限(如果有的话)。
◆设置mode的权限可用下述字母的任意组合
r:可读。
w:可写。
x:可执行。
X:只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x属性。
s:文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。
t:保存程序的文本到交换设备上。
u:与文件属主拥有一样的权限。
g:与和文件属主同组的用户拥有一样的权限。
o:与其它用户拥有一样的权限。
文件名:以空格分开的要改变权限的文件列表,支持通配符。
一个命令行中可以给出多个权限方式,其间用逗号隔开。
(2) 数字设定法
 有关权限代号的部分,列表于下: 
 r:读取权限,数字代号为"4"。 
 w:写入权限,数字代号为"2"。 
 x:执行或切换权限,数字代号为"1"。 
 -:不具任何权限,数字代号为"0"。 
 数字设定法的一般形式为: chmod [mode] 文件名
数字属性的格式应为3个0到7的八进制数,其顺序是(u)(g)(o)文件名,以空格分开的要改变权限的文件列表,支持通配符。
数字表示的权限的含义如下:0001为所有者的执行权限;0002为所有者的写权限;0004为所有者的读权限;0010为组的执行权限;0020 为组的写权限;
0040为组的读权限;0100为其他人的执行权限;0200为其他人的写权限;0400为其他人的读权限;1000为粘贴位置 位;2000表示假如这个文件是可执行文件,
则为组ID为位置位,否则其中文件锁定位置位;4000表示假如这个文件是可执行文件,则为用户ID为位置 位。
实例:
(1)如果一个系统管理员写了一个表格(tem)让所有用户填写,那么必须授权用户对这个文件有读写权限,可以使用命令:#chmod 666 tem
上面代码中,这个666数字是如何计算出来的呢?0002为所有者的写权限,0004为所有者的读权限,0020为组的写权限,0040为组的读权 限, 0200为其他人
的写权限,0400为其他人的读权限,这6个数字相加就是666(注以上数字都是八进制数),结果见图1所示。
图1 用chmod数字方法设定文件权限
从图1可以看出,tem文件的权限是-rw-rw-rw-,即用户对这个文件有读写权限。
如果用字符权限设定使用下面命令:
#chmod a=wx tem
【注】:a=wx  不能有空格,否则会报错!
(2) [root@localhost lee]# ls -l
total 28
-rw-r--r--. 1 root root   49 Dec  7 18:13 ;
-rw-rw-rw-. 1 root root   36 Dec  7 19:49 a.txt
-rw-r--r--. 1 root root   32 Dec  7 19:24 b.txt
-rw-r--r--. 1 root root    8 Dec  7 19:55 c.txt
-rw-r--r--. 1 root root   68 Dec  7 21:19 d.txt
drwxr-xr-x. 3 root root 4096 Dec  7 19:29 lee2
drwxrwxrwx. 2 root root 4096 Dec  7 18:04 test2.txt
   横线代表空许可。r代表只读,w代表写,x代表可执行。注意这里共有10个位置。第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。
如果第一个字符是横线,表示是一个非目录的文件。如果是d,表示是一个目录。
  - rw- r-- r--
  普通文件 文件主 组用户 其他用户
10. chown:更改一个或多个文件或目录的属主和属组。使用权限是超级用户。
格式:chown [选项] 用户或组 文件
主要参数:
--dereference:受影响的是符号链接所指示的对象,而非符号链接本身。
-h, --no-dereference:会影响符号链接本身,而非符号链接所指示的目的地(当系统支持更改符号链接的所有者,此选项才有效)。
--from=目前所有者:目前组只当每个文件的所有者和组符合选项所指定的,才会更改所有者和组。其中一个可以省略,这已省略的属性就不需要符合原有的属性。
-f, --silent, --quiet:去除大部分的错误信息。
-R, --recursive:递归处理所有的文件及子目录。
-v, --verbose:处理任何文件都会显示信息。
说明:
chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或用户ID;组可以是组名或组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。
系统管理员经常使用chown命令,在将文件拷贝到另一个用户的目录下以后,让用户拥有使用该文件的权限。
应用实例:
1.把文件a.txt的所有者改为db2inst1:
[root@localhost lee]# chown db2inst1 a.txt
[root@localhost lee]# ls -l
total 28
-rw-r--r--. 1 root     root   49 Dec  7 18:13 ;
-r--rw-rw-. 1 db2inst1 root   36 Dec  7 19:49 a.txt
-r--rw-rw-. 1 root     root   32 Dec  7 19:24 b.txt
-rw-r--r--. 1 root     root    8 Dec  7 19:55 c.txt
2.把目录/hi及其下的所有文件和子目录的属主改成wan,属组改成users。
$ chown - R wan.users /hi
11.touch 文件名:创建空文件。
-->[root@localhost lee]# touch e.txt
12.创建文件链接:ln –s 链接文件 源文件
-f 强制
-I 交互
-r 目录递归
13. tail -3 a.txt:在命令行显示文件最后三行;
head -5 a.txt : 在命令行显示文件前五行;



-----------------------------------------------
三、存储设备管理:
1. (1)Linux上支持的设备信息在/dev目录下;
(2)Linux上当前系统可用的设备及其提供的接口信息放在/sys目录下;
2.fdisk -l:显示系统分区表信息
功能说明:磁盘分区。
语  法:fdisk [-b <分区大小>][-uv][外围设备代号] 或 fdisk [-l][-b <分区大小>][-uv][外围设备代号...] 或 fdisk [-s <分区编号>]
补充说明:fdisk是用来磁盘分区的程序,它采用传统的问答式界面,而非类似DOS fdisk的cfdisk互动式操作界面,因此在使用上较为不便,
但功能却丝毫不打折扣。
参  数:
 -b<分区大小>   指定每个分区的大小。
 -l   列出指定的外围设备的分区表状况。
 -s<分区编号>   将指定的分区大小输出到标准输出上,单位为区块。
 -u   搭配"-l"参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址。


3.df:用来检查文件系统的磁盘空间占用情况,使用权限是所有用户。<详情见第六部分>
4.linux 的磁盘管理机制: ---->>>>>>>>>具体见【linux学习(12-10)之磁盘分区— LVM【经典】.doc】
参考资料博客地址:http://www.cnblogs.com/xiaoluo501395377/tag/linux/
《1》LVM是什么?
  传统的磁盘管理不能对我们的磁盘空间进行动态的管理,因此就诞生出了LVM这个技术,LVM(Logical volume Manager)是逻辑卷管理的简称。
它是Linux环境下对磁盘分区进行管理的一种机制。现在不仅仅是Linux系统上可以使用LVM这种磁盘管理机制,对于其它的类UNIX操作系统,
以及windows操作系统都有类似与LVM这种磁盘管理软件。
《2》LVM的原理:
(1)知识点知晓:
①PE  (Physical Extend)  物理拓展(格式化物理卷的过程中LVM是将底层的硬盘划分为了一个一个的PE(Physical Extend),
  我们的LVM磁盘管理中PE的默认大小是4M大小,其实PE就是我们逻辑卷管理的最基本单位。)
②PV  (Physical Volume)  物理卷  (底层硬盘[一个或多个]格式化后就成了多个PE,每块硬盘的PE构成一个PV)
③VG  (Volume Group)     卷组    (创建一个卷组,也就是VG(Volume Group),卷组在这里我们可以将其抽象化成一个空间池,
VG的作用就是用来装PE的,我们可以把一个或者多个PV加到VG当中,因为在第一步操作时
就已经将该硬盘划分成了多个PE,所以将多个PV加到VG里面后,VG里面就存放了许许多多
来自不同PV中的PE)
④LV  (Logical Volume)   逻辑卷  (创建逻辑卷其实就是我们从VG中拿出我们指定数量的PE,VG中的PE可以来自不同的PV,
我们可以创建的逻辑卷的大小取决于VG当中PE存在的数量,并且我们创建的逻辑卷其大
小一定是PE的整数倍(即逻辑卷的大小一定要是4M的整数倍)。)
我们所有的操作目的,其实就是去创建一个LV(Logical Volume),刚创建好的LV,其就相当于传统的文件管理的分区,我们首先要对其进行
文件系统的【格式化】操作,然后通 过mount命令对其进行挂载,这个时候我们就能够像使用平常的分区一样来使用我们的逻辑卷了。
(2)原理总结:
下面我们来对整个LVM的工作原理进行一个总结:
(1)物理磁盘被格式化为PV,空间被划分为一个个的PE
(2)不同的PV加入到同一个VG中,不同PV的PE全部进入到了VG的PE池内
(3)LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同的物理磁盘
(4)LV现在就直接可以格式化后挂载使用了
(5)LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,其过程不会丢失原始数据
《3》LVM逻辑卷的创建、使用以及删除:
(1)将物理硬盘格式化成PV(物理卷):
<1> fdisk -l :查看磁盘信息(操作初始可能只有一块硬盘,可提前虚拟出两块物理硬盘)
1)关闭VM中正在运行的虚拟系统;
2)在虚拟系统名称上点右键-》Virtual Machine Settings;
3)在Hardware点“Add”-》Add a hard disk-》Create a new virtual disk-》SCSI-》分配空间大小-》OK;
<2> 将 /dev/sdb、 /dev/sdc 两块硬盘格式化成PV
[root@xiaoluo ~]# pvcreate /dev/sdb /dev/sdc 
 Physical volume "/dev/sdb" successfully created
 Physical volume "/dev/sdc" successfully created
<3> 创建完PV以后,我们可以使用pvdisplay(显示详细信息)、pvs命令来查看当前pv的信息
(2)创建卷组(VG),并将PV加入到卷组中:
<1> 在创建完PV以后,这时候我们需要创建一个VG,然后将我们的PV都加入到这个卷组当中,在创建卷组时要给该卷组起一个名字
[root@xiaoluo ~]# vgcreate xiaoluo /dev/sdb /dev/sdc 
 Volume group "xiaoluo" successfully created
<2> 同样,在创建好VG以后,我们也可以使用 vgdisplay 或者 vgs 命来来查看VG的信息
 
[root@xiaoluo ~]# vgdisplay 
....  
(3)基于卷组(VG)创建逻辑卷(LV):  通过 lvcreate 命令
<1> 因为创建好的PV、VG都是底层的东西,我们上层使用的是逻辑卷,所以我们要基于VG创建我们的逻辑卷才行
[root@xiaoluo ~]# lvcreate -n mylv -L 2G xiaoluo
 Logical volume "mylv" created
<2> 通过 lvcreate 命令基于VG创建好我们的逻辑卷,名字为mylv,大小为2G,同样我们可以使用 lvdisplay 或者
lvs 命令来查看创建好的逻辑卷的信息
<3> 我们发现,当我们每创建完一个LV时,VG与PV的信息都是时时在变化的,并且我们创建LV的大小是根据当前VG的大小来决定的,
不能超过当前VG的剩余大小!每创建好一个逻辑卷,都会在 /dev 目录下出现一个以该卷组命名的文件夹,基于该卷组创建的
所有的逻辑卷都是存放在这个文件夹下面,我们可以查看一下
[root@xiaoluo ~]# ls /dev/xiaoluo/mylv 
/dev/xiaoluo/mylv
我们每创建一个新的逻辑卷,该VG目录下都会多出这么一个设备。
(4)格式化并使用我们的逻辑卷:
我们已经创建好了我们的PV、VG以及LV,这时候我们如果要使用逻辑卷,就必须将其格式化成我们需要用的文件系统,
并将其挂载起来,然后就可以像使用分区一样去使用逻辑卷了.
<1> 格式化逻辑卷:
[root@xiaoluo ~]# mkfs.ext4 /dev/xiaoluo/mylv 
<2> 格式化我们的逻辑卷以后,就可以使用 mount 命令将其进行挂载,我们将其挂载到 /mnt 目录下  
[root@xiaoluo ~]# mount /dev/xiaoluo/mylv   /mnt
[root@xiaoluo ~]# mount
...
[root@xiaoluo ~]# cd /mnt/
[root@xiaoluo mnt]# ls
lost+found
[root@xiaoluo mnt]# touch xiaoluo.txt
[root@xiaoluo mnt]# ls
lost+found  xiaoluo.txt  
我们看到,我们的卷组已经挂载好了,并且可以像使用分区一样来对其进行文件操作了。
(5)删除逻辑卷:
我们在创建好逻辑卷后可以通过创建文件系统,挂载逻辑卷来使用它,如果说我们不想用了也可以将其删除掉。
【注意:】对于创建物理卷、创建卷组以及创建逻辑卷我们是有严格顺序的,同样,对于删除逻辑卷、删除卷组以及删除物理卷也是有严格顺序要求的
①首先将正在使用的逻辑卷卸载掉  通过 umount 命令
②将逻辑卷先删除  通过 lvremove 命令
③删除卷组  通过 vgremove 命令
④最后再来删除我们的物理卷  通过 pvremove 命令
如:
[root@xiaoluo /]# umount /mnt/
[root@xiaoluo /]# lvremove /dev/xiaoluo/mylv 
Do you really want to remove active logical volume mylv? [y/n]: y
 Logical volume "mylv" successfully removed
[root@xiaoluo /]# vgremove xiaoluo
 Volume group "xiaoluo" successfully removed
[root@xiaoluo /]# pvremove /dev/sdb 
 Labels on physical volume "/dev/sdb" successfully wiped
《4》LVM逻辑卷的拉伸及缩减:
(1)拉伸一个逻辑卷:
<1> 查看当前VG的信息,保证VG中有足够的空闲空间:通过 vgdisplay 或者 vgs 命令
<2> 扩充逻辑卷:通过 lvextend 命令
比如我这里要对 mylv 逻辑卷扩充1G的大小,此时我们就可以使用 lvextend -L +1G /dev/xiaoluo/mylv 命令来执行操作;
<3> 更新文件系统:通过 resize2fs 命令
我们在对逻辑卷进行拉伸以后,我们通过 df -h 命令可以查看一下当前的文件系统信息
[root@xiaoluo mnt]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              16G  3.8G   12G  25% /
tmpfs                 249M  560K  248M   1% /dev/shm
/dev/mapper/xiaoluo-mylv
 2.0G   68M  1.9G   4% /mnt  
我们发现我们当前的挂载的逻辑卷的文件 系统大小还是2G,并没有变成3G,其原因就是我们的文件系统是在创建完LV以后就
马上格式化的,此后我们对逻辑卷进行拉伸以后,其并不会改变当前的文件 系统,所以我们这个时候必须更新我们的文件系统,
通过使用 resize2fs 命令:
[root@xiaoluo mnt]# resize2fs /dev/xiaoluo/mylv 
(2)拉伸一个卷组:
上面介绍了如何拉伸一个逻辑卷,如果说此时我们的VG中PE的数量已经不足了,此时我们如果需要拉伸我们的逻辑卷,发现卷组中的空间
已经不够用了, 这个时候我们就必须对我们的卷组进行拉伸,使得卷组中有足够的空闲空间,最后再来拉伸我们的逻辑卷。我们知道卷组
其实就是将多块PV加入到VG当中,所以 卷组的拉伸也非常的简单,我们只需要增加一块物理硬盘,将其格式化成PV,然后再将这个PV加入
到该卷组中即可。
<1> 将要添加到VG的硬盘格式化成PV: 通过 pvcreate 命令
[root@xiaoluo mnt]# pvcreate /dev/sdd 
<2> 将新的PV添加到指定的VG当中: 通过 vgextend 命令
[root@xiaoluo mnt]# vgextend xiaoluo /dev/sdd 
<3> 查看当前VG的信息: 通过 vgdisplay 或者 vgs 命令
[root@xiaoluo mnt]# vgdisplay 
《5》逻辑卷的缩小: 【注意:】逻辑卷的缩小操作必须离线执行,要先卸载掉逻辑卷才可以
(1)逻辑卷的缩小:
<1> 缩小文件系统(会提示需要运行fsck来检查文件系统): 通过 resize2fs 命令
我们在讲到对逻辑卷进行拉伸的时候,其顺序是先对逻辑卷进行拉伸操作,然后再更新我们的文件系统,但是在对逻辑卷进行缩小操作时,
我们必须先执行缩小文件系统这个操作!!!这个顺序必须要记清楚!!!  
[root@xiaoluo ~]# lvs  // 首先我们看下我们当前的逻辑卷大小,此时为14G,我们这里假设要将其缩减为10G的大小
 LV   VG      Attr      LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
 mylv xiaoluo -wi-a---- 14.00g                
[root@xiaoluo ~]# resize2fs /dev/xiaoluo/mylv 10G  // 这条命令的作用就是缩小我们的文件系统,将我们的文件系统缩小到10G
resize2fs 1.41.12 (17-May-2010)
Please run 'e2fsck -f /dev/xiaoluo/mylv' first.  // 提示我们首先需要运行 e2fsck 命令来对我们的文件系统进行检查
[root@xiaoluo ~]# e2fsck -f /dev/xiaoluo/mylv   // 使用 e2fsck 命令来检查我们的文件系统
...
[root@xiaoluo ~]# resize2fs /dev/xiaoluo/mylv 10G  // 此时再使用 resize2fs 命令来缩小我们的文件系统,缩小为10G
...
这个时候我们的逻辑卷的文件系统已经被缩小为10G了,接下来我们就可以缩小我们的逻辑卷的大小了
<2> 缩小LV: 通过 lvreduce 命令
因为我们之前的LV大小为14G,我们通过缩小文件系统将其缩减为10G,所以此时我们需要缩小4G大小的逻辑卷  
[root@xiaoluo ~]# lvreduce -L -4G /dev/xiaoluo/mylv   // 缩小4G大小的逻辑卷
【注意:】缩小逻辑卷的操作是个危险的操作,稍不注意就可能损坏我们的逻辑卷,造成文件的丢失或损害,所以我们一般不要对逻辑卷进行缩减操作!!!
(2)缩小卷组
什么时候我们需要来缩小我们的卷组呢?比如说我有一块硬盘,这个时候我们需要将这块硬盘拆下来,或 者说不想将这块硬盘再作为逻辑卷了,
这个时候我们就需要执行缩小卷组的操作了。
<1> 首先必须也要卸载掉我们的逻辑卷:  通过 umount 命令
[root@xiaoluo mnt]# cd
[root@xiaoluo ~]# umount /dev/xiaoluo/mylv  
<2> 将一个PV从指定卷组中移除掉:  通过 vgreduce 命令  
[root@xiaoluo ~]# pvs  // 首先我们需要看下我们当前有哪些PV正在使用中,因为缩小一个卷组其实就是从卷组中移除一个PV,
如果PV正在使用中,那么PV就移除不了
 PV         VG      Fmt  Attr PSize PFree
 /dev/sdb   xiaoluo lvm2 a--  8.00g    0 
 /dev/sdc   xiaoluo lvm2 a--  8.00g 5.99g
 /dev/sdd   xiaoluo lvm2 a--  8.00g 8.00g  // 当前只有 sdd 这个PV可以移除掉
[root@xiaoluo ~]# vgreduce xiaoluo /dev/sdd   // 我们将 /dev/sdd 这个PV从指定卷组 xiaoluo 中移除掉
 Removed "/dev/sdd" from volume group "xiaoluo"  
<3> 查看当前卷组的信息  通过 vgdisplay 或者 vgs 命令  
[root@xiaoluo ~]# vgdisplay 
...  
<4> 将PV删除掉   通过 pvremove 命令  
[root@xiaoluo ~]# pvremove /dev/sdd
-----------------------------------------------------------------------------
四、网络管理:
1. ifconfig:用于查看和更改网络接口的地址和参数,包括IP地址、网络掩码、广播地址,使用权限是超级用户。
格式:
ifconfig interface [options] address
主要参数:
interface:指定的网络接口名,如eth0和eth1。
up:激活指定的网络接口卡。
down:关闭指定的网络接口。
broadcast address:设置接口的广播地址。
pointopoint:启用点对点方式。
address:设置指定接口设备的IP地址。
netmask address:设置接口的子网掩码。
应用说明:
ifconfig是用来设置和配置网卡的命令行工具。为了手工配置网络,这是一个必须掌握的命令。使用该命令的好处是无须重新启动机器。要赋给eth0接口
IP地址207.164.186.2,并且马上激活它,使用下面命令:
#fconfig eth0 210.34.6.89 netmask 255.255.255.128 broadcast 210.34.6.127
该命令的作用是设置网卡eth0的IP地址、网络掩码和网络的本地广播地址。若运行不带任何参数的ifconfig命令,这个命令将显示机器所有激活网卡的信息。
带有“-a”参数的命令则显示所有接口的信息,包括没有激活的接口。注意,用ifconfig命令配置的网络设备参数,机器重新启动以后将 会丢失。
如果要暂停某个网络接口的工作,可以使用down参数:
#ifconfig eth0 down
2. ethtool : 显示或者改变网卡设置
--> ethtool ethX:查看网口ethX的设置
ethtool –i ethX:查看网口ethX的驱动版本信息
ethtool –s ethX 属性设置:改变网卡配置信息,如下:
》ethtool -s eth3 autoneg off speed 100 duplex full(BASE平面降百兆)


3. netstat :显示网络状态信息
--> 格式:
netstat [-acCeFghilMnNoprstuvVwx][-A][--ip]
主要参数:
-a--all:显示所有连线中的Socket。
-A:列出该网络类型连线中的IP相关地址和网络类型。
-c--continuous:持续列出网络状态。
-C--cache:显示路由器配置的快取信息。
-e--extend:显示网络其它相关信息。
-F--fib:显示FIB。
-g--groups:显示多重广播功能群组组员名单。
-h--help:在线帮助。
-i--interfaces:显示网络界面信息表单。
-l--listening:显示监控中的服务器的Socket。
-M--masquerade:显示伪装的网络连线。
-n--numeric:直接使用IP地址,而不通过域名服务器。
-N--netlink--symbolic:显示网络硬件外围设备的符号连接名称。
-o--timers:显示计时器。
-p--programs:显示正在使用Socket的程序识别码和程序名称。
-r--route:显示Routing Table。
-s--statistice:显示网络工作信息统计表。
-t--tcp:显示TCP传输协议的连线状况。
-u--udp:显示UDP传输协议的连线状况。
-v--verbose:显示指令执行过程。
-V--version:显示版本信息。
-w--raw:显示RAW传输协议的连线状况。
-x--unix:和指定“-A unix”参数相同。
--ip--inet:和指定“-A inet”参数相同。
应用实例:
netstat 主要用于Linux察看自身的网络状况,如开启的端口、在为哪些用户服务,以及服务的状态等。此外,它还显示系统路由表、网络接口状态等。可以说,
它是一 个综合性的网络状态的察看工具。在默认情况下,netstat只显示已建立连接的端口。如果要显示处于监听状态的所有端口,使用-a参数即可:
4. route:查看系统中的路由配置
--> route add default 10.85.156.1 : 增加路由
配置eth0别名设备 eth0:1 的IP,并添加到主机的路由
  # ifconfig eth0:1 192.168.4.2
   # route add –host 192.168.4.2 dev eth0:1
添加到网络的路由
# route add –net IP netmask MASK eth0
激活(禁用)设备
# ifconfig eth0:1 up(down)
-->   route delete default 10.85.156.1 : 删除路由
5. ping IP(主机名):检测本机与IP地址为IP的主机之间的网络连接
如:ping 192.168.140.148
--> 格式
ping [-dfnqrRv][-c][-i][-I][-l][-p][-s][-t] IP地址
--> 主要参数
-d:使用Socket的SO_DEBUG功能。
-c:设置完成要求回应的次数。如:[root@localhost ~]# ping -c5 192.168.140.148【回应5次】
-f:极限检测。
-i:指定收发信息的间隔秒数。
-I:网络界面使用指定的网络界面送出数据包。
-l:前置载入,设置在送出要求信息之前,先行发出的数据包。
-n:只输出数值。
-p:设置填满数据包的范本样式。
-q:不显示指令执行过程,开头和结尾的相关信息除外。
-r:忽略普通的Routing Table,直接将数据包送到远端主机上。
-R:记录路由过程。
-s:设置数据包的大小。
-t:设置存活数值TTL的大小。
-v:详细显示指令的执行过程。
--> ping 命令是使用最多的网络指令,通常我们使用它检测网络是否连通,它使用ICMP协议。但是有时会有这样的情况,
我们可以浏览器查看一个网页,但是却无法 ping通,这是因为一些网站处于安全考虑安装了防火墙。另外,也可以
在自己计算机上试一试,通过下面的方法使系统对ping没有反应:
# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

6. ssh : 远程登录机器; 
> ssh ip_address:从本机登录到同一个网段内的其它机器
7. scp : 远程文件复制;
-->scp file1 IP:/dir : 在本端当前目录下复制文件file1到IP地址为IP的主机的dir目录下
scp a.txt 172.17.128.0:/tmp
-->scp IP:/dir2/file2  /dir1 : 从IP地址为IP的远端/dir2目录下复制文件file2到本端的/dir目录下
scp 172.17.128.0:/tmp/a.txt /tmp
-->scp -r IP:/dir2  /dir1 : 复制IP地址为IP的远端/dir2目录及其子目录下的所有文件到本端的/dir目录下
scp 172.17.128.0:/var/log /tmp


8.  ip:【??????????????????】
9. hostname:可以使用hostname命令来更改主机名。
例如;
#hostname myhost
--------------------------------------------------------------
五、linux下软件包的安装管理:
1、linux下软件的扩展名:
软件后缀为.rpm最初是Red Hat Linux提供的一种包封装格式,现在许多Linux发行版本都使用;
后缀为.deb是Debain Linux提供的一种包封装格式;
后缀为.tar.gz、tar.Z、tar.bz2或.tgz是使用Unix系统打包工具tar打包的;
后缀为.bin 的一般是一些商业软件。
2、源码安装方式:
   由于linux操作系统开放源代码,因而在其上安装的软件大部分也都是开源软件,例如apache、tomcat、php等软件。开源软件基本 都提供源码下载,源码安装的方式;
源码安装的好处是用户可以自己定制软件功能,安装需要的模块,不需要的功能可以不用安装,此外,用户还可以自己选择安装 路径,方便管理,卸载软件也很方便,
只需删除对应的安装目录即可。没有windows所谓的注册表之说。
源码安装步骤:
-->下载解压源码、分析安装平台环境(ifconfigure)、编译安装软件(make,make install);
(1)下载解压源码:
    linux下软件的源码一般都是C或者C++语言编写的,并且都会在软件的官方网站上提供源码包下载,源码都打包成压缩文件,常见的源码打包压缩格式
有“.tar.gz”、“.tar.baz2”等。我们可以从网站上首先下载源码文件,然后在传到所在的linux系统下,如果你的linux系统处于 联网状态下,也可以
直接在系统内通过wget之类的下载命令将源码包直接下载到linux系统下。
   下载完成,把相应的软件解包即可,针对下载软件包的不同,使用不同的方法进行解压,解压完毕后进入解压生成的目录中,在这个目录下,一般都存在
一个REDAME文件,这个文本文件非常重要,它详细的介绍了这个软件所能完成的功能、授权许可、安装需求、安装注意事项、安装方式等等,由于linux 各个
版本的差异,以及安装环境的不同,软件的安装方式也不尽相同,所以在安装软件前,一定要事先阅读这个README文件,确保安装的正确性。
(2)分析安装平台环境:
在软件包解压完毕之后,我们进入源码目录,一般都会存在configure和README这么两个文件,README就是上面我们讲到的,是对 软件的介绍和安装说明;
linux下软件的安装受到操作系统安装环境的影响,比如某些软件在安装或者运行过程中需要调用操作系统本身的库文件,或者需要运 行系统的某个工具等等,
但是系统中不存在这个库文件或者这个工具没有安装,那么安装或者运行软件就会失败。
   为了避免这个问题的出现,在安装软件的时候就需要分析操作系统环境,检测当前系统是否拥有安装软件所需的所有文件和工具,如果系统缺少某个文件,
就给出提示,直到满足软件的所有需求为止。这个就是configure文件的功能,configure文件一般是个可执行文件,可以在当前目录下直接 输入“./configure”
进行软件安装的环境测试,如果提示缺少某些安装包,就需要进行安装,直到测试通过。通常的,源码安装都需要GCC或者CC 编译器,这些编译器一般在安装系
统时定制安装包中的开发工具选项下,其实这也是我们在第二章安装linux系统中要求选择开发工具包的原因所在。
   此外,在执行configure分析软件需求时,还可以在“./configure”后面加上软件的安装路径以及安装所需的模块等等一些选项,来定制用户需要的软件功能。
(3)编译安装软件:
知识点:在linux系统下,make是我们经常用到的编译命令,无论是安装软件还是项目开发,都会经常用到编译安装命令,也就是make和make install,对于一个包
含很多源文件的应用程序,使用make和makefile工具可以简单快速的解决各个源文件之间复杂的依赖关系,同时,make工具还可以自动完成所有源码文件的编
译工作,并且可以只对上次编译后修改过的文件进行增量编译。
   --> Makefile文件
   make工具最主要的功能就是通过makefile文件来实现的,makefile文件是按照某种语法来进行编写的,文件中定义了各个源文件之间的依赖关系,并说明了如何
编译源文件并生成可执行文件,它通过描述各个源程序之间的关系让make工具自动完成编译工作。
   在linux系统下,习惯用Makefile替代makefile文件,我们在执行configure通过后,就会在当前目录下生成这个文件, 一般情况下在命令行输入make时,make命
令会默认去寻找当前目录下的Makefile文件,如果我们用其它文件作为makefile,就要在 make命令选项后指定makefile文件,例如我们设定编译规则文件为make_file,
就需要使用以下命令指定:
   [root@WEBServer ~]#make -f make_file
》》我们只需在命令行输入make命令,即可进入编译阶段,根据软件源程序的大小和系统的硬件配置,编译时间不定,编译完毕,会在当前目录 以及子目录下生成相应
的可执行文件,接下来就进入最后的安装软件阶段,在命令行输入make install命令,开始安装软件,安装进程会首先创建安装目录,如果我们没有指定安装的目录,安
装程序默认会安装在系统的/usr/local目录下创 建安装目录,然后将相应的文件和可执行程序从源码目录拷贝到安装目录下,这样安装就完毕了。
如:
1. 下载解压apache源码
[root@WEBServer~]#mkdir /apache  #在根目录下创建一个apache目录
[root@WEBServer~]#cd /apache  #切换到apache目录
[root@WEBServer apache]#wget \  #下载apache源码>http://apache.mirror.phpchina.com/httpd/httpd- 2.2.9.tar.bz2
[root@WEBServer apache]#tar -jxvf httpd-2.2.9.tar.bz2 #解压apache源码
[root@WEBServer apache]#ls  #显示解压结果httpd-2.2.9   httpd-2.2.9.tar.bz2
  2. 测试安装环境
  [root@WEBServer apache]#cd httpd-2.2.9 #切换到httpd-2.2.9目录下
[root@WEBServer httpd-2.2.9]#./configure  --prefix=/opt/apache2.2.9 \>--enable-so \>--enable-mods-shared=most \
  >--enable-proxy-balancer=shared \
  >--enable-proxy-http=shared \
  >--enable-proxy-ajp \
  >--enable-rewrite
  注意:上面我们指定apache的安装目录为/opt/apache2.2.9,同时指定需要编译的apache模块。
  下面分别介绍这些模块代表的含义,更详细的请参看apache文档。
  l --enable-so选项:表示让 Apache 可以支持DSO模式,这里采用的是 Apache2.0以后的语法。如果你的Apache 是1.3版本,应改为“--enable-module=so”。
  l --enable-mods-shared=most选项:表示动态编译大部分常用的模块,当然,也可以有选择的加载一些模块,most意思是只包含通常 用的模块,并且以动态加载模式加载。如果用的是 Apache1.3, 改为“--enable-shared=max”即可。
  l --enable-proxy-balancer=shared选项:表示让apache支持负载均衡功能,即动态的编译apache的负载均衡模块。
  l --enable-proxy-http=shared选项:表示动态编译apache的http代理模块。
  l --enable-proxy-ajp选项:表示动态编译apache的proxy-ajp模块。
  l --enable-rewrite选项:让apache支持地址重写功能,即动态编译apache的rewrite模块。
  3.编译安装软件
  [root@WEBServer httpd-2.2.9]#make
  [root@WEBServer httpd-2.2.9]#make install 安装完毕,apache被安装到/opt/apache2.2.9下

3、rpm包安装方式:
--> rpm包简介:
1> RPM是Red Hat Package Manager的缩写,本意就是Redhat软件包管理,是最先由Redhat公司开发出来的linux下软件包管理工具,每个RPM文件中包含了已经编
译好的二进制可执行文件,其实就是将软件源码文件进行编译 安装,然后进行封装,就成了RPM文件,类似与windows安装包中的“.exe”文件。此外RPM文件中还包
含了运行可执行文件所需的其它文件。
2> RPM包管理方式的缺点是对操作系统环境的依赖很大,它要求RPM包的安装环境必须与RPM包封装时的环境相一致或相当。还需要满足安装时与系统某些
软件包的依赖关系,例如需要安装A软件,但是A软件需要系统有B和C软件的支持,那么就必须先安装B和C软件,然后才能安装A软件。这也是我们在用 RPM
包方式安装软件需要特别注意的地方。
3> RPM包的封装格式一般有两种,分别是RPM和SRPM,SRPM包也是一种RPM,但是它包含了编译时的源码文件和一些编译指定的参数文件,因而在使用的时
候需要重新进行编译,通常SRPM对应的RPM文件类似与“xxxxxxxx.src.rpm”格式。
-->RPM工具的使用:
分为安装、查询、验证、更新、删除等操作,下面我们分别介绍。
1. 安装软件包
  命令格式:rpm -i [辅助选项] file1.rpm file2.rpm…..fileN.rpm主选项说明:
   -i:install的意思,就是安装软件。也可以使用“--install”。
  参数说明:file1.rpm file2.rpm…..filen.rpm是指定将要安装RPM包的文件名,可以多个文件一起安装。
  辅助选项说明:这里的选项很多,我们只列出常用选项,详细解释如下:
  l -v:显示附加信息。
  l -h:安装时输出标记“#”。
  l --test:只对安装进行测试,并不实际安装。
  l --nodeps:不检查软件之间的依赖关系。加入此选项可能会导致软件不可用。
  l --force:忽略软件包以及软件冲突。
  l --replacepkgs:强制重新安装已经安装的软件包。
  l --prefix:将软件包安装到由 指定的路径下。
  l --percent:以百分比的形式输出安装的进度。
  l --excludedocs:不安装软件包中的说明文件l --includedocs:安装软件包,包含说明文件。
  举例:
   下面操作显示了安装gcc-3.4.4-2.i386.rpm包过程,在安装过程中,出现了安装包依赖问题,我们的处理过程是这样的:
  [root@server ~]# rpm -ivh gcc-3.4.4-2.i386.rpm执行结果如下:
  warning: gcc-3.4.4-2.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60eerror: Failed dependencies:
  glibc-devel >= 2.2.90-12 is needed by gcc-3.4.4-2.i386Suggested resolutions:
  glibc-devel-2.3.4-2.13.i386.rpm
  这里显示在安装gcc编译器之前需要安装glibc-devel包的支持,这个包详细的版本是glibc-devel-2.3.4-2.13.i386.rpm,因此,我们需要先安装这个软件包。

--> 安装xxxxxx.src.rpm的方法,这里我们以my-package.src.rpm名称为例,在redhat linux i386平台下进行介绍,常用的有两种方法,操作步骤如下:
  方法一:
  1)执行rpm -i my-package.src.rpm
  2) cd /usr/src/redhat/SPECS
  3) rpmbuild -bp my-package.specs 一个和软件包同名的specs文件。
  4) cd /usr/src/redhat/BUILD/my-package/ 一个软件包同名的目录
5) ./configure 这一步和编译普通的源码软件一样,可以加上参数
6) make
7) make install
  方法二:
  1)执行rpm -i my-package.src.rpm
  2)cd /usr/src/redhat/SPECS
   前两步和方法一相同
  3)rpmbuild -bb my-package.specs 一个和软件包同名的specs文件。
   此时,在/usr/src/redhat/RPM/i386/ (这里的路径根据具体包的不同,也可能是i686、noarch等等)在这个目录下,有一个或者两个新的rpm包,
这个是编译好的二进制文件。
  4)执行rpm -i new-package.rpm,安装完成。


2. 查询软件包
  命令格式:rpm -q [辅助选项] package1……packageN主选项说明:
   -q:query的意思,也可以使用“--query”。
  参数说明:package1……packageN为已经安装的软件包名称。
  辅助选项说明:
  (1) -f:查询操作系统中某个文件属于哪个对应的rpm软件包。
  例如:
   [root@localhost ~]# rpm -qf /bin/bash
   bash-3.0-19.2
  (2) -p:查询以“.rpm”为后缀的软件包安装后对应的包名称。
  例如:
   [root@server ~]# rpm -qp gcc-3.4.4-2.i386.rpmgcc-3.4.4-2从这里的查询可以得知,“gcc-3.4.4-2.i386.rpm”安装到系统以后,对应的包名为gcc-3.4.4-2。
  (3) -l:显示软件包中的所有文件列表。此选项后面跟软件包安装后对应的包名,切记不是以“.rpm”为后缀的rpm包。
  例如:
  [root@server ~]# rpm –ql gcc-3.4.4-2
  /usr/bin/c89
  ………(以下省略)………
(4) l -i:显示软件包的概要信息,例如软件名称、版本、适应平台、大小等等。此选项后面跟完整的包名,切忌不是以“.rpm”为后缀的rpm包。
   例如:在得到一个软件,安装之前一般都需要看下软件包有什么内容,可以使用以下命令:
    [root@server ~]# rpm -qi gcc-3.4.4-2.i386
或者[root@server ~]# rpm -qpi gcc-3.4.4-2.i386.rpm   这里由于用到了“-p”选项,首先显示出了安装后的软件包名,所以“-i”选项后可跟“.rpm”结
尾的软件包。
3. 验证软件包
验证已经安装的软件包:校验软件包比较的是某软件包安装的文件和原始软件包中的同一文件的信息是否一致。它校验每个文件的大小、权限、MD5值、
类型、所有者、以及组群。
命令格式:
rpm -V [辅助选项] package1……packageN主选项说明:
   -V:verify的意思,也可以用“--verify”代替。此参数主要校验已经安装的软件包内的文件和最初安装时是否一致。
参数说明:package1……packageN 表示需要校验的且已经安装的软件包名。
4. 更新软件包
   命令格式:
rpm -U [辅助选项] file1.rpm……fileN.rpm主选项说明:
   -U:upgrade的意思,可以使用“--upgrade”代替。
   参数说明:file1.rpm……fileN.rpm表示需要升级的rpm文件包。
例子:我们将rsh从rsh-0.17-25.3升级到rsh-0.17-37.el5,步骤如下:
  [root@localhost ~]# rpm  -q rsh
  rsh-0.17-25.3
  [root@localhost ~]# rpm  -Uvh rsh-0.17-37.el5.i386.rpm






--------------------------------------------------------------
六、系统服务管理:
1. 系统进程管理-命令:
-> ps
显示用户进程
-> ps aux
显示所有运行的进程
-> pstree
树状显示进程内容
-> top:查看进程资源使用情况,查看进程PID
如:
 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                
1503 root      20   0  170m 4320 3484 S  0.0  0.2   0:17.82 vmtoolsd                                                                
2794 db2inst1  20   0 1341m 220m  60m S  0.0 11.8   0:15.52 db2sysc                                                                 
2399 gdm       20   0  340m  12m 9532 S  6.3  0.7   0:13.24 gnome-settings-                                                         
7 root      20   0     0    0    0 S  0.0  0.0   0:12.94 events/0   
下面列出了详细解释。
PID(Process ID):进程标示号。
USER:进程所有者的用户名。
PR:进程的优先级别。
NI:进程的优先级别数值。
VIRT:进程占用的虚拟内存值。
RES:进程占用的物理内存值。
SHR:进程使用的共享内存值。
S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。
%CPU:该进程占用的CPU使用率。
%MEM:该进程占用的物理内存和总内存的百分比。
TIME+:该进程启动后占用的总的CPU时间。
Command:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。
top命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。
<空格>:立刻刷新。
P:根据CPU使用大小进行排序。
T:根据时间、累计时间排序。
q:退出top命令。
m:切换显示内存信息。
t:切换显示进程和CPU状态信息。
c:切换显示命令名称和完整命令行。
M:根据使用内存大小进行排序。
W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。
可以看到,top命令是一个功能十分强大的监控系统的工具,对于系统管理员而言尤其重要。但是,它的缺点是会消耗很多系统资源。
-> free: 用来显示内存的使用情况,使用权限是所有用户。
参数:
-b -k -m:分别以字节(KB、MB)为单位显示内存使用情况。
-s delay:显示每隔多少秒数来显示一次内存使用情况。
-t:显示内存总和列。
-o:不显示缓冲区调节列。
应用实例:
free命令是用来查看内存使用情况的主要命令。和top命令相比,它的优点是使用简单,并且只占用很少的系统资源。通过-S参数可以使用free命令不间断地监视有
多少内存在使用,这样可以把它当作一个方便实时监控器。
#free -b -s5
使用这个命令后终端会连续不断地报告内存使用情况(以字节为单位),每5秒更新一次。
-> at:用来在【指定时刻】执行指定的命令序列。
格式: t [-V] [-q x] [-f file] [-m] time
主要参数:
-V:显示标准错误输出。
-q:许多队列输出。
-f:从文件中读取作业。
-m:执行完作业后发送电子邮件到用户。
time:设定作业执行的时间。time格式有严格的要求,由小时、分钟、日期和时间的偏移量组成,其中日期的格式为MM.DD.YY,MM是分钟,DD是日期,YY是指年份。
偏移量的格式为时间+偏移量,单位是minutes、hours和days。
应用实例:
#at -f data 15:30 +2 days
上面命令表示让系统在两天后的17:30执行文件data中指明的作业。
-> crontab:使用crontab命令可以修改crontab配置文件,然后该配置由cron公用程序在适当的时间执行,该命令使用权限是所有用户。
和at命令相比,crontab命令适合完成固定周期的任务。
格式:
crontab [ -u user ] 文件
crontab [ -u user ] { -l | -r | -e }
主要参数:
-e:执行文字编辑器来设定时程表,内定的文字编辑器是vi。
-r:删除目前的时程表。
-l:列出目前的时程表。
crontab 文件的格式为“M H D m d cmd”。其中,M代表分钟(0~59),H代表小时(0~23),D代表天(1~31),m代表月(1~12),d代表一星期内的天(0~6,0为
星期 天)。cmd表示要运行的程序,它被送入sh执行,这个Shell只有USER、HOME、SHELL三个环境变量。
应用实例:
设置一个定时、定期的系统提示:
[cao @www cao]#crontab -e
此时系统会打开一个vi编辑器。
如果输入以下内容:35 17 * * 5 wall "Tomorrow is Saturday I will go CS",然后存盘退出。这时在/var/spool/cron/目录下会生产一个cao的文件,内容如下:
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.2707 installed on Thu Jan 1 22:01:51 2004)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
35 17 * * 5 wall "Tomorrow is Saturday I will play CS "
这样每个星期五17:35系统就会弹出一个终端,提醒星期六可以打打CS了!
-> lsof
查看正在运行中的进程打开了哪些文件、目录和套接字 
-> kill:用来中止一个进程。
格式:kill [ -s signal | -p ] [ -a ] pid ...
 kill -l [ signal ]
3.参数
-s:指定发送的信号。
-p:模拟发送信号。
-l:指定信号的名称列表。
pid:要中止进程的ID号。
Signal:表示信号。
应用实例:
(1)强行中止(经常使用杀掉)一个进程标识号为324的进程:
#kill -9 324
(2)解除Linux系统的死锁
在Linux 中有时会发生这样一种情况:一个程序崩溃,并且处于死锁的状态。此时一般不用重新启动计算机,只需要
中止(或者说是关闭)这个有问题的程序即可。当 kill处于X-Window界面时,主要的程序(除了崩溃的程序之外)一般都
已经正常启动了。此时打开一个终端,在那里中止有问题的程序。比如,如果 Mozilla浏览器程序出现了锁死的情况,
可以使用kill命令来中止所有包含有Mozolla浏览器的程序。首先用top命令查处该程序的PID,然 后使用kill命令停止这个程序:
#kill -SIGKILL XXX
其中,XXX是包含有Mozolla浏览器的程序的进程标识号。
(3)使用命令回收内存
我们知道内存对于系统是非常重要的,回收内存可以提高系统资源。kill命令可以及时地中止一些“越轨”的程序或很长时间
没有相应的程序。例如,使用top命令发现一个无用 (Zombie) 的进程,此时可以使用下面命令:
#kill -9 XXX
其中,XXX是无用的进程标识号。
然后使用下面命令:
#free
此时会发现可用内存容量增加了。
(4)killall命令
Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如:
# killall -HUP inetd
-> killall
根据名称杀掉一组线程 
-> ctrl + z
停止进程
-> jobs
显示停止的进程
-> fg
将停止的进程调到前台来运行
-> bg
将停止的进程放在后台运行
2. df:用来检查文件系统的磁盘空间占用情况,使用权限是所有用户。
格式:df [options]
主要参数
-s:对每个Names参数只给出占用的数据块总数。
-a:递归地显示指定目录中各文件及子目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数。
-k:以1024字节为单位列出磁盘空间使用情况。
-x:跳过在不同文件系统上的目录不予统计。
-l:计算所有的文件大小,对硬链接文件则计算多次。
-i:显示inode信息而非块使用量。
-h:以容易理解的格式印出文件系统大小,例如136KB、254MB、21GB。
-P:使用POSIX输出格式。
-T:显示文件系统类型。
说明
df命令被广泛地用来生成文件系统的使用统计数据,它能显示系统中所有的文件系统的信息,包括总容量、可用的空闲空间、目前的安装点等。
超级权限用户使用df命令时会发现这样的情况:某个分区的容量超过了100%。这是因为Linux系统为超级用户保留了10%的空间,由其单独支 配。也就是说,对于超级用户
而言,他所见到的硬盘容量将是110%。这样的安排对于系统管理而言是有好处的,当硬盘被使用的容量接近100%时系统管理员 还可以正常工作。
应用实例
Linux支持的文件系统非常多,包括JFS、ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、vfat、MSDOS等。
使用df -T命令查看磁盘空间时还可以得到文件系统的信息:
#df -T
如下:
[root@localhost lee]# df -T
Filesystem    Type   1K-blocks      Used Available Use% Mounted on
文件系统      类型  容量           已用  可用    已用% 挂载点
/dev/sda3     ext4    78233552   4796460  69463000   7% /
tmpfs        tmpfs      957344        76    957268   1% /dev/shm
/dev/sda1     ext4      297485     37157    244968  14% /boot
----------------------------------------------------------------------
七、其他
1. hostname:显示主机名称
-->hostname:显示主机名称 ;
-->hostname name1:修改主机名称;
2. who:显示目前登录系统的用户
-->who : 显示登录系统的用户 ,仅显示用户名、登录时间、终端类型
-->w : 显示登录系统的用户 ,显示用户名、登录时间、终端类型、CPU使用、目前操作,同时显示系统运行总时间以及负载情况;
-->who -r : 显示当前的RUNLEVEL;
3. last : 显示过去以及目前登录系统的用户
4. date: 显示系统当前时间
date  112711162007 : 设置系统当前时间
5. hwclock : 查询硬件时间
hwclock –s : 将硬件时钟同步到系统时钟
6.获取系统硬件信息 :
--> uname -a
获取操作系统版本相关信息
--> cat /proc/cpuinfo 
获取系统CPU信息
--> cat /proc/meminfo  
获取系统内存信息
--> cat /proc/partitions  
获取系统设备分区信息
--> lspci 
获取系统PCI设备信息
7.exit:退出当前的shell。
8.halt
功能说明:关闭系统。
语  法:halt [-dfinpw]
补充说明:halt会先检测系统的runlevel。若runlevel为0或6,则关闭系统,否则即调用shutdown来关闭系统。
参  数:
 -d  不要在wtmp中记录。 
 -f  不论目前的runlevel为何,不调用shutdown即强制关闭系统。 
 -i  在halt之前,关闭全部的网络界面。 
 -n  halt前,不用先执行sync。 
 -p  halt之后,执行poweroff。 
 -w  仅在wtmp中记录,而不实际结束系统。
9.login:登入系统。
--> login指令让用户登入系统,您亦可通过它的功能随时更换登入身份。
补充:当已经登录时,login和exit都是关闭连接,退到:Xshell:\> ,
 当  Xshell:\>  再执行exit 会关闭shell窗口;
10.logout:退出系统(和login相同其实)。
11.reboot:重新开机;
12.shutdown:关机;(使用权限是超级用户,即root用户)
13.su :变更用户身份;
-------------------------------------------------------------
补充一:
一、 mount
1.作用
mount命令的作用是加载文件系统,其使用权限是超级用户或/etc/fstab中允许的使用者。
2.格式
mount -a [-fv] [-t vfstype] [-n] [-rw] [-F] device dir
3.主要参数
-h:显示辅助信息。
-v:显示信息,通常和-f用来除错。
-a:将/etc/fstab中定义的所有文件系统挂上。
-F:这个命令通常和-a一起使用,它会为每一个mount的动作产生一个行程负责执行。在系统需要挂上大量NFS文件系统时可以加快加载的速度。
-f:通常用于除错。它会使mount不执行实际挂上的动作,而是模拟整个挂上的过程,通常会和-v一起使用。
-t vfstype:显示被加载文件系统的类型。
-n:一般而言,mount挂上后会在/etc/mtab中写入一笔资料,在系统中没有可写入文件系统的情况下,可以用这个选项取消这个动作。
4.应用技巧
在Linux和Unix系统上,所有文件都是作为一个大型树(以/为根)的一部分访问的。要访问CD-ROM上的文件,需要将CD-ROM设备挂装 在文件树中的某
个挂装点。如果发行版安装了自动挂装包,那么这个步骤可自动进行。在Linux中,如果要使用硬盘、光驱等储存设备,就得先将它加载,当储存设备
挂上了之后,就可以把它当成一个目录来访问。挂上一个设备使用mount命令。在使用mount这个指令时,至少要先知道下列三种信息:要加载对象 的
文件系统类型、要加载对象的设备名称及要将设备加载到哪个目录下。
(1)Linux可以识别的文件系统
◆ Windows 95/98常用的FAT 32文件系统:vfat ;
◆ Win NT/2000 的文件系统:ntfs ;
◆ OS/2用的文件系统:hpfs;
◆ Linux用的文件系统:ext2、ext3;
◆ CD-ROM光盘用的文件系统:iso9660。
虽然vfat是指FAT 32系统,但事实上它也兼容FAT 16的文件系统类型。
(2)确定设备的名称
在Linux中,设备名称通常都存在/dev里。这些设备名称的命名都是有规则的,可以用“推理”的方式把设备名称找出来。例如,/dev /hda1这个 IDE设备,
hd是Hard Disk(硬盘)的,sd是SCSI Device,fd是Floppy Device(或是Floppy Disk?)。a代表第一个设备,通常IDE接口可以接上4个IDE设备(比如4块硬盘)。
所以要识别IDE硬盘的方法分别就是hda、hdb、hdc、 hdd。hda1中的“1”代表hda的第一个硬盘分区 (partition),hda2代表hda的第二主分区,第一个逻辑分
区从hda5开始,依此类推。此外,可以直接检查/var/log /messages文件,在该文件中可以找到计算机开机后系统已辨认出来的设备代号。
(3)查找挂接点
在决定将设备挂接之前,先要查看一下计算机是不是有个/mnt的空目录,该目录就是专门用来当作挂载点(Mount Point)的目录。建议在/mnt里建几个/mnt/cdrom、
/mnt/floppy、/mnt/mo等目录,当作目录的专用挂载点。举例而言,如要挂载下列5个设备,其执行指令可能如下 (假设都是Linux的ext2系统,如果是Windows XX
请将ext2改成vfat):
软盘 ===>mount -t ext2 /dev/fd0 /mnt/floppy
cdrom ===>mount -t iso9660 /dev/hdc /mnt/cdrom
SCSI cdrom ===>mount -t iso9660 /dev/sdb /mnt/scdrom
SCSI cdr ===>mount -t iso9660 /dev/sdc /mnt/scdr
不过目前大多数较新的Linux发行版本(包括红旗 Linux、中软Linux、Mandrake Linux等)都可以自动挂装文件系统,但Red Hat Linux除外。
二、 umount
1.作用
umount命令的作用是卸载一个文件系统,它的使用权限是超级用户或/etc/fstab中允许的使用者。
2.格式
unmount -a [-fFnrsvw] [-t vfstype] [-n] [-rw] [-F] device dir
3.使用说明
umount命令是mount命令的逆操作,它的参数和使用方法和mount命令是一样的。Linux挂装CD-ROM后,会锁定CD—ROM,这 样就不能用CD-ROM面板上的Eject按钮弹出它。
但是,当不再需要光盘时,如果已将/cdrom作为符号链接,请使用umount/cdrom来卸 装它。仅当无用户正在使用光盘时,该命令才会成功。该命令包括了将带有当前
工作目录当作该光盘中的目录的终端窗口。
--> 许多Linux发行版本现在都可以自动加载Vfat分区来访问Windows系统,而Red Hat各个版本都没有自动加载Vfat分区,因此还需要进行手工操作。
mount可以将Windows分区作为Linux的一个“文件”挂接到Linux的一个空文件夹下,从而将Windows的分区和/mnt这个目 录联系起来。
因此,只要访问这个文件夹就相当于访问该分区了。首先要在/mnt下建立winc文件夹,在命令提示符下输入下面命令:
#mount -t vfat /dev/hda1 /mnt/winc
即表示将Windows的C分区挂到Liunx的/mnt/winc目录下。这时,在/mnt/winc目录下就可以看到Windows中C盘的内 容了。
使用类似的方法可以访问Windows系统的D、E盘。在Linux系统显示Windows的分区一般顺序这样的:hda1为C盘、hda5为D 盘、 hda6为E盘……以此类推。
上述方法可以查看Windows系统有一个很大的问题,就是Windows中的所有中文文件名或文件夹名全部显示为问号 “?”,而英文却可以正常显示。
我们可以通过加入一些参数让它显示中文。还以上面的操作为例,此时输入命令:
#mount -t vfat -o iocharset=cp936 /dev/hda1 /mnt/winc
现在它就可以正常显示中文了。
三、查询黑客入侵现象的命令对应表
举例说明,如果黑客嗅探网络,那么它必须使网卡接口处于混杂模式,使用下面命令进行查询:
#ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:00:E8:A0:25:86
inet addr:192.168.1.7 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING PROMISCUOUS MTU:1500 Metric:1
......
从这个命令的输出中,可以看到上面讲到的这些概念。第一行的00:00:E8:A0:25:86是mac地址,第二行的192.168.1.7是 IP地址,第四行讲的是接收
数据状态,这时正在被黑客嗅探。一般而言,网卡有几种接收数据帧的状态,如Broadcast、Multicast、 Promiscuous等。Broadcast是指接收所有
类型为广播报文的数据帧;Multicast是指接收特定的组播报文;Promiscuous 则是通常说的混杂模式,是指对报文中的目的硬件地址不加任何检查、
全部接收的工作模式。
限制su命令的滥用
我们知道,超级用户在Linux中有最大的权利,几乎所有黑客都想得到这个目标。Linux可以增加对切换到超级用 户的限制。使用PAM 
(Pluggable Authentication Modules)可以禁止除在wheel组以外的任何人su成root,修改/etc/pam.d/su文件,除去屏蔽标识#。
使用 /usr/sbin/usermod G10 bjecadm将bjecadm这个账号加入gid为10的组,就是wheel组。命令如下:
/etc/pam.d/su # 使用密码验证#
auth sufficient /lib/security/pam_wheel.so debug
# 限制只有wheel组用户才可以切换到root#
auth required /lib/security/pam_wheel.so use_uid
chmod -G10 bjecadm
另外,每当用户试图使用su命令进入系统用户时,命令将在/usr/adm/sulog文件中写一条信息,若该文件记录了大量试图用su进入root的无效操作信息,
则表明了可能有人企图破译root口令。
Linux命令有着强大的功能。对于Linux系统管理员来说,往往只需要通过各种安全命令技巧,组合构成安全防线。从计算机安全的角度看,
世界上没有绝对安全的计算机系统,Linux系统也不例外。
四、压缩与解压缩:
1. gzip(gnu zip)
功能说明:压缩文件,gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出".gz"的扩展名
语  法:gzip [-acdfhlLnNqrtvV][-S <压缩字尾字符串>][-<压缩效率>][--best/fast][文件...] 
 或 gzip [-acdfhlLnNqrtvV][-S <压缩字尾字符串>][-<压缩效率>][--best/fast][目录]
参  数:
 -a或--ascii  使用ASCII文字模式。 
 -c或--stdout或--to-stdout  把压缩后的文件输出到标准输出设备,不去更动原始文件。 
 -d或--decompress或----uncompress  解开压缩文件。 
 -f或--force  强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接。 
 -h或--help  在线帮助。 
 -l或--list  列出压缩文件的相关信息。 
 -L或--license  显示版本与版权信息。 
 -n或--no-name  压缩文件时,不保存原来的文件名称及时间戳记。 
 -N或--name  压缩文件时,保存原来的文件名称及时间戳记。 
 -q或--quiet  不显示警告信息。 
 -r或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。 
 -S<压缩字尾字符串>或----suffix<压缩字尾字符串>  更改压缩字尾字符串。 
 -t或--test  测试压缩文件是否正确无误。 
 -v或--verbose  显示指令执行过程。 
 -V或--version  显示版本信息。 
 -<压缩效率>  压缩效率是一个介于1-9的数值,预设值为"6",指定愈大的数值,压缩效率就会愈高。 
 --best  此参数的效果和指定"-9"参数相同。 
 --fast  此参数的效果和指定"-1"参数相同。
2. gunzip(gnu unzip)
功能说明:解压文件,gunzip是个使用广泛的解压缩程序,它用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为".gz"。
         事实上gunzip就是gzip的硬连接,因此不论是压缩或解压缩,都可通过gzip指令单独完成。
语  法:gunzip [-acfhlLnNqrtvV][-s <压缩字尾字符串>][文件...] 或 gunzip [-acfhlLnNqrtvV][-s <压缩字尾字符串>][目录]
参  数:
 -a或--ascii  使用ASCII文字模式。 
 -c或--stdout或--to-stdout  把解压后的文件输出到标准输出设备。 
 -f或-force  强行解开压缩文件,不理会文件名称或硬连接是否存在以及该文件是否为符号连接。 
 -h或--help  在线帮助。 
 -l或--list  列出压缩文件的相关信息。 
 -L或--license  显示版本与版权信息。 
 -n或--no-name  解压缩时,若压缩文件内含有远来的文件名称及时间戳记,则将其忽略不予处理。 
 -N或--name  解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其回存到解开的文件上。 
 -q或--quiet  不显示警告信息。 
 -r或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。 
 -S<压缩字尾字符串>或--suffix<压缩字尾字符串>  更改压缩字尾字符串。 
 -t或--test  测试压缩文件是否正确无误。 
 -v或--verbose  显示指令执行过程。 
 -V或--version 显示版本信息。
3. zip:
功能说明:压缩文件,zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有".zip"扩展名的压缩文件。
语  法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>]
参  数:
 -A   调整可执行的自动解压缩文件。
 -b<工作目录>   指定暂时存放文件的目录。
 -c   替每个被压缩的文件加上注释。
 -d   从压缩文件内删除指定的文件。
 -D   压缩文件内不建立目录名称。
 -f   此参数的效果和指定"-u"参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。
 -F   尝试修复已损坏的压缩文件。
 -g   将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。
 -h   在线帮助。
 -i<范本样式>   只压缩符合条件的文件。
 -j   只保存文件名称及其内容,而不存放任何目录名称。
 -J   删除压缩文件前面不必要的数据。
 -k   使用MS-DOS兼容格式的文件名称。
 -l   压缩文件时,把LF字符置换成LF+CR字符。
 -ll   压缩文件时,把LF+CR字符置换成LF字符。
 -L   显示版权信息。
 -m   将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。
 -n<字尾字符串>   不压缩具有特定字尾字符串的文件。
 -o   以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。
 -q   不显示指令执行过程。
 -r   递归处理,将指定目录下的所有文件和子目录一并处理。
 -S   包含系统和隐藏文件。
 -t<日期时间>   把压缩文件的日期设成指定的日期。
 -T   检查备份文件内的每个文件是否正确无误。
 -u   更换较新的文件到压缩文件内。
 -v   显示指令执行过程或显示版本信息。
 -V   保存VMS操作系统的文件属性。
 -w   在文件名称里假如版本编号,本参数仅在VMS操作系统下有效。
 -x<范本样式>   压缩时排除符合条件的文件。
 -X   不保存额外的文件属性。
 -y   直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。
 -z   替压缩文件加上注释。
 -$   保存第一个被压缩文件所在磁盘的卷册名称。
 -<压缩效率>   压缩效率是一个介于1-9的数值。
4. unzip:
功能说明:解压缩zip文件,unzip为.zip压缩文件的解压缩程序。
语  法:unzip [-cflptuvz][-agCjLMnoqsVX][-P <密码>][.zip文件][文件][-d <目录>][-x <文件>] 或 unzip [-Z]
参  数:
 -c   将解压缩的结果显示到屏幕上,并对字符做适当的转换。
 -f   更新现有的文件。
 -l   显示压缩文件内所包含的文件。
 -p   与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。
 -t   检查压缩文件是否正确。
 -u   与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。
 -v   执行是时显示详细的信息。
 -z   仅显示压缩文件的备注文字。
 -a   对文本文件进行必要的字符转换。
 -b   不要对文本文件进行字符转换。 
 -C   压缩文件中的文件名称区分大小写。
 -j   不处理压缩文件中原有的目录路径。
 -L   将压缩文件中的全部文件名改为小写。
 -M   将输出结果送到more程序处理。
 -n   解压缩时不要覆盖原有的文件。
 -o   不必先询问用户,unzip执行后覆盖原有文件。
 -P<密码>   使用zip的密码选项。
 -q   执行时不显示任何信息。
 -s   将文件名中的空白字符转换为底线字符。
 -V   保留VMS的文件版本信息。
 -X   解压缩时同时回存文件原来的UID/GID。
 [.zip文件]   指定.zip压缩文件。
 [文件]   指定要处理.zip压缩文件中的哪些文件。
 -d<目录>   指定文件解压缩后所要存储的目录。
 -x<文件>   指定不要处理.zip压缩文件中的哪些文件。
 -Z   unzip -Z等于执行zipinfo指令。
5.tar:用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。









































  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值