练习三:图形桌面的使用

   1)用户界面的切换(图形<-->字符终端、字符终端<-->字符终端)

      图形界面 --> 字符终端:Ctrl+Alt+Fn

      字符终端 --> 字符终端:Alt+Fn

      字符终端 --> 图形界面:Alt+F1

   2)运行gnome-terminal,修改一下界面字体、字号

 

练习五:简单命令练习

    1)查看内核版本(uname)

    2)查看红帽系统版本(cat   /etc/redhat-release)

    3)查看及修改主机名(hostname)

    4)查看及修改第一块网卡的IP地址(ifconfig)

    5)清屏操作(clear、Ctrl+l快捷键)

    6)查看CPU信息(cat  /proc/cpuinfo)

         processor:CPU核心的编号

         physicalid:物理CPU的编号

         modelname:品牌、型号、频率

         cpuMHz:工作频率

         cachesize:缓存大小   

    7)查看内存信息(cat  /proc/meminfo)

         MemTotal:物理内存的总大小

         MemFree:空闲的物理内存大小

         SwapTotal:交换空间(虚拟内存)的总大小

         SwapFree:空闲的交换空间(虚拟内存)大小

    8)关机操作

         shutdown   -h  now

         poweroff

         init  0

    9)重启操作

         shutdown   -r  now

         reboot

         init  6

   10)延迟关机或重启操作

         shutdown  -h +15  'Host will be rebooted !!'

         shutdown  -r  +15  'Host will be rebooted !!'

        

练习六:命令练习

    1)查看当前系统日期/时间(date)

    2)查看日历(cal)

    3)计算器(bc)

    4)查看目录列表(ls)                list

    5)切换目录(cd)                          Change Directory

6)查看当前在哪个工作目录(pwd)     Print Working Directory

 

 

练习一:命令格式练习

     1)查看根目录下有哪些子目录

[root@localhost/]# ls /

     2)查看/boot文件夹下的内容,以长格式显示、带-k等易读单位

[root@localhost/]# ls -lh /boot/

     3)查看当前目录下的所有内容

[root@localhost/]# ls   

 

练习二:命令行快捷编辑

     1)利用自动补齐查看文件/etc/sysconfig/network-scripts/ifcfg-eth0

         ls -l  /etc/.. ..  、cat  /etc/.. ..

     2)列出以if、fd开头的命令程序

[root@localhost/]# if

if         ifcfg      ifconfig  ifdown     ifenslave  ifrename  ifup      

[root@localhost/]# fd

fdformat  fdisk    

[root@localhost/]#

     4)利用 \ 强制换行,拆分“命令字  选项  参数”

[root@localhost/]# shutdown \

> -k \

> now

[root@localhost/]#

Broadcastmessage from root@localhost.localdomain

        (/dev/pts/0) at 17:49 ...

 

The system isgoing down for maintenance NOW!

 

练习三:内部命令、外部命令的基本帮助

    1)查看内部命令cd、pwd、type的帮助信息

[root@localhost/]# help cd

[root@localhost/]# help pwd

[root@localhost/]# help type

    2)查看外部命令uname、ls的帮助信息

[root@localhost/]# uname --help

[root@localhost/]# ls --help

    3)检查命令echo、cd、cat、hostname的类型

[root@localhost~]# type echo   #有builtin为内部命令

echo is a shellbuiltin

[root@localhost~]# type cd     #有builtin为内部命令

cd is a shellbuiltin

[root@localhost~]# type cat    #出现具体路径为外部命令

cat is /bin/cat

[root@localhost~]# type hostname   #出现具体路径为外部命令

hostname is/bin/hostname

 

    4)查看echo、exit命令的用法,学会其基本操作

[root@localhost~]# help echo

[root@localhost~]# type exit

exit is a shellbuiltin

[root@localhost~]# help exit

exit: exit [n]

    Exit the shell.

   

    Exits the shell with a status of N.  If N is omitted, the exit status

    is that of the last command executed.

[root@localhost~]#

 

 

练习四:man帮助的用法

    1)使用man查阅ls命令的帮助,了解-A、-a选项的作用

[root@localhost~]# man ls  #通过“/-A”与“/-a”查找

    2)学会使用man查看指定系统文件(passwd)的帮助

[root@localhost~]# man 5 passwd

    3)使用man查阅并学会passwd、cat命令的基本用法

[root@localhost~]# man passwd

[root@localhost~]# man cat

 

练习五:cd、pwd、ls基本操作

    1)进入到/etc/pki/CA/private/ 目录,确认当前所在文件夹

[root@localhost~]# cd /etc/pki/CA/private/

[root@localhostprivate]# pwd

/etc/pki/CA/private

[root@localhostprivate]#

    2)以相对路径方式查看 /etc/pki/ 文件夹下的所有内容

[root@localhost/]# pwd

/

[root@localhost/]# cd /etc/

[root@localhostetc]# ls pki/

CA  ca-trust entitlement  java  nssdb product  rpm-gpg  rsyslog tls

[root@localhostetc]#

    3)切换到上上一层文件夹,确认当前所在文件夹

[root@localhostetc]# pwd

/etc

[root@localhostetc]# cd ../..

[root@localhost/]# pwd

/

[root@localhost /]#

    4)分别以相对路径、绝对路径的方式查看/root/install.log文件的大小

[root@localhost/]# ls -lh /root/install.log     #绝对路径

-rw-r--r--. 1root root 39K 1月  14 17:22 /root/install.log

[root@localhost/]# cd /root/

[root@localhost~]# ls -lh install.log          #相对路径

-rw-r--r--. 1root root 39K 1月  14 17:22 install.log

[root@localhost~]#

    5)进入root的家目录、再进入到用户zhangsan的家目录

[root@localhost/]# cd ~root

[root@localhost~]# pwd

/root

[root@localhost~]#

[root@localhost~]# useradd zhangsan   #创建zhangsan用户

[root@localhost~]# ls /home/

zhangsan

[root@localhost~]# cd ~zhangsan

[root@localhostzhangsan]# pwd

/home/zhangsan

[root@localhostzhangsan]#

    6)在用户root、zhangsan的家目录之间来回切换(本题主要考察cd -)

 

 

练习六:命令别名(alias、unalias)

    1)创建一个别名 cq,执行cq的时候延迟15分钟重启

[root@localhost~]# alias

alias cp='cp -i'

alias l.='ls -d.* --color=auto'

alias ll='ls -l--color=auto'

alias ls='ls--color=auto'

alias mv='mv -i'

alias rm='rm -i'

aliaswhich='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

[root@localhost~]# cq

-bash: cq:command not found

[root@localhost~]# alias cq="shutdown -r +15"

[root@localhost~]# alias

alias cp='cp -i'

aliascq='shutdown -r +15'

alias l.='ls -d.* --color=auto'

alias ll='ls -l--color=auto'

alias ls='ls--color=auto'

alias mv='mv -i'

alias rm='rm -i'

aliaswhich='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

[root@localhost~]# cq

 

Broadcastmessage from root@localhost.localdomain

        (/dev/pts/1) at 21:38 ...

 

The system isgoing down for reboot in 15 minutes!

^Cshutdown:Shutdown cancelled    #按Ctrl+C结束

[root@localhost~]#

    2)创建一个别名 lsb,执行lsb的时候能够输出当前Linux标准分发版的描述信息

[root@localhost~]# alias lsb="cat /etc/redhat-release"

[root@localhost~]# lsb

Red HatEnterprise Linux Server release 6.5 (Santiago)

[root@localhost~]#

 

练习七:Shell通配符操作(*、?、[a-z]、{word1,word7,wordx .. ..})

    1)列出 /etc/目录下扩展名是 .conf的文件

[root@localhost~]# ls /etc/*.conf

    2)列出 /boot/ 目录下以 vmlin 开头的文件

[root@localhost~]# ls /boot/vmlin*

    3)列出/dev/目录下虚拟控制台(tty)设备文件

         a)只看其中编号是个位数的tty设备(两种方法)

[root@localhost~]# ls /dev/tty?

/dev/tty0  /dev/tty2 /dev/tty4  /dev/tty6  /dev/tty8

/dev/tty1  /dev/tty3 /dev/tty5  /dev/tty7  /dev/tty9

[root@localhost~]# ls /dev/tty[0-9]

/dev/tty0  /dev/tty2 /dev/tty4  /dev/tty6  /dev/tty8

/dev/tty1  /dev/tty3  /dev/tty5 /dev/tty7  /dev/tty9

[root@localhost~]#

         b)只看其中tty1-tty6这六个终端

[root@localhost~]# ls /dev/tty[1-6]

         c)只看其中编号是两个字符的tty设备

[root@localhost~]# ls /dev/tty??

    4)分别列出系统中的IDE、SCSI接口的硬盘设备

[root@localhost~]# ls /dev/sd*  #所有SCSI接口的设备

[root@localhost~]# ls /dev/hd*  #所有IDE接口的设备

ls: 无法访问/dev/hd*:没有那个文件或目录

[root@localhost~]#

    5)长格式列出/usr/local/目录下的bin、sbin、etc、share目录的属性

[root@localhost~]# ls -ld /usr/local/{bin,sbin,etc,share}

drwxr-xr-x. 2root root 4096 6月  28 2011 /usr/local/bin

drwxr-xr-x. 2root root 4096 6月  28 2011 /usr/local/etc

drwxr-xr-x. 2root root 4096 6月  28 2011 /usr/local/sbin

drwxr-xr-x. 5root root 4096 1月  14 17:11 /usr/local/share

[root@localhost~]#

 

练习八:统计目录或文件的磁盘占用(du  -sh  .. ..)

    1)统计管理程序目录/sbin/ 、/usr/sbin/ 各自占用的总空间大小

[root@localhost~]# du -sh /sbin/ /usr/sbin/

15M     /sbin/

44M     /usr/sbin/

[root@localhost~]#

    2)统计 /root/ 、/etc/ 目录各自占用的总空间大小

[root@localhost~]# du -sh /root/ /etc/

1.3M    /root/

36M     /etc/

[root@localhost~]#

 3)统计整个根目录占用的空间大小 (因为proc为为文件系统,有一些文件没有找到为正常)

[root@localhost~]# du -sh /

du: 无法访问"/proc/1713/task/1713/fd/4":没有那个文件或目录

du: 无法访问"/proc/1713/task/1713/fdinfo/4":没有那个文件或目录

du: 无法访问"/proc/1713/fd/4":没有那个文件或目录

du: 无法访问"/proc/1713/fdinfo/4":没有那个文件或目录

2.1G    /

[root@localhost~]#

 

 

练习九:创建目录/文件(mkdir、touch)

    1)在 /opt/ 下创建子目录tarena/nsd

[root@localhost~]# rm -rf /opt/*

[root@localhost~]# ls /opt/

[root@localhost~]# mkdir -p /opt/tarena/nsd

[root@localhost~]# ls -R /opt/

/opt/:

tarena

 

/opt/tarena:

nsd

 

/opt/tarena/nsd:

[root@localhost~]#

 

    2)在 /opt/tarena/nsd 下创建2个空文件,yourname.txt、cake.doc

[root@localhost~]# ls /opt/tarena/nsd/

[root@localhost~]# touch /opt/tarena/nsd/yourname.txt /opt/tarena/nsd/cake.doc

[root@localhost~]# ls /opt/tarena/nsd/

cake.doc  yourname.txt

[root@localhost~]#

    3)在/opt下递归创建a/b/c

[root@localhost~]# mkdir -p /opt/a/b/c

 

 

练习十:创建软链接文件(快捷方式)

    1)为文件/etc/sysconfig/network-scripts/ifcfg-eth0 建一个快捷方式

         存放到 /etc/ifcfg-eth0

[root@localhost~]# ln -s /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/ifcfg-eth0

[root@localhost~]# ls -l /etc/ifcfg-eth0

lrwxrwxrwx. 1root root 41 1月  27 21:52 /etc/ifcfg-eth0-> /etc/sysconfig/network-scripts/ifcfg-eth0

[root@localhost~]#

    2)为目录/etc/sysconfig/network-scripts 建一个快捷方式

         存放到 /etc/netconf

[root@localhost~]# ln -s /etc/sysconfig/network-scripts/ /etc/netconf

[root@localhost~]# ls -l /etc/netconf

lrwxrwxrwx. 1root root 31 1月  27 21:52 /etc/netconf ->/etc/sysconfig/network-scripts/

[root@localhost~]#

 

 

练习十一:复制、删除、移动

    1)在当前目录下创建一个子目录 dir1

[root@localhost~]# cd /opt/

[root@localhostopt]# pwd

/opt

[root@localhostopt]# mkdir dir1

[root@localhostopt]# ls

a  dir1 tarena

[root@localhostopt]#

    2)将文件夹 /boot/grub/ 复制到目录dir1下

[root@localhostopt]# ls /opt/dir1/

[root@localhostopt]# cp -r /boot/grub/ /opt/dir1/

[root@localhostopt]# ls /opt/dir1/

grub

[root@localhostopt]#

    3)切换到/root/目录,将当前目录下以install开头的文件复制到dir1下

[root@localhostopt]# pwd

/opt

[root@localhostopt]# cd /root/

[root@localhost~]# pwd

/root

[root@localhost~]# cp install* /opt/dir1/

[root@localhost~]# ls /opt/dir1/

grub  install.log install.log.syslog

[root@localhost~]#

    4)将/etc/redhat-release文件复制到/root/目录下,同时改名为rv.txt

[root@localhost~]# cp /etc/redhat-release /root/rv.txt

[root@localhost~]# ls /root/rv.txt

/root/rv.txt

[root@localhost~]#

    5)将/root/rv.txt文件移动到dir1目录下,名称不变

[root@localhost~]# mv /root/rv.txt /opt/dir1/

[root@localhost~]# ls /opt/dir1/

grub  install.log install.log.syslog  rv.txt

[root@localhost~]#

    6)将dir1/目录下的文件install.log改名为inst.txt

[root@localhost~]# mv /opt/dir1/install.log /opt/dir1/inst.txt

[root@localhost~]# ls /opt/dir1/

grub  install.log.syslog  inst.txt rv.txt

[root@localhost~]#

    7)将目录dir1复制一份,名称设为dir2

[root@localhost~]# cd /opt/

[root@localhostopt]# pwd

/opt

[root@localhostopt]# cp -r dir1/ dir2

[root@localhostopt]# ls

a  dir1 dir2  tarena

[root@localhostopt]#

    8)删除dir2/目录下以inst开头的文件,确认结果

[root@localhostopt]# ls /opt/dir2

grub  install.log.syslog  inst.txt rv.txt

[root@localhostopt]# rm -rf /opt/dir2/inst*

[root@localhostopt]# ls /opt/dir2

grub  rv.txt

[root@localhostopt]#

    9)删除整个dir2/文件夹

[root@localhostopt]# rm -rf /opt/dir2

[root@localhostopt]# ls -ld /opt/dir2

ls: 无法访问/opt/dir2:没有那个文件或目录

[root@localhost opt]#

    10)将dir1目录改名为mydir01

[root@localhostopt]# ls /opt/

a  dir1 tarena

[root@localhostopt]# mv /opt/dir1/ /opt/mydir01

[root@localhostopt]# ls /opt/

a  mydir01 tarena

[root@localhostopt]#

 

练习三:添加并测试用户账号

    1)创建一个名为stu01的用户账号

[root@localhost~]# useradd stu01

[root@localhost~]# grep stu01 /etc/passwd /etc/shadow

/etc/passwd:stu01:x:500:500::/home/stu01:/bin/bash

/etc/shadow:stu01:!!:16463:0:99999:7:::

[root@localhost~]#

    2)检查/etc/passwd、/etc/shadow文件的最后一行

[root@localhost~]# tail -n 1 /etc/passwd /etc/shadow

==>/etc/passwd <==

stu01:x:500:500::/home/stu01:/bin/bash

 

==>/etc/shadow <==

stu01:!!:16463:0:99999:7:::

    3)检查/home/新增加的宿主目录

[root@localhost~]# ls /home/

stu01

[root@localhost~]#

    4)为用户stu01设置一个密码(123456)

[root@localhost~]# passwd stu01

更改用户 stu01 的密码 。

新的 密码:

无效的密码: WAY 过短

无效的密码: 是回文

重新输入新的 密码:

passwd: 所有的身份验证令牌已经成功更新。

[root@localhost~]#

    5)以用户stu01登入系统(注销登录即可)

  

 

 

 

练习四:添加账号时设置不同属性

    1)新建用户nsd01,宿主目录位于/opt/nsd01

[root@localhost~]# useradd -d /opt/nsd01 nsd01

[root@localhost~]# grep nsd01 /etc/passwd

nsd01:x:501:501::/opt/nsd01:/bin/bash

[root@localhost~]# ls /opt/

nsd01  rh

[root@localhost~]#

 

    2)新建系统账号sys01,将UID设为123,登录Shell设为/sbin/nologin

[root@localhost~]# useradd -u 123 -s /sbin/nologin sys01

[root@localhost~]# grep sys01 /etc/passwd

sys01:x:123:502::/home/sys01:/sbin/nologin

[root@localhost~]#

    3)为用户sys01设置密码,并测试是否能够登录(注销登录)

[root@localhost~]# passwd sys01

更改用户 sys01 的密码 。

新的 密码:

无效的密码: WAY 过短

无效的密码: 是回文

重新输入新的 密码:

passwd: 所有的身份验证令牌已经成功更新。

[root@localhost~]#

    4)新建系统账号sys02,将UID设为124,不创建宿主目录

[root@localhost~]# ls /home/

stu01  sys01

[root@localhost~]# useradd -u 124 -M sys02

[root@localhost~]# ls /home/

stu01  sys01

[root@localhost~]#

    5)新建用户admin,将其基本组设为users,附加组设为adm、root

[root@localhost~]# useradd -g users -G adm,root admin

[root@localhost~]# id admin

uid=502(admin)gid=100(users) 组=100(users),0(root),4(adm)

[root@localhost~]#

 

练习五:passwd设置密码

    1)给用户nsd01设置密码123456

[root@localhost~]# passwd nsd01

更改用户 nsd01 的密码 。

新的 密码:

无效的密码: 过于简单化/系统化

无效的密码: 过于简单

重新输入新的 密码:

passwd: 所有的身份验证令牌已经成功更新。

[root@localhost~]#

    2)以用户nsd01登入,修改自己的密码,重新登入验证密码

[root@localhost~]# su - nsd01

[nsd01@localhost~]$ passwd

更改用户 nsd01 的密码 。

为 nsd01 更改 STRESS 密码。

(当前)UNIX 密码:

新的 密码:

重新输入新的 密码:

passwd: 所有的身份验证令牌已经成功更新。

[nsd01@localhost~]$

    3)锁定用户nsd01,查看锁定状态,测试是否还能登入(注销登录)

[root@localhost~]# passwd -l nsd01

锁定用户 nsd01 的密码 。

passwd: 操作成功

[root@localhost~]# passwd -S nsd01

nsd01 LK2015-01-28 0 99999 7 -1 (密码已被锁定。)

[root@localhost~]#

    4)解除对用户nsd01的锁定,查看锁定状态,测试是否能登入(注销登录)

[root@localhost~]# passwd -u nsd01

解锁用户 nsd01 的密码 。

passwd: 操作成功

[root@localhost~]# passwd -S nsd01

nsd01 PS2015-01-28 0 99999 7 -1 (密码已设置,使用 SHA512 加密。)

[root@localhost~]#

    5)将用户nsd01的密码重新改为123456

[root@localhost ~]#passwd nsd01

更改用户 nsd01 的密码 。

新的 密码:

无效的密码: 过于简单化/系统化

无效的密码: 过于简单

重新输入新的 密码:

passwd: 所有的身份验证令牌已经成功更新。

[root@localhost~]#

    6)采用--stdin方式将用户nsd01的密码设为654321

[root@localhost~]# echo 654321 | passwd --stdin nsd01

更改用户 nsd01 的密码 。

passwd: 所有的身份验证令牌已经成功更新。

[root@localhost~]#

 

练习六:usermod修改用户

    1)新建一个用户nsd03,将宿主目录设为/opt/home03,并设置密码

[root@localhost~]# useradd -d /opt/home03 nsd03

[root@localhost~]# passwd nsd03

更改用户 nsd03 的密码 。

新的 密码:

无效的密码: WAY 过短

无效的密码: 过于简单

重新输入新的 密码:

passwd: 所有的身份验证令牌已经成功更新。

[root@localhost~]# ls /opt/

home03  nsd01 rh

[root@localhost~]# grep nsd03 /etc/shadow

nsd03:$6$.7TMFfzC$J8UM2u3VcwzLI1a2OWA1nH/oOjGLDQeNtGOm/d21pKUIYdynExLLYnHDpGZ3.i0na.o/tvm.jfC9iHu9THHWR0:16463:0:99999:7:::

[root@localhost~]#

    2)将用户nsd03的宿主目录改为/home/nsd03

[root@localhost~]# usermod -d /home/nsd03 nsd03

[root@localhost~]# grep nsd03 /etc/passwd

nsd03:x:503:504::/home/nsd03:/bin/bash

[root@localhost~]#

    3)将用户sys01的登录Shell改为/bin/bash

[root@localhost~]# grep sys01 /etc/passwd

sys01:x:123:502::/home/sys01:/sbin/nologin

[root@localhost~]# usermod -s /bin/bash sys01

[root@localhost~]# grep sys01 /etc/passwd

sys01:x:123:502::/home/sys01:/bin/bash

[root@localhost~]#

    4)锁定用户sys01,查看锁定状态,测试是否还能登入

[root@localhost~]# usermod -L sys01

[root@localhost~]# grep sys01 /etc/shadow

sys01:!$6$jH5EVGY1$gJVlJ/3mvuMkwn4AqqIsYtZZxtYcnKFQRdwFjEmdeRb7StucmoLqKeW4T8LQcEYkcszrKL.3L2zY3BwfUWeHS1:16463:0:99999:7:::

[root@localhost~]#

    5)新建用户nsd04,设置为2天前失效,并测试登录、查看提示信息(注销登录)

[root@localhost~]# useradd nsd04

[root@localhost~]# date

2015年 01月 28日 星期三 18:24:09 CST

[root@localhost~]# usermod -e 2015-01-26 nsd04

[root@localhost~]# passwd nsd04

更改用户 nsd04 的密码 。

新的 密码:

无效的密码: WAY 过短

无效的密码: 是回文

重新输入新的 密码:

passwd: 所有的身份验证令牌已经成功更新。

[root@localhost~]#

 

 

练习七:chage密码时效控制

 

    1)强制用户nsd04在下次登录的时候必须更改密码(-d  0),并验证效果

[root@localhost~]# chage -d 0 nsd04

[root@localhost~]# grep nsd04 /etc/shadow

nsd04:$6$.P4l7Ci4$YsshBCFRjC7zZA3mRL4RN/S8wBO41xdYHL0Sr9jHtpOyKWVJZMA1mABQaQG86d6gDsSwgGu.ftSNJ3bRWJ4Po.:0:0:99999:7::16096:

[root@localhost~]#

练习八:su切换的环境差异

    1)以用户root登录,执行 su -stu01,检查命令行环境

         a)查看当前所在目录

[root@localhost~]# su - stu01

[stu01@localhost~]$ pwd

/home/stu01

         b)检查PATH环境变量

[stu01@localhost~]$ echo $PATH

/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/stu01/bin

 

    2)重新以用户root登录,执行 sustu01,检查命令行环境

         a)查看当前所在目录

[root@localhost~]# su stu01

[stu01@localhostroot]$ pwd

/root

 

         b)检查PATH环境变量(比较PATH值的差异)

[stu01@localhostroot]$ echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

[stu01@localhostroot]$

 

练习九:userdel、id

     1)检查root、nsd01用户的ID标识信息,区分UID、GID、基本组、附加组

[root@localhost~]# id root

uid=0(root)gid=0(root) 组=0(root)

[root@localhost~]# id nsd01

uid=501(nsd01)gid=501(nsd01) 组=501(nsd01)

[root@localhost~]#

     2)彻底删除前面添加的用户账号(nsd01、sys01、sys02等)

[root@localhost~]# userdel nsd01

[root@localhost~]# userdel sys01

[root@localhost~]# userdel sys02

 

练习十:用户初始化配置

    1)为root用户添加别名  byebye='shutdown -h +15' ,只要进命令行环境自动生效

[root@localhost~]# grep byebye /root/.bashrc

aliasbyebye='shutdown -h +15'

[root@localhost~]#

    4)将ls --help的输出保存为ls.help文件,自动复制给每个新用户的家目录下

[root@localhost~]# ls --help > /etc/skel/ls.help

[root@localhost~]# useradd new01

[root@localhost~]# ls /home/new01/

ls.help

[root@localhost~]#

 

练习十一:组账号基本管理

    1)新建组账号stugrp,将GID设为600

[root@localhost~]# groupadd -g 600 stugrp

[root@localhost~]# grep stugrp /etc/group

stugrp:x:600:

[root@localhost~]#

    2)为stugrp组添加三个成员用户(user01、root、zhangsan)

[root@localhost~]# useradd zhangsan

[root@localhost~]# useradd user01

[root@localhost~]# grep stugrp /etc/group

stugrp:x:600:

[root@localhost~]# gpasswd -M zhangsan,root,user01 stugrp

[root@localhost~]# grep stugrp /etc/group

stugrp:x:600:zhangsan,root,user01

[root@localhost~]#

    3)从stugrp组删除一个成员(user01)

[root@localhost~]# grep stugrp /etc/group

stugrp:x:600:zhangsan,root,user01

[root@localhost~]# gpasswd -d user01 stugrp

Removing useruser01 from group stugrp

[root@localhost~]# grep stugrp /etc/group

stugrp:x:600:zhangsan,root

[root@localhost~]#

    4)重新定义stugrp组的成员列表(user02、zhangsan)

[root@localhost~]# grep stugrp /etc/group

stugrp:x:600:zhangsan,root

[root@localhost~]# useradd user02

[root@localhost~]# gpasswd -M zhangsan,user02 stugrp

[root@localhost~]# grep stugrp /etc/group

stugrp:x:600:zhangsan,user02

[root@localhost~]#

    5)为stugrp组添加一个组管理员user01

[root@localhost~]# grep stugrp /etc/gshadow

stugrp:!::zhangsan,user02

[root@localhost~]# gpasswd -A user01 stugrp

[root@localhost~]# grep stugrp /etc/gshadow

stugrp:!:user01:zhangsan,user02

[root@localhost~]#

    6)以用户user01登入,把自己添加为stugrp组的成员,删除组成员user02

[root@localhost~]# su - user01

[user01@localhost~]$ grep stugrp /etc/group

stugrp:x:600:zhangsan,user02

[user01@localhost~]$ gpasswd -a user01 stugrp

Adding useruser01 to group stugrp

[user01@localhost~]$ grep stugrp /etc/group

stugrp:x:600:zhangsan,user02,user01

[user01@localhost~]$ gpasswd -d user02 stugrp

Removing useruser02 from group stugrp

[user01@localhost~]$ grep stugrp /etc/group

stugrp:x:600:zhangsan,user01

[user01@localhost~]$

练习十二:查看一个组有哪些成员

    1)查看stugrp组有哪些成员用户

[root@localhost~]# grep stugrp /etc/group

stugrp:x:600:zhangsan,user01

[root@localhost~]#

    2)查看root组有哪些成员用户

[root@localhost~]# grep root /etc/group

root:x:0:admin

[root@localhost~]#

 

linux系统管理07:

一、lsb_release命令的修复

   1、通过其他服务器查找产生lsb_release命令的包(前提是这台服务器有这个命令)

# whichlsb_release

/usr/bin/lsb_release

# rpm -qf/usr/bin/lsb_release

redhat-lsb-core-4.0-7.el6.x86_64

# rpm -ivh/misc/cd/Packages/redhat-lsb-core-4.0-7.el6.x86_64.rpm

 

   2、通网络百度、谷歌搜索产生lsb_release命令的软件包,进行安装。

 

二、linux目录结构

   1、可以用man hier命令查看/下各个目录的作用。

   2、详细信息请查看Linux目录详解.txt。

三、find命令扩展

   1、-iname选项:根据名称查找,忽略大小写

# find /etc/-iname PASSWD

/etc/pam.d/passwd

/etc/passwd

# find /etc/-name PASSWD

#

   2、-uid选项:根据uid查找,属于这个用户的文件

# tail -n 1/etc/passwd

haha:x:500:500::/home/haha:/bin/bash

# find / -uid500

/var/spool/mail/haha

/home/haha

......

 

    3、-gid 选项:根据gid查找,属于这个组的文件

    4、-user 选项:根据用户名查找,查找属于这个用户的

# find / -userhaha

/var/spool/mail/haha

/home/haha

......

 

    5、-group 选项:根据组名查找,查找属于这个组的

    6、-nouser 选项:查找这个文件不属于任何用户的

# userdel haha

# find /home/-nouser

/home/haha

/home/haha/.mozilla

......

 

    7、-nogroup 选项:查找这个文件不属于任何组的

# userdel haha

# find /home/-nogroup

/home/haha

/home/haha/.mozilla

 

    8、-maxdepth 选项:限制目录查找的深度(最大层数)

       注意:当有多个条件是-maxdepth这个选项要放到最前面

[root@localhost 桌面]# find/etc/ -name passwd  -maxdepth 1

find: 警告: 您在非选项参数 -name后定义了 -maxdepth 选项,但选项不是位置选项 (-maxdepth 影响在它之前或之后的指定的比较测试)。请在其它参数之前指定选项。

 

正确的:

# find/etc/  -maxdepth 1 -name passwd

/etc/passwd

 

# find/etc/  -maxdepth 2 -name passwd

/etc/pam.d/passwd

/etc/passwd

 

     9、-inum 选项:根据文件i节点编号查找

        i节点:在Linux系统中标识一个文件的标志,它是一串数字。在linux系统中一切皆为文件,那么一分区能够创建多少个文件数是有限的,它与这个分区的i节点的数量有关。i节点的数量大小也与该分区的大小有关。可以通过如下命令查询

# tune2fs -l/dev/sda1 | grep "Inode count"

Inodecount:              51200

 

查看一个文件的i节点: ls  -i 补充(ls  -F)

# ls -i/root/install.log

261123/root/install.log

 

# find /root-inum 261123

/root/install.log

 

三、PATH应用

     1、输出变量的值

#echo  $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

     2、将可执行程序拷贝到PATH变量的任意路径下,即可达到在任意路径下执行,都能够找到。

 

四、时间的转换

     1、Unix时间戳(timestamp)

从 GMT 1970年01月01日0时0分0秒 起到指定时间点所经历的总秒数

      命令查看:date  +%s  (查看当前时间戳)

     2、查询指定时间经过的秒数

      date +%s  -d  "2001-09-11"  

     3、[root@svr5 ~]#echo  $[$(date  +%s -d "2001-09-11")/86400+1]

                                                     //查指定时刻经过的天数

     4、

        [root@svr5 ~]# date -d"@1000137600"              //查指定秒数

        2001年 09月 11日 星期二 00:00:00 CST

 

        [root@svr5 ~]# grep  ^root /etc/shadow    //取改密时刻

        root:$6$BUDvyH4ENyUQQZx4$....2VPL/:16294:0:99999:7:::

 

        [root@svr5 ~]# date  -d "@$[16294*86400]"            //查指定天数

        2014年 08月 12日 星期二 08:00:00 CST

     5、【重要】

         [root@svr5 ~]# echo $(date)       //$()代表输出的是命令的结果

          2015年 03月 12日 星期四 08:33:36 CST

         [root@svr5 ~]# echo $[2*4]        //$[]代表的是运算

          8

 

 

五、ls  -lh与du -sh

 

共同点:都能够显示对象的大小

不同点:大小的含义

ls  -lh,显示数据内容的大小

du -sh,显示数据所占用的磁盘空间(4KB/块)

 

[root@svr5 ~]#ls  -lh install.log                //数据为47K

-rw-r--r--.  1 root root 47K  8月  12 09:47 install.log

 

[root@svr5 ~]#du  -sh install.log        //占用52K磁盘空间

52K     install.log

 

六、软连接/硬连接

        1、查找文件方式

           目标文件-->i节点-->文档数据

        2、软连接        

           链接文件-->目标文件-->i节点-->文档数据

        3、硬连接

           链接文件-->i节点-->数据内容

        4、对比优缺点

           软连接:若目标文件被删除,链接文件将失效,可以跨分区、目标可以是目录

           硬连接:若目标文件被删除,链接文件仍可用,不能跨分区、目标不能是目录

 

七、自定义yum仓库

        1、将自己下载的rpm包传到linux中

[root@localhost 桌面]# ls

linuxqq-v1.0.2-beta1.i386.rpm  RealPlayer11GOLD.rpm

[root@localhost 桌面]#

 

        2、将这些rpm包放到一个目录里

[root@localhost 桌面]# mkdir/mydir

[root@localhost 桌面]# cp/root/桌面/linuxqq-v1.0.2-beta1.i386.rpm RealPlayer11GOLD.rpm /mydir

[root@localhost 桌面]# ls/mydir

linuxqq-v1.0.2-beta1.i386.rpm  RealPlayer11GOLD.rpm

[root@localhost 桌面]#

     

        3、利用光盘作为源,搭建yum仓库

[root@localhost/]# umount /dev/cdrom

[root@localhost/]# mount /dev/cdrom /media/

mount: blockdevice /dev/sr0 is write-protected, mounting read-only

[root@localhost/]# df -h | tail -n 1

/dev/sr0              3.5G  3.5G    0 100% /media

[root@localhost/]# cd /etc/yum.repos.d/

[root@localhostyum.repos.d]# cp rhel-source.repo dvd.repo

[root@localhostyum.repos.d]# cat dvd.repo

[rhel-6]

name=Red HatEnterprise Linux 6

baseurl=file:///misc/cd

enabled=1

gpgcheck=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[root@localhostyum.repos.d]# yum repolist

Loaded plugins:product-id, refresh-packagekit, security, subscription-manager

This system isnot registered to Red Hat Subscription Management. You can usesubscription-manager to register.

rhel-6                                                                                            | 3.9 kB     00:00 ...

rhel-6/primary_db                                                                                  |3.1 MB     00:00 ...

repo id                                         reponame                                                          status

rhel-6                                          Red Hat Enterprise Linux 6                                          3,648

repolist: 3,648

 

        4、利用本地yum安装createrepo包

[root@localhost/]# yum -y install createrepo

        5、通过createrepo命令生成自定义yum库软件包信息

[root@localhost/]# ls /mydir/

linuxqq-v1.0.2-beta1.i386.rpm  RealPlayer11GOLD.rpm

[root@localhost/]# createrepo /mydir/

Spawning worker0 with 2 pkgs

Workers Finished

Gathering workerresults

 

Saving Primarymetadata

Saving filelists metadata

Saving othermetadata

Generatingsqlite DBs

Sqlite DBscomplete

[root@localhost/]# ls /mydir/

linuxqq-v1.0.2-beta1.i386.rpm  RealPlayer11GOLD.rpm  repodata

[root@localhost/]#

        6、编辑yum配置文件

[root@localhost/]# yum repolist

Loaded plugins:product-id, refresh-packagekit, security, subscription-manager

This system isnot registered to Red Hat Subscription Management. You can usesubscription-manager to register.

repo id                                         reponame                                                          status

rhel-6                                          RedHat Enterprise Linux 6                                          3,648

repolist: 3,648

[root@localhost/]# vim /etc/yum.repos.d/dvd.repo

[root@localhost/]# cat /etc/yum.repos.d/dvd.repo

[rhel-6]

name=Red HatEnterprise Linux 6

baseurl=file:///misc/cd

enabled=1

gpgcheck=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[rhel-niu]

name=Red HatEnterprise Linux

baseurl=file:///mydir

enabled=1

gpgcheck=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[root@localhost/]#

        7、测试安装

[root@localhost/]# yum repolist

Loaded plugins:product-id, refresh-packagekit, security, subscription-manager

This system isnot registered to Red Hat Subscription Management. You can use subscription-managerto register.

rhel-6                                                                                            | 3.9 kB     00:00 ...

rhel-niu                                                                                          | 2.9 kB     00:00 ...

rhel-niu/primary_db                                                                               | 3.4 kB     00:00 ...

repo id                                          reponame                                                         status

rhel-6                                           RedHat Enterprise Linux 6                                         3,648

rhel-niu                                         RedHat Enterprise Linux                                              2

repolist: 3,650

[root@localhost/]# yum  -y  install  linuxqq

 

 

练习一:cat查阅文件

    1)查看CPU信息、内存信息

[root@localhost/]# cat /proc/cpuinfo

[root@localhost/]# cat /proc/meminfo

    2)查看Linux系统里边有哪些用户账号(/etc/passwd),了解一共有多少个账号

[root@localhost/]# wc -l /etc/passwd

35 /etc/passwd

[root@localhost/]#

    3)通过install.log文件了解系统中装了多少个软件包

[root@localhost/]# wc -l /root/install.log

961/root/install.log

[root@localhost/]#

 

练习二:分页阅读more、less

    1)分页浏览CPU信息、内存信息

[root@localhost/]# less /proc/cpuinfo

[root@localhost/]# less /proc/meminfo

    2)分页查看ls、mkdir命令的--help帮助信息

[root@localhost/]# ls --help | less

[root@localhost/]# mkdir --help | less

    3)将CPU信息保存为文件cpu.txt,并分页阅读cpu.txt文件

[root@localhost/]# cat /proc/cpuinfo > cpu.txt

[root@localhost/]# less cpu.txt

 

练习三:head、tail命令

    1)查看CPU记录信息的前10行内容、内存记录信息的前4行内容

[root@localhost/]# head /proc/cpuinfo

[root@localhost/]# head /proc/meminfo

    2)查看/etc/passwd文件(账号库)开头2行、末尾2行的内容

[root@localhost/]# head -n 2 /etc/passwd

[root@localhost/]# tail -n 2 /etc/passwd

    3)将当前主机的所有IP地址信息存入文件ipadd.txt,查看其中第2行内容

[root@localhost/]# ifconfig > ipadd.txt

[root@localhost/]# head -n 2 ipadd.txt

 

练习四:wc文件内容统计

    1)统计当前系统一共有多少个用户账号

[root@localhost/]# wc -l /etc/passwd

    2)统计/etc/目录下扩展名是.conf一共有多少个

[root@localhost/]# ls -l /etc/*.conf | wc -l

36

[root@localhost/]#

 

练习五:grep基本用法

    1)将当前主机的所有IP地址信息存入文件ipadd.txt

[root@localhost/]# ifconfig > ipadd.txt

    2)去掉ipadd.txt文件里的空行

[root@localhost/]# grep -v ^$ ipadd.txt

    3)计算/bin目录下一共有多少个基本的外部命令程序,不包括快捷方式

[root@localhost/]# ls -l /bin/ | grep ^- | wc -l

94

[root@localhost/]#

    4)复制/etc/inittab文件到当前目录下,改名为init.txt

[root@localhost/]# cd /opt/

[root@localhostopt]# rm -rf *

[root@localhostopt]# cp /etc/inittab /opt/init.txt

[root@localhostopt]# ls

init.txt

[root@localhostopt]#

         a)统计init.txt文件中的有效配置(排除#开头的行、空行)行数

[root@localhostopt]# grep -v ^$ init.txt | grep -v ^# | wc -l

1

[root@localhostopt]#

 

         b)提取init.txt文件里的有效配置,保存为init2.txt

[root@localhostopt]# grep -v ^$ init.txt | grep -v ^# > init2.txt

[root@localhostopt]# cat init2.txt

id:3:initdefault:

[root@localhostopt]#

练习六:zip、unzip归档压缩

    1)在Linux虚拟机里创建一个压缩包lnxtest.zip,包括以下文件或目录:

         /root目录下以install开头的文件

[root@localhostopt]# ls

init2.txt  init.txt

[root@localhostopt]# zip lnxtest.zip /root/install*

  adding: root/install.log (deflated 75%)

  adding: root/install.log.syslog (deflated85%)

[root@localhostopt]# ls

init2.txt  init.txt lnxtest.zip

[root@localhostopt]#

 

 

练习七:tar制作/释放归档压缩包(zcf、ztf、zxf、jcf、jtf、jxf、cf、tf)

    1)备份/boot、/etc这两个文件夹,保存为bootetc.tar.gz文件

[root@localhostopt]# pwd

/opt

[root@localhostopt]# rm -rf *

[root@localhostopt]# tar -zcf bootetc.tar.gz /boot/ /etc/

tar: 从成员名中删除开头的“/”

[root@localhostopt]# ls

bootetc.tar.gz

[root@localhostopt]#

    2)查看bootetc.tar.gz文件内包含哪些内容

[root@localhostopt]# tar -ztf bootetc.tar.gz

    3)将bootetc.tar.gz释放到文件夹/root/bootetc/下

[root@localhostopt]# mkdir /root/bootetc

[root@localhostopt]# tar -zxf bootetc.tar.gz -C /root/bootetc/

[root@localhostopt]# ls /root/bootetc/

boot  etc

[root@localhostopt]#

    4)备份/usr/sbin目录,保存为usrsbin.tar.bz2文件

[root@localhostopt]# pwd

/opt

[root@localhostopt]# ls

bootetc.tar.gz

[root@localhostopt]# tar -jcf usrbin.tar.bz2 /usr/sbin/

tar: 从成员名中删除开头的“/”

tar: 从硬连接目标中删除开头的“/”

[root@localhostopt]# ls

bootetc.tar.gz  usrbin.tar.bz2

[root@localhostopt]#

    5)查看usrsbin.tar.bz2文件内包含哪些内容

[root@localhostopt]# tar -jtf usrbin.tar.bz2

    6)将usrsbin.tar.bz2释放到/root/usrsbin/文件夹下

[root@localhostopt]# mkdir /root/usrsbin

[root@localhostopt]# tar -jxf usrbin.tar.bz2 -C /root/usrsbin/

[root@localhostopt]# ls /root/usrsbin/

usr

[root@localhostopt]#

    7)将/root/下的bootetc、usrsbin目录归档为btub.tar文件(不做压缩)

[root@localhostopt]# ls

bootetc.tar.gz  usrbin.tar.bz2

[root@localhostopt]# tar -cf btub.tar /root/bootetc/ /root/usrsbin/

tar: 从成员名中删除开头的“/”

tar: 从硬连接目标中删除开头的“/”

[root@localhostopt]# ls

bootetc.tar.gz  btub.tar usrbin.tar.bz2

[root@localhostopt]#

    8)查看归档文件btub.tar内包含哪些内容

[root@localhostopt]# tar -tf btub.tar

    9)删除上述练习中产生的文件和相关目录

[root@localhost/]# rm -rf /opt/* /root/bootetc/ /root/usrsbin/

        

练习八:查找可执行程序(which)

    1)以root用户登入,查看PATH变量(外部可执行程序目录)

[root@localhost/]# echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

[root@localhost/]#

    2)检查命令mkdir、ls、ifconfig、hostname的程序文件在哪里

[root@localhost/]# which mkdir

/bin/mkdir

[root@localhost/]# which ls

alias ls='ls--color=auto'

        /bin/ls

[root@localhost/]# which ifconfig

/sbin/ifconfig

[root@localhost/]# which hostname

/bin/hostname

[root@localhost/]#

    3)尝试查找命令cd、help、pwd、type的程序文件在哪里

[root@localhost/]# which cd

/usr/bin/which:no cd in(/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)

[root@localhost/]# which help

/usr/bin/which:no help in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)

[root@localhost/]# which pwd

/bin/pwd

[root@localhost/]# which type

/usr/bin/which:no type in(/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)

[root@localhost/]#

 

练习九:locate模糊查询

   1)创建一个新文件tarena.txt

[root@localhost/]# touch tarena.txt

   2)使用locate查找刚刚建立的这个文件

[root@localhost/]# locate tarena.txt

[root@localhost/]#

   3)创建/更新索引库(updatedb)

[root@localhost/]# updatedb

   4)重新再使用locate查找刚刚建立的这个文件

[root@localhost/]# locate tarena.txt

/tarena.txt

[root@localhost/]#

 

练习十:find精确查找

    1)新建一个目录study,在study目录下建子目录subdir

[root@localhost/]# mkdir -p /study/subdir

    2)在study目录下创建测试文件ipadd.txt,存入eth0网卡的IP地址信息

[root@localhost/]# ifconfig > /study/ipadd.txt

[root@localhost/]# ls study/

ipadd.txt  subdir

[root@localhost/]#

    3)为ipadd.txt创建快捷方式ip.txt,放在study/subdir/下

[root@localhost/]# ln -s /study/ipadd.txt /study/subdir/ip.txt

[root@localhost/]#

    4)分别找出study目录下的快捷方式、普通文件、文件夹

[root@localhost/]# find /study/ -type l

/study/subdir/ip.txt

[root@localhost/]# find /study/ -type f

/study/ipadd.txt

[root@localhost/]# find /study/ -type d

/study/

/study/subdir

[root@localhost/]#

    5)找出系统中所有的块设备文件,将结果存到study目录下,文件名为blocks.txt

[root@localhost/]# find / -type b > /study/blocks.txt #proc目录找不到为正常

find: “/proc/2179/task/2179/fd/5”: 没有那个文件或目录

find: “/proc/2179/task/2179/fdinfo/5”: 没有那个文件或目录

find: “/proc/2179/fd/5”: 没有那个文件或目录

find: “/proc/2179/fdinfo/5”: 没有那个文件或目录

    6)找出study目录下名称以ip开头txt结尾的普通文件

[root@localhost/]# find /study/ -name "ip*txt"

/study/ipadd.txt

/study/subdir/ip.txt

[root@localhost/]#

    7)找出study目录下名称以ip开头txt结尾的文件或者所有普通文件

[root@localhost/]# find /study/ -name "ip*txt" -o -type f

/study/ipadd.txt

/study/blocks.txt

/study/subdir/ip.txt

[root@localhost/]#

    8)找出/etc/目录下名称以res开头的conf结尾的配置文件

[root@localhost/]# find /etc/ -name "res*conf"

/etc/selinux/restorecond.conf

/etc/selinux/restorecond_user.conf

/etc/resolv.conf

[root@localhost/]#

    9)复制/boot/目录下的内核程序(vmlinuz开头的文件)到study目录下

[root@localhost/]# cp /boot/vmlinuz* /study/

[root@localhost/]# ls /study/

blocks.txt  ipadd.txt subdir vmlinuz-2.6.32-431.el6.x86_64

[root@localhost/]#

    10)找出study目录下大小超过1KB的并且是文件           【+1k】

[root@localhost/]# find /study -size +1k -type f

/study/vmlinuz-2.6.32-431.el6.x86_64

[root@localhost/]#

    11)找出/sbin目录下大小超过300KB的文件      【+300k】

[root@localhost/]# find /sbin/ -size +300k

    12)建立测试文件、目录:

         a)复制/root/install.log文件为study/file1,保留原始属性

[root@localhost/]# cp -p /root/install.log /study/file1

[root@localhost/]# ls study/

blocks.txt  file1 ipadd.txt  subdir  vmlinuz-2.6.32-431.el6.x86_64

[root@localhost/]#

         b)利用重定向建立study/file2文件,存入当前的内核版本信息

[root@localhost/]# uname -r > /study/file2

[root@localhost/]# cat /study/file2

2.6.32-431.el6.x86_64

[root@localhost/]#

         c)复制/root/install.log文件为study/file3

[root@localhost/]# cp /root/install.log /study/file3

[root@localhost/]# ls /study/

blocks.txt  file1 file2  file3  ipadd.txt subdir vmlinuz-2.6.32-431.el6.x86_64

[root@localhost/]#

         d)新建文件夹study/nsd/

[root@localhost/]# mkdir /study/nsd

    13)分别找出study目录下2天前、2天内修改过的文件

[root@localhost/]# find /study/ -mtime +2

/study/file1

[root@localhost/]# find /study/ -mtime -2

/study/

/study/file3

/study/vmlinuz-2.6.32-431.el6.x86_64

/study/ipadd.txt

/study/file2

/study/blocks.txt

/study/nsd

/study/subdir

/study/subdir/ip.txt

[root@localhost/]#

    14)找出study目录下2天前修改过的文件,并列出其详细属性

[root@localhost/]# find /study/ -mtime +2 -exec ls -l {} \;

-rw-r--r--. 1root root 39321 1月  14 17:22 /study/file1

[root@localhost/]#

 

使用vim文本编辑器

光盘文件的使用

RPM软件包管理

#################################################

一、使用vim文本编辑器

 

1. vi与vim

    vi,Virsual Interface,Linux/Unix中默认的文本编辑器

    vim,Vi Improved,是vi编辑器的增强版本(支持区分代码颜色等)

    推荐使用vim

 

2. vim编辑器的三种工作模式

    ( )模式、( )模式、( )模式

 

3. 命令模式下的基本操作

    移动光标:箭头键、PgUp和PgDn翻页、Home键(或^)、End键(或$)

    行间跳转:到第一行(1G或gg)、到最后一行(G)

   

    复制、粘贴:

             复制1行(yy)、复制3行(3yy)

             粘贴到当前行之后(小写p)、粘贴到当前行之后(大写P)

 

    删除(实际是剪切):

             删除单个字符(x或Delete键)

             删除到行首(d^)、删除到行尾(d$)

             删除1行(dd)、删除3行(3dd)

   

    查找关键词:

             搜索(/word)切换结果(n、N)

 

    撤销编辑:

             撤销最近一次操作(小写u)                  

             撤销当前行所有修改(大写U)

             恢复前一次撤销(Ctrl+ r,即重做)       

 

    保存并退出vim编辑器:

             大写的ZZ

 

 

4. 末行模式下的基本操作

    存盘及退出:

             保存(:w)、退出(:q)               【Write、Quit】

             保存并退出(:wq 或 :x)、放弃修改退出(:q!)

             另存为(:w  /路径/文件)               【Write】

             读入其他文件(:r  /路径/文件)              【Read】

 

    查找字符串并替换:                       【Substitute】

             替换当前行第一个old  ( :s/old/new )

             替换当前行所有old  ( :s/old/new/g )

             替换第4~9行所有old ( :4,9  s/old/new/g )

             替换文件内所有old (:%  s/old/new/g )

 

    设置vim编辑器:

             **使用 :set all 可查看所有可配置的参数

             显示/不显示行号(:set  nu、:set  nonu)

             启用/关闭语法高亮(:syntax  on、:syntax  off)

             开启/关闭查询结果高亮显示(:set  hlsearch、set  nohlsearch)

                                **hlsearch 可缩写为 hls

             启用/关闭自动缩进(:set  ai、:set  noai)

                                **autoindent 可缩写为 ai

 

 

5. vim编辑器相关文件

    ~/.vimrc,保存用户的vim编辑器设置

    ~/.viminfo,记录用户的历史操作

    .filename.swp,编辑过程中的缓存文件

 

二、光盘文件的使用

 

1. 光盘对应的设备

             /dev/hdc、/dev/sr0                   【设备文件,分别为IDE接口、SCSI接口】

         /dev/cdrom             【快捷方式】

 

2. 如何访问光盘资源(任选一种)

    方式一:插入光盘后,默认可直接从/misc/cd/ 访问光盘资源

                                          

    方式二:手动挂载/卸载光盘

             mount    /dev/光盘设备    挂载点(文件夹)

             umount    /dev/光盘设备

                       或者

             umount    光盘挂载点

 

    RHEL 6.x 光盘的目录结构

            

      EFI

      HighAvailability       //高可用相关软件包

      p_w_picpaths

      isolinux

      LoadBalancer          //负载均衡相关软件包

      Packages                  //真正存放所以软件包位置

      repodata

      Server             //常用软件包

      ScalableFileSystem   //可扩展的文件系统

      ResilientStorage

 

 

 

三、RPM软件包管理

 

1. 关于RPM机制

    RPM Package Manager,RPM软件包管理器

    软件资源站:http://rpmfind.net/、http://www.centos.org/

 

    RPM包文件名特征:

         软件名-版本信息.操作系统.硬件架构.rpm

 

    RPM包的一般安装路径(分散):

             管理程序:/sbin/*、/usr/sbin/*

             普通用户程序:/bin/*、/usr/bin/*

 

 

2. 查询软件包信息

    ** rpm -q 相当于 rpmquery

    列出已安装的所有RPM软件:

             rpm  -qa

    查询软件是否安装:

             rpm  -q  软件名...

    查询软件的描述信息:

             rpm  -qi  软件名...

    查询软件的完整安装清单:

             rpm  -ql  软件名...              【-c 配置清单、-d 文档清单】

    查询某个文件或目录属于哪个RPM软件:

             rpm  -qf  文件或目录的绝对路径...

 

 

3. 查询 .rpm 安装文件信息

    查询软件包的描述信息:

             rpm  -qpi  /路径/软件名-版本.. .. .rpm

    查询软件的完整安装清单:

             rpm  -qpl  /路径/软件名-版本.. ...rpm    【-c 配置清单、-d 文档清单】

 

 

4. 安装、升级、卸载RPM软件

    全新安装RPM软件包:

             rpm  -ivh  /路径/软件名-版本.. ...rpm  ...

    升级RPM软件:

             rpm  -Uvh  /路径/软件名-版本.. .. .rpm...        【若原本未装,则全新安装】

             rpm  -Fvh  /路径/软件名-版本.. .. .rpm...         【若原本未装,则放弃安装】

    卸载RPM软件   

             rpm   -e   软件名...

 

    ** 安装/升级软件包时,可通过  --force 强制覆盖或降级

    ** 安装或卸载软件时,可通过 --nodeps忽略依赖关系

    ** 安装或卸载软件时,可一次提供相互依赖的所有关联包,rpm会自动决定处理顺序

 

 

配置YUM库

源码包编译安装

#################################################

一、配置YUM库及更新操作

 

1. 关于YUM更新(YellowdogUpdater Modified)

    基于RPM软件包建立集中的仓库,自动处理依赖关系

    软件源的提供方式:file://...、ftp://... 、http://...

 

 

2. 准备YUM仓库服务器

    ** 采用RHEL 6.5光盘中的资源,仅提供给本机使用

 

    方式一:直接使用/misc/cd/目录,按需挂载

             插入光盘即可,无需额外操作

 

3. 配置YUM客户机

    仓库配置:/etc/yum.repos.d/*.repo

    主要配置语句用途:

             [源名称] :()

             name:()

             baseurl:()

             enabled:()

             gpgcheck:是否验证待安装的RPM包

             gpgkey:用于RPM验证的密钥文件

 

4.配置YUM思路

   YUM服务器配置思路:

      第一步:确保光驱电源加电,放入RHEL6.5光盘的iso镜像

      第二步:ls  -l /dev/cdrom  查看linux系统是否识别光驱设备

      第三步:创建挂载目录:mkdir/myiso  (或也可以使用linux系统提供的挂载目录/media、/mnt)

      第四步:利用mount命令挂载:mount  /dev/cdrom /myiso

      第五步:查看挂载情况:mount |grep myiso

  YUM客户端配置思路:    

 

                            

 

配置文件实例:

[root@svr5 ~]#vim  /etc/yum.repos.d/server.repo

[rhel6-server]

name=Red HatEnterprise Linux 6.5 Server

baseurl=file:///myiso

enabled=1

gpgcheck=0

#gpgkey=/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

 

 

4. 使用yum命令管理软件包

    列出所有软件(已安装的+可用的):yum  list

    仅列出已安装的软件: yum  list installed

    仅列出可用的软件(YUM源里提供的):yum  list available

 

    清理yum缓存数据:yum  clean all

 

    查询软件是否安装:yum  list  软件名...

    查询软件的描述信息:yum  info  软件名...

    安装指定软件包:yum  -y install  软件名...

    升级指定软件包:yum  -y update  软件名...

    卸载指定软件包:yum  -y remove  软件名...

 

    按关键词搜索可用的软件:yum  search 关键词

    查找能提供指定文件的可用软件:yum  provides 文件路径

 

 

5. 使用yum命令管理软件组

    ** 与软件包管理类似,只不过操作对象为一组软件

 

    常用指令:

             grouplist:查看软件组列表

             groupinfo:查看软件组的说明信息

             groupinstall:安装指定的软件组

             groupupdate:升级软件组

             groupremove:卸载软件组   

 

#################################################

 

二、源码包编译安装

 

1. 源代码软件包的常见格式

    软件名-版本号.tar.gz

    软件名-版本号.tar.bz2

 

2. 源代码编译安装的工作环境

    ** 主要是make、gcc、g++等工具

    ** 一般可通过yum安装“开发工具”包组来提供开发环境

    ** 或者 yum  -y install  gcc  gcc-c++ make

 

3. 源码编译的一般过程

    —— 前期准备:下载软件的源码包

 

    1)( )                    【释放源代码至指定目录】

    2)( )            【指定安装目录/功能模块等选项】

         ./configure  --prefix=安装目录

       ** 查看配置帮助  ./configure --help | less

         ** 此步骤成功后会生成 Makefile 文件

 

    3)( )            【生成可执行的二进制程序文件】

    4)( )          【将编译好的文件复制到预先配置的安装目录】

         ** 编译+安装可合写成make  &&  make install

 

    —— 安装后测试:执行程序

         ** 未指定安装路径时,默认安装位置/usr/local/{bin,sbin,etc,man,share,...}

 

 

4. 安装并测试 httpd 软件(网站服务器程序)

 

1)解包、配置、编译、安装

[root@svr5 ~]#cd  /var/ftp/pub/  //切换到存放httpd软件包的文件夹

[root@svr5 pub]#tar  zxf httpd-2.2.25.tar.gz  -C /usr/src/

[root@svr5 pub]#cd /usr/src/httpd-2.2.25/

[root@svr5httpd-2.2.25]# ./configure --prefix=/usr/local/httpd

.. ..

[root@svr5httpd-2.2.25]# make

[root@svr5httpd-2.2.25]# make install

 

2)确认安装结果

[root@svr5httpd-2.2.25]# ls  -F  /usr/local/httpd/

bin/    cgi-bin/ error/   icons/    lib/  man/     modules/

build/  conf/    htdocs/  include/     logs/    manual/

 

         ** conf/ 目录下存放配置文件

         ** htdocs/ 目录下存放网页文件

         ** logs/ 目录下存放日志文件

         ** manual/ 目录下存放手册文档

 

3)启动httpd网站服务

[root@svr5 ~]#/usr/local/httpd/bin/apachectl start

 

4)从浏览器访问网站服务器

    访问 http://127.0.0.1/ 或http://yourserver/ ,

    页面会显示 “It works!”

 

 

练习一:磁盘分区

    1)为虚拟机添加一块80GB、SCSI接口的硬盘

[root@test01 ~]#parted -l

Model: VMware,VMware Virtual S (scsi)

Disk /dev/sda:322GB

......

 

错误: /dev/sdb:unrecognised disk label                                  

 

警告: 无法以读写方式打开/dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。

错误: 无效的分区表 -/dev/sr0 出现递归分区。                             

忽略/Ignore/放弃/Cancel?i                                               

Model: NECVMWarVMware SATA CD01 (scsi)

Disk /dev/sr0:3854MB

Sector size(logical/physical): 2048B/2048B

Partition Table:msdos

 

Number  Start End  Size  Type File system  标志

[root@test01 ~]#ls /dev/sdb

/dev/sdb

[root@test01 ~]#

 

    2)划分2个20GB的主分区,剩余作为扩展分区

[root@test01 ~]#parted /dev/sdb mklabel msdos

[root@test01 ~]#parted /dev/sdb print

Model: VMware,VMware Virtual S (scsi)

Disk /dev/sdb:85.9GB

Sector size(logical/physical): 512B/512B

Partition Table:msdos

 

Number  Start End  Size  Type File system  标志

 

[root@test01 ~]#parted /dev/sdb mkpart primary  0 20G

警告: The resultingpartition is not properly aligned for best performance.

忽略/Ignore/放弃/Cancel?i                                                

信息: You may need toupdate /etc/fstab.                                 

                                                     

[root@test01 ~]#parted /dev/sdb print

Model: VMware,VMware Virtual S (scsi)

Disk /dev/sdb:85.9GB

Sector size(logical/physical): 512B/512B

Partition Table:msdos

 

Number  Start End     Size    Type    File system  标志

 1     512B   20.0GB  20.0GB primary

 

[root@test01 ~]#parted /dev/sdb print

Model: VMware,VMware Virtual S (scsi)

Disk /dev/sdb:85.9GB

Sector size(logical/physical): 512B/512B

Partition Table:msdos

 

Number  Start End     Size    Type    File system  标志

 1     512B   20.0GB  20.0GB primary

 

[root@test01 ~]#parted /dev/sdb mkpart primary  20G 40G

信息: You may need toupdate /etc/fstab.                                 

 

[root@test01 ~]#parted /dev/sdb print

Model: VMware,VMware Virtual S (scsi)

Disk /dev/sdb:85.9GB

Sector size(logical/physical): 512B/512B

Partition Table:msdos

 

Number  Start  End     Size    Type    File system  标志

 1     512B    20.0GB  20.0GB primary

 2     20.0GB  40.0GB  20.0GB primary

 

[root@test01 ~]#

[root@test01 ~]#parted /dev/sdb print

Model: VMware,VMware Virtual S (scsi)

Disk /dev/sdb:85.9GB

Sector size(logical/physical): 512B/512B

Partition Table:msdos

 

Number  Start  End     Size    Type    File system  标志

 1     512B    20.0GB  20.0GB primary

 2     20.0GB  40.0GB  20.0GB primary

 

[root@test01 ~]#parted /dev/sdb mkpart extend 40G 100%

信息: You may need toupdate /etc/fstab.                                 

 

[root@test01 ~]#parted /dev/sdb print

Model: VMware,VMware Virtual S (scsi)

Disk /dev/sdb:85.9GB

Sector size(logical/physical): 512B/512B

Partition Table:msdos

 

Number  Start  End     Size    Type     File system  标志

 1     512B    20.0GB  20.0GB primary

 2     20.0GB  40.0GB  20.0GB primary

 3     40.0GB  85.9GB  45.9GB extended               lba

 

[root@test01 ~]#

    3)新建2个逻辑分区,分别为2GB、10GB

[root@test01 ~]#parted /dev/sdb print

Model: VMware,VMware Virtual S (scsi)

Disk /dev/sdb:85.9GB

Sector size(logical/physical): 512B/512B

Partition Table:msdos

 

Number  Start  End     Size    Type     File system  标志

 1     512B    20.0GB  20.0GB primary

 2     20.0GB  40.0GB  20.0GB primary

 3     40.0GB  85.9GB  45.9GB extended               lba

 

[root@test01 ~]#parted /dev/sdb mkpart logical 40G 42G

信息: You may need toupdate /etc/fstab.                                 

 

[root@test01 ~]#parted /dev/sdb print

Model: VMware,VMware Virtual S (scsi)

Disk /dev/sdb:85.9GB

Sector size(logical/physical): 512B/512B

Partition Table:msdos

 

Number  Start  End     Size    Type     File system  标志

 1     512B    20.0GB  20.0GB primary

 2     20.0GB  40.0GB  20.0GB primary

 3     40.0GB  85.9GB  45.9GB  extended               lba

 5     40.0GB  42.0GB  1999MB logical

 

[root@test01 ~]#

[root@test01 ~]#parted /dev/sdb print

Model: VMware,VMware Virtual S (scsi)

Disk /dev/sdb:85.9GB

Sector size(logical/physical): 512B/512B

Partition Table:msdos

 

Number  Start  End     Size    Type     File system  标志

 1     512B    20.0GB  20.0GB primary

 2     20.0GB  40.0GB  20.0GB primary

 3     40.0GB  85.9GB  45.9GB extended               lba

 5     40.0GB  42.0GB  1999MB logical

 

[root@test01 ~]#parted /dev/sdb mkpart logical 42G 52G

信息: You may need toupdate /etc/fstab.                                 

 

[root@test01 ~]#parted /dev/sdb print

Model: VMware,VMware Virtual S (scsi)

Disk /dev/sdb:85.9GB

Sector size(logical/physical): 512B/512B

Partition Table:msdos

 

Number  Start  End     Size    Type     File system  标志

 1     512B    20.0GB  20.0GB primary

 2     20.0GB  40.0GB  20.0GB primary

 3     40.0GB  85.9GB  45.9GB extended               lba

 5     40.0GB  42.0GB  1999MB logical

 6     42.0GB  52.0GB  9999MB logical

 

[root@test01 ~]#

 

   4)使用partx -a /dev/sdb 识别新的分区表   【最好是重启一次】

[root@test01 ~]#partx -a /dev/sdb

BLKPG: Device orresource busy

error addingpartition 1

BLKPG: Device orresource busy

error addingpartition 2

BLKPG: Device orresource busy

error addingpartition 3

BLKPG: Device orresource busy

error addingpartition 5

BLKPG: Device orresource busy

error addingpartition 6

[root@test01 ~]#ls /dev/sdb*

/dev/sdb  /dev/sdb1 /dev/sdb2  /dev/sdb3  /dev/sdb5 /dev/sdb6

[root@test01 ~]#

 

练习二:格式化分区

    1)将/dev/sdb1格式化成ext4分区

[root@test01 ~]#mkfs.ext4 /dev/sdb1

    2)将/dev/sdb6格式化成FAT32分区

[root@test01 ~]#mkfs.vfat -F 32 /dev/sdb6

mkfs.vfat 3.0.9(31 Jan 2010)

 

    3)将/dev/sdb1挂载到/mnt/part1,测试读写该分区

[root@test01 ~]#mkdir /mnt/part1

[root@test01 ~]#mount /dev/sdb1 /mnt/part1/

[root@test01 ~]#mount  | tail -n 1

/dev/sdb1 on/mnt/part1 type ext4 (rw)

 

    4)将/dev/sdb6挂载到/mnt/part6,测试读写该分区

[root@test01 ~]#mkdir /mnt/part6

[root@test01 ~]#mount /dev/sdb6 /mnt/part6

[root@test01 ~]#mount | tail -n 1

/dev/sdb6 on/mnt/part6 type vfat (rw)

[root@test01 ~]#

 

    5)分别卸载/dev/sdb1、/dev/sdb6

[root@test01 ~]#umount /mnt/part1

[root@test01 ~]#umount /mnt/part6

[root@test01 ~]#

 

练习三:格式化及管理交换空间

    1)查看交换分区:swapon  -s

    2)格式化交换分区:mkswap  /dev/sdb5

    3)启用交换分区:swapon  /dev/sdb5

    4)再次查看交换分区:swapon  -s   【与扩展前对比】

    5)卸载交换分区 /dev/sdb5:swapoff /dev/sdb5

 

 

 

练习四:查看/识别文件系统

    1)为/dev/sdb1设置一个卷标“part1”

[root@test01 ~]#e2label /dev/sdb1

 

[root@test01 ~]#e2label /dev/sdb1 "part1"

[root@test01 ~]#e2label /dev/sdb1

part1

[root@test01 ~]#

    2)采用卷标名识别的方式将/dev/sdb1分区挂载到/mnt/part1

[root@test01 ~]#mount LABEL=part1 /mnt/part1

 

 

    3)确认第2步挂载结果,再卸载/mnt/part1

[root@test01 ~]#mount | tail -n 1

/dev/sdb1 on/mnt/part1 type ext4 (rw)

[root@test01 ~]#

[root@test01 ~]#umount /mnt/part1

[root@test01 ~]#mount | grep /dev/sdb1

[root@test01 ~]#

 

    4)查看/dev/sdb1分区的UUID值

[root@test01 ~]#blkid /dev/sdb1

/dev/sdb1:LABEL="part1" UUID="b2af1874-1e90-4aea-a3c0-4da2d3482897"TYPE="ext4"

[root@test01 ~]#

 

    5)以UUID识别的方式将/dev/sdb1分区挂载到/mnt/part1

[root@test01 ~]#blkid /dev/sdb1

/dev/sdb1:LABEL="part1" UUID="b2af1874-1e90-4aea-a3c0-4da2d3482897"TYPE="ext4"

[root@test01 ~]#mount UUID="b2af1874-1e90-4aea-a3c0-4da2d3482897" /mnt/part1

[root@test01 ~]#mount | tail -n 1

/dev/sdb1 on/mnt/part1 type ext4 (rw)

[root@test01 ~]#

    6)检查/dev/sdb1、/dev/sda1分区最多能存多少个文件(tune2fs  -l .. ..)

[root@test01 ~]#tune2fs -l /dev/sdb1 | grep "Inode count"

Inodecount:              1222992

[root@test01 ~]#

练习五:mount挂载参数

    1)采用半自动的方式挂载/dev/sdb1设备

[root@test01 ~]#grep /dev/sdb1 /etc/fstab

/dev/sdb1              /mnt/part1              ext4     defaults   0 0

[root@test01 ~]#mount | grep /dev/sdb1

/dev/sdb1 on/mnt/part1 type ext4 (rw)

[root@test01 ~]#umount /dev/sdb1

[root@test01 ~]#mount | grep /dev/sdb1

[root@test01 ~]#mount /dev/sdb1

[root@test01 ~]#mount | grep /dev/sdb1

/dev/sdb1 on/mnt/part1 type ext4 (rw)

[root@test01 ~]#

 

    2)卸载所有磁盘文件系统、挂载所有fstab已记录的文件系统

[root@test01 ~]#df -h

Filesystem                           Size  Used Avail Use% Mounted on

/dev/sda2                             97G   11G  81G  12% /

/dev/sda1                            194M   34M 151M  19% /boot

/dev/sda3                             97G  188M  92G   1% /data

tmpfs                                238M     0 238M   0% /dev/shm

/ISO/rhel-server-6.5-x86_64-dvd.iso  3.6G 3.6G     0 100%/var/ftp/pub/iso/rhel6.5

/dev/sdb1                             19G  172M  18G   1% /mnt/part1

[root@test01 ~]#umount -a

umount: /:device is busy.

        (In some cases useful info aboutprocesses that use

         the device is found by lsof(8) orfuser(1))

[root@test01 ~]#df -h

Filesystem      Size Used Avail Use% Mounted on

/dev/sda2        97G  11G   81G  12% /

[root@test01 ~]#

    3)重新挂载/dev/sdb1分区,验证noexec

[root@test01 ~]#mount -a

[root@test01 ~]#mount | grep /dev/sdb1

/dev/sdb1 on/mnt/part1 type ext4 (rw)

[root@test01 ~]#mount -o remount,noexec /dev/sdb1

[root@test01 ~]#mount | grep /dev/sdb1

/dev/sdb1 on/mnt/part1 type ext4 (rw,noexec)

[root@test01 ~]#

 

         a)将/bin/uname复制为/mnt/part1/kvn,测试后者是否能执行

[root@test01 ~]#cp /bin/uname /mnt/part1/kvn

[root@test01 ~]#ls -l /mnt/part1/kvn

-rwxr-xr-x. 1root root 27776 2月   2 19:41 /mnt/part1/kvn

[root@test01 ~]#/mnt/part1/kvn

-bash:/mnt/part1/kvn: 权限不够

[root@test01 ~]#

 

         b)新建文件/mnt/part1/acl.txt,尝试设置ACL使用户lisi有权限rwx

[root@test01 ~]#touch /mnt/part1/acl.txt

[root@test01 ~]#useradd lisi

[root@test01 ~]#setfacl -m u:lisi:r /mnt/part1/acl.txt

setfacl:/mnt/part1/acl.txt: 不支持的操作

[root@test01 ~]#

 

[root@test01 ~]#mount | grep /dev/sdb1

/dev/sdb1 on/mnt/part1 type ext4 (rw,noexec)

[root@test01 ~]#mount -o remount,acl /dev/sdb1

[root@test01 ~]#mount | grep /dev/sdb1

/dev/sdb1 on/mnt/part1 type ext4 (rw,acl)

[root@test01 ~]#setfacl -m u:lisi:r /mnt/part1/acl.txt

[root@test01 ~]#getfacl /mnt/part1/acl.txt

getfacl:Removing leading '/' from absolute path names

# file:mnt/part1/acl.txt

# owner: root

# group: root

user::rw-

user:lisi:r--

group::r--

mask::r--

other::r--

 

[root@test01 ~]#

 

练习六:挂载ISO镜像文件(-o loop)

[root@test01 ~]#genisop_w_picpath -o haha.iso /tmp  #将tmp目录制作成iso镜像

[root@test01 ~]#mkdir /myiso

[root@test01 ~]#mount -o loop /root/haha.iso /myiso/

[root@test01 ~]#mount | grep haha

/root/haha.isoon /myiso type iso9660 (rw,loop=/dev/loop1)

[root@test01 ~]#

 

 

 

练习七:配置开机自动挂载

    1)重开机之后能自动将/dev/sdb1挂载到/part1目录

[root@test01 ~]#grep /dev/sdb1 /etc/fstab

/dev/sdb1              /mnt/part1              ext4     defaults   0 0

[root@test01 ~]#mount -a

[root@test01 ~]#mount | grep /dev/sdb1

/dev/sdb1 on/mnt/part1 type ext4 (rw,acl)

[root@test01 ~]#

 

    2)重开机之后能自动将/dev/sdb6挂载到/part6目录

[root@test01 ~]#grep /dev/sdb6 /etc/fstab

/dev/sdb6              /mnt/part6              vfat     defaults   0 0

[root@test01 ~]#mount -a

[root@test01 ~]#mount | grep /dev/sdb6

/dev/sdb6 on/mnt/part6 type vfat (rw)

[root@test01 ~]#

 

    3)扩展SWAP空间

[root@test01 ~]#grep /dev/sdb5 /etc/fstab    #注意swap一般用mount -a不起作用

/dev/sdb5              swap              swap     defaults   0 0

[root@test01 ~]#重启看到效果

 

练习八:设置自定义触发挂载

    1)将分区/dev/sdb2格式化为EXT4文件系统

[root@test01 ~]#mkfs.ext4 /dev/sdb2

 

    2)为分区/dev/sdb2 配置触发挂载(监控+访问点为/misc/tools)

[root@test01 ~]#grep misc /etc/auto.master

/misc   /etc/auto.misc

# Note that if thereare entries for /net or /misc (as

[root@test01 ~]#grep tools /etc/auto.misc

tools           -fstype=ext4      :/dev/sdb2

[root@test01 ~]#service autofs restart

停止 automount:[确定]

正在启动 automount:[确定]

[root@test01~]# 

        

    3)检查已挂载的文件系统,查看触发挂载结果

[root@test01 ~]#ls /misc/tools

lost+found

[root@test01 ~]#mount | grep /dev/sdb2

/dev/sdb2 on/misc/tools type ext4 (rw)

[root@test01 ~]#

 

一、系统日志管理

1. 日志文件的分类(日志保存在/var/log下)

内核及系统日志

由系统服务rsyslog统一进行管理

         /var/log/messages      内核及公共消息日志

         /var/log/cron       计划任务日志

         /var/log/dmesg            系统引导日志

         /var/log/maillog       邮件系统日志

         /var/log/secure            记录与访问限制相关日志

用户日志

记录系统用户登录及退出系统的相关信息

         /var/log/lastlog                最近的用户登录事件

         /var/log/wtmp     用户登录、注销及系统开关机

         /var/log/btmp             失败的用户登陆事件

         /var/run/utmp     当前登录的每个用户详细信息    

程序日志

由各种应用程序独立管理的日志文件,记录格式不统一

2. 用户日志分析

users       

w      查看当前登陆的用户

who 比w更加简洁

last  最近系统登陆情况

lastb         最近系统登陆失败的情况

3. 系统及内核日志格式

时间标签           主机名    子系统名称    消息

4. rsyslog管理日志

配置文件:/etc/rsyslog.conf

格式如下

服务类别.日志级别           日志消息发送位置

5. 日志消息的级别

连接符号

. 记录大于等于此等级

.= 只记录等于此等级的信息

.! 不等于此等级,也就是记录此等级之外的信息

 

0  EMERG(紧急)                会导致主机系统不可用的情况

1  ALERT(警告)                  必须马上采取措施解决的问题

2  CRIT(严重)            比较严重的情况

3  ERR(错误)             运行出现错误

4  WARNING(提醒)  可能会影响系统功能的事件

5  NOTICE(注意)                不会影响系统但值得注意

6  INFO(信息)            一般信息

7  DEBUG(调试)                程序或系统调试信息等

 

二、logrotate日志轮转

1. logrotate轮转

         减小日志大小,降低分析难度

         丢弃过期日志节省空间

         结合cron每天执行

2. 软件包

         logrotate

3. 主配置文件(daily,weekly, monthly, or yearly)

         /etc/logrotate.conf

         weekly  轮转频率,默认每周

         rotate 4          保留4个轮转备份

         create   执行轮转后创建新文件

         #compress     是否压缩日志

         include /etc/logrotate.d                  包含此目录下的配置

         /var/log/wtmp {                       启用轮转的日志文件

                       monthly                             每月轮转一次

                   missingok                丢失不提示

                       notifempty              如果为空则不轮转

                       minsize1M             日志达到1MB才开始轮转

                       create0664 root utmp           建新文件并设权限

                       rotate1                               只保留一个备份

                   }       

logrotate 手工执行轮转

         -v      启动显示模式

         -f       强制rotate

/var/lib/logrotate.status

 

    ** size生效的话,会忽略轮转频率

 

 

 

 

 

练习一:创建卷组

    1)准备3块10G的空闲分区,将类型ID修改为(LVM)

[root@test01 ~]#parted /dev/sdb mktable gpt

警告: 正在使用 /dev/sdb上的分区。                                       

忽略/Ignore/放弃/Cancel?i                                                

警告: The existing disklabel on /dev/sdb will be destroyed and all data on this disk will

be lost. Do youwant to continue?

是/Yes/否/No? y                                                          

警告: WARNING: thekernel failed to re-read the partition table on /dev/sdb (设备或资源忙).  As a

result, it maynot reflect all of your changes until after reboot.

[root@test01 ~]#

 

[root@test01 ~]#parted /dev/sdb mkpart primary 0 10G

[root@test01 ~]#parted /dev/sdb mkpart primary 10G 20G

[root@test01 ~]#parted /dev/sdb mkpart primary 20G 30G

[root@test01 ~]#partx -a /dev/sdb

Primary GPT isinvalid, using alternate GPT.

[root@test01 ~]#ls /dev/sdb*

/dev/sdb  /dev/sdb1 /dev/sdb2  /dev/sdb3

[root@test01 ~]#

 

    2)使用其中2块分区组建名为myvg的卷组,查看此卷组信息

         a)先检查有哪些物理卷

[root@test01 ~]#pvscan

  No matching physical volumes found

[root@test01 ~]#

         b)将两块空闲分区转换成物理卷

[root@test01 ~]#pvcreate /dev/sdb1 /dev/sdb2

  Physical volume "/dev/sdb1"successfully created

  Physical volume "/dev/sdb2"successfully created

         c)再检查有哪些物理卷,查看其中一个物理卷的详细信息

[root@test01 ~]#pvscan

  PV /dev/sdb1                      lvm2 [9.31 GiB]

  PV /dev/sdb2                      lvm2 [9.31 GiB]

  Total: 2 [18.63 GiB] / in use: 0 [0   ] / in no VG: 2 [18.63 GiB]

[root@test01 ~]#

[root@test01 ~]#pvdisplay /dev/sdb1

  "/dev/sdb1" is a new physicalvolume of "9.31 GiB"

  --- NEW Physical volume ---

  PV Name               /dev/sdb1

  VG Name              

  PV Size               9.31 GiB

  Allocatable           NO

  PE Size               0  

  Total PE              0

  Free PE               0

  Allocated PE          0

  PV UUID              zEk8cH-OeDL-XlXf-2084-cRmT-4tWt-UvYJae

  

[root@test01 ~]#

 

         d)先查看有哪些卷组

[root@test01 ~]#vgscan

  Reading all physical volumes.  This may take a while...

  No volume groups found

[root@test01 ~]#

 

         e)将两个物理卷整编成卷组myvg

[root@test01 ~]#vgcreate myvg /dev/sdb1 /dev/sdb2

  Volume group "myvg" successfullycreated

[root@test01 ~]#

 

         f)再查看有哪些卷组,并查看卷组myvg的详细信息

[root@test01 ~]#vgdisplay myvg

  --- Volume group ---

  VG Name               myvg

  System ID            

  Format                lvm2

  Metadata Areas        2

......

        

练习二:创建/使用/扩展逻辑卷

    1)划分一个16G的逻辑卷,名称为lvmbox,查看逻辑卷信息

[root@test01 ~]#lvcreate -L 16G -n lvmbox myvg

  Logical volume "lvmbox" created

[root@test01 ~]#

[root@test01 ~]#lvdisplay /dev/myvg/lvmbox

  --- Logical volume ---

  LV Path                /dev/myvg/lvmbox

  LV Name                lvmbox

  VG Name                myvg

  LV UUID               d4HvTZ-DX20-x2SE-wUmI-VSuw-GF5y-N3S5ON

  LV Write Access        read/write

  LV Creation host, time test01.tarena.com,2015-02-03 19:17:00 +0800

  LV Status              available

......

 

    2)将此逻辑卷格式化为ext4文件系统,并挂载到/mbox目录

[root@test01 ~]#mkfs.ext4 /dev/myvg/lvmbox

[root@test01 ~]#mkdir /mbox

[root@test01 ~]#mount /dev/myvg/lvmbox  /mbox/

[root@test01 ~]#mount | tail -n 1

/dev/mapper/myvg-lvmboxon /mbox type ext4 (rw)

[root@test01 ~]#

 

    3)进入/mbox目录,测试读写操作

[root@test01 ~]#mount | tail -n 1

/dev/mapper/myvg-lvmboxon /mbox type ext4 (rw)

[root@test01 ~]#cd /mbox/

[root@test01mbox]# touch 1.txt

[root@test01mbox]# ls

1.txt  lost+found

[root@test01mbox]#

 

    4)将逻辑卷从16G扩展为24G,确保df识别的大小准确

         a)先扩展卷组(增加一个10G物理卷),再扩展逻辑卷

[root@test01 /]#pvcreate /dev/sdb3

  Physical volume "/dev/sdb3"successfully created

[root@test01 /]#vgextend myvg /dev/sdb3

  Volume group "myvg" successfullyextended

[root@test01 /]#vgs

  VG  #PV #LV #SN Attr   VSize  VFree

  myvg  3   1   0 wz--n- 27.93g 11.93g

[root@test01 /]#

[root@test01 /]#lvextend -L 24G /dev/myvg/lvmbox

  Extending logical volume lvmbox to 24.00 GiB

  Logical volume lvmbox successfully resized

[root@test01 /]#

[root@test01 /]#lvs

  LV    VG   Attr       LSize Pool Origin Data%  Move LogCpy%Sync Convert

  lvmbox myvg -wi-ao---- 24.00g                                            

[root@test01 /]#df -h

Filesystem                           Size  Used Avail Use% Mounted on

......

/dev/mapper/myvg-lvmbox               16G  172M  15G   2% /mbox

[root@test01 /]#

 

         b)resize2fs识别新文件系统的大小

[root@test01 /]#resize2fs /dev/myvg/lvmbox

resize2fs1.41.12 (17-May-2010)

Filesystem at/dev/myvg/lvmbox is mounted on /mbox; on-line resizing required

old desc_blocks= 1, new_desc_blocks = 2

Performing anon-line resize of /dev/myvg/lvmbox to 6291456 (4k) blocks.

The filesystemon /dev/myvg/lvmbox is now 6291456 blocks long.

 

[root@test01 /]#df -h

Filesystem                           Size  Used Avail Use% Mounted on

......

/dev/mapper/myvg-lvmbox               24G  172M   23G  1% /mbox

[root@test01 /]#

 

    5)创建一个大小为250M的逻辑卷lvtest

[root@test01 /]#lvcreate -L 250M -n lvtest myvg

  Rounding up size to full physical extent252.00 MiB

  Logical volume "lvtest" created

[root@test01 /]#

更改pe的大小

[root@test01 /]#vgchange -s 1M myvg

  Volume group "myvg" successfullychanged

[root@test01 /]#vgdisplay | grep PE

  PE Size               1.00 MiB

  Total PE              28600

  Alloc PE / Size       24828 / 24.25 GiB

  Free PE / Size       3772 / 3.68 GiB

 

[root@test01 /]#lvcreate -L 250M -n lvtest01 myvg

  Logical volume "lvtest01" created

[root@test01 /]#lvs

  LV      VG   Attr       LSize  Pool Origin Data%  Move LogCpy%Sync Convert

  lvmbox  myvg -wi-ao----  24.00g                                            

  lvtest  myvg -wi-a----- 252.00m                                            

  lvtest01 myvg -wi-a----- 250.00m                                            

[root@test01 /]#

 

练习三:逻辑卷综合应用

    1)删除上一练习建立的卷组myvg(要先删除逻辑卷在删除卷组)

[root@test01 /]#lvs

  LV      VG   Attr       LSize  Pool Origin Data%  Move LogCpy%Sync Convert

  lvmbox  myvg -wi-ao----  24.00g                                            

  lvtest  myvg -wi-a----- 252.00m                                            

  lvtest01 myvg -wi-a----- 250.00m                                            

[root@test01 /]#umount /dev/myvg/lvmbox

[root@test01 /]#lvremove /dev/myvg/lvmbox

Do you reallywant to remove active logical volume lvmbox? [y/n]: y

  Logical volume "lvmbox"successfully removed

[root@test01 /]#lvremove /dev/myvg/lvtest

Do you reallywant to remove active logical volume lvtest? [y/n]: y

  Logical volume "lvtest"successfully removed

[root@test01 /]#lvremove /dev/myvg/lvtest01

Do you reallywant to remove active logical volume lvtest01? [y/n]: y

  Logical volume "lvtest01"successfully removed

[root@test01 /]#

[root@test01 /]#vgs

  VG  #PV #LV #SN Attr   VSize  VFree

  myvg  3   0   0 wz--n- 27.93g 27.93g

[root@test01 /]#vgremove myvg

  Volume group "myvg" successfullyremoved

[root@test01 /]#

 

    2)使用其中2个物理卷组成卷组vgnsd,另一个物理卷组成卷组vgdata

[root@test01 /]#pvs

  PV        VG   Fmt  Attr PSize PFree

  /dev/sdb1       lvm2 a-- 9.31g 9.31g

  /dev/sdb2       lvm2 a-- 9.31g 9.31g

  /dev/sdb3       lvm2 a-- 9.31g 9.31g

[root@test01 /]#vgcreate vgnsd /dev/sdb1 /dev/sdb2

  Volume group "vgnsd" successfullycreated

 

[root@test01 /]#vgcreate vgdata /dev/sdb3

  Volume group "vgdata" successfullycreated

[root@test01 /]#

 

 

    3)从卷组vgnsd中创建一个15G的逻辑卷lvhome

[root@test01 /]#lvcreate -L 15G -n lvhome vgnsd

  Logical volume "lvhome" created

[root@test01 /]#

 

    4)从卷组vgdata中创建一个4G的逻辑卷lvswap

[root@test01 /]#lvcreate -L 4G -n lvswap vgdata

  Logical volume "lvswap" created

[root@test01 /]#

 

    5)将/home目录迁移到逻辑卷lvhome上

[root@test01 /]#ls /home/

gelin01  gelin02 ht02  lisi  zhangsan

[root@test01 /]#mkdir /homebak

[root@test01 /]#mv /home/* /homebak/

[root@test01 /]#ls /home

[root@test01 /]#mkfs.ext4 /dev/vgnsd/lvhome

[root@test01 /]#mount /dev/vgnsd/lvhome /home

[root@test01 /]#mv /homebak/* /home

[root@test01 /]#ls /home

gelin01  gelin02 ht02  lisi  lost+found zhangsan

[root@test01 /]#

 

    6)将逻辑卷lvswap扩展到交换空间

[root@test01 /]#mkswap /dev/vgdata/lvswap

mkswap:/dev/vgdata/lvswap: warning: don't erase bootbits sectors

        on whole disk. Use -f to force.

Setting upswapspace version 1, size = 4194300 KiB

no label,UUID=421e16ea-67f8-4821-9127-d010387ddd5c

[root@test01 /]#swapon /dev/vgdata/lvswap

[root@test01 /]#swapon -s

Filename                                Type            Size   Used    Priority

/dev/sda5                               partition       8388600 0       -1

/dev/dm-1                               partition       4194296 0       -2

[root@test01 /]#

 

    7)为第5、6步配置开机自动挂载,重启后验证

[root@test01 /]#tail -n 2 /etc/fstab

/dev/vgnsd/lvhome       /home           ext4    defaults 0 0

/dev/vgdata/lvswap     swap           swap     defaults 0 0

[root@test01 /]#

 

练习四:系统服务启动控制

    1)检查系统里有多少个独立服务

[root@test01 /]#ls -l /etc/init.d/ | wc -l

61

[root@test01 /]#

 

    2)查看autofs服务是否启动

[root@test01 /]#/etc/init.d/autofs status

automount(pid  1422) 正在运行...

[root@test01 /]#

 

    3)停止autofs服务,再次查看服务的运行状态、

[root@test01 /]#/etc/init.d/autofs stop

停止 automount:[确定]

[root@test01 /]#/etc/init.d/autofs status

automount 已停

[root@test01 /]#

 

    4)查看network服务支持哪几种控制方式

[root@test01 /]#/etc/init.d/network 

用法:/etc/init.d/network{start|stop|status|restart|reload|force-reload}

[root@test01 /]#

 

    5)重启bluetooth、network服务

[root@test01 /]#/etc/init.d/bluetooth restart

用法:/etc/init.d/bluetooth{start|stop}

[root@test01 /]#/etc/init.d/bluetooth stop

StoppingBluetooth services:

[root@test01 /]#/etc/init.d/bluetooth start

启动蓝牙设备:

[root@test01 /]#/etc/init.d/network restart

正在关闭接口 eth0: [确定]

关闭环回接口: [确定]

弹出环回接口: [确定]

弹出界面 eth0: Determiningif ip address 192.168.10.10 is already in use for device eth0...

[确定]

[root@test01 /]#

 

    6)启动vsftpd和httpd服务

[root@test01 /]#yum -y install vsftpd

[root@test01 /]#/etc/init.d/vsftpd restart

关闭 vsftpd:[确定]

为 vsftpd 启动 vsftpd:[确定]

[root@test01 /]#

[root@test01 /]#yum -y install httpd

[root@test01 /]#/etc/init.d/httpd restart

停止 httpd:[失败]

正在启动 httpd:httpd:apr_sockaddr_info_get() failed for test01.tarena.com

httpd: Could notreliably determine the server's fully qualified domain name, using 127.0.0.1for ServerName

[确定]

[root@test01 /]#

 

    7)验证vsftpd和httpd服务是否启动成功

[root@test01 /]#/etc/init.d/vsftpd status

vsftpd (pid2362) 正在运行...

[root@test01 /]#/etc/init.d/httpd status

httpd (pid  2396) 正在运行...

[root@test01 /]#

 

练习五:临时服务启动控制

    1)检查系统里有多少个临时服务

[root@test01 /]#ls -l /etc/xinetd.d/

总用量 4

-rw-r--r--. 1root root 332 10月 23 2013 rsync

[root@test01 /]#

    2)启动telnet服务(telnet软件包叫telnet-server)

[root@test01 /]#yum -y install telnet-server

[root@test01 /]#grep disable /etc/xinetd.d/telnet

        disable         = no

[root@test01 /]#/etc/init.d/xinetd restart

停止 xinetd:[失败]

正在启动 xinetd:[确定]

[root@test01/]# 

 

练习六:自启状态控制(chkconfig)

    1)查看所有系统服务在不同运行级别的自启状态

[root@test01 /]#chkconfig --list

 

    2)查看autofs服务的自启状态

[root@test01 /]#chkconfig --list autofs

autofs          0:关闭  1:关闭  2:关闭  3:启用  4:启用  5:启用  6:关闭

[root@test01 /]#

 

    3)将autofs服务在运行级别3、5的自启状态设为关闭

[root@test01 /]#chkconfig --level 35 autofs off

[root@test01 /]#chkconfig --list autofs

autofs          0:关闭  1:关闭  2:关闭  3:关闭  4:启用  5:关闭  6:关闭

[root@test01 /]#

 

    4)将autofs服务在所有运行级别的自启状态设为关闭

[root@test01 /]#chkconfig --level 0123456 autofs off

[root@test01 /]#chkconfig --list autofs

autofs          0:关闭  1:关闭  2:关闭  3:关闭  4:关闭  5:关闭  6:关闭

[root@test01 /]#

 

    5)将autofs服务运行级别3、5的自启状态设为开启

[root@test01 /]#chkconfig --level 35 autofs on

[root@test01 /]#chkconfig --list autofs

autofs          0:关闭  1:关闭  2:关闭  3:启用  4:关闭  5:启用  6:关闭

[root@test01 /]#

 

    6)确保vsftpd和httpd开机自启动

[root@test01 /]#chkconfig vsftpd on

[root@test01 /]#chkconfig httpd on

[root@test01 /]#chkconfig --list vsftpd

vsftpd          0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭

[root@test01 /]#chkconfig --list httpd

httpd           0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭

[root@test01 /]#

 

练习七:减少Linux资源占用(ntsysv)

    1)将不常用服务在运行级别3、5的自启状态设为关闭

         NetworkManager、bluetooth、cupspeed

         firstboot、ip6tables、iptables、rhnsd、rhsmcertd

        

 

 

计划任务管理

Linux系统引导过程

进程管理

#################################################

一、计划任务管理

1. at 一次性执行进程atd        /var/spool/at下

date 查看当前时间

atq   查询at任务

atrm         删除at任务

# at 10:05

# at 10:052013-12-20

# at 10pmdecember 14

# at now +5[minutes|hours|days|weeks]

 

2. cron      周期性任务服务名crond       /var/spool/cron

软件包

        vixie-cron

        crontabs

crontab -e [ -uusername]        编辑

        -l   查看

        -r   删除

格式:

分 时 日 月 周     命令

*    表示该范围内的任意时间

,    表示间隔的多个不连续时间点

-    表示一个连续的时间范围

/    指定间隔的时间频率

3. 计划任务授权

at任务控制

         /etc/at.allow、/etc/at.deny

crond任务控制

         /etc/cron.allow、/etc/cron.deny

如果allow文件存在,则仅允许指定的用户

否则检查deny文件,除指定用户外其余都允许

如果两个文件都不存在,则只允许root使用

4. cron计划中断与补救

anacron延时补救

/etc/init.d/anacron

/etc/anacrontab

1       65      cron.daily     run-parts/etc/cron.daily

1天    65分钟后

 

二、Linux系统引导过程

 

1. Linux引导过程

    加电自检-->MBR扇区-->GRUB配置(/boot/grub/grub.conf)

-->root(hd0,0)

     kernel (/boot/vmlinuz-....) -->/sbin/init (PID恒为1)

     initrd (/boot/initrd-... .img)

-->/etc/inittab:

    /etc/rc.d/rc.sysinit

    /etc/rc.d/rc 级别  (initdefault默认级别)(0、1、3、5、6)

                 --> /etc/rcX.d/快捷方式 (S75服务名、K24服务名)

                                     -->/etc/rc.d/init.d/服务脚本

                    -->S99local --> /etc/rc.local (自定开机任务)

   mingetty tty1-tty6 -->

   --> login --> 验证用户配置(passwd、shadow)

                        --> /bin/bash -->用户正常执行命令

 

    ** 如果进入运行级别5,则继续 -->GNOME桌面环境 --> 登录窗口

 

2. RHEL5的运行级别

    各运行级别含义:

         0:关机

         1:单用户模式

         2:字符界面的多用户模式(不支持网络)

         3:字符界面的完整多用户模式

         4:未分配使用

         5:图形界面的多用户模式

         6:重启

 

    查看运行级别:runlevel

         ** 输出结果为2个值(前一次级别  当前级别)

         ** 若前一次为N,表示开机后未执行过切换

 

    手动切换运行级别:init  级别

         比如:init  3、init  5、init  0、init  6

 

3. 主要的启动配置文件

    /etc/inittab:配置init程序的引导过程

    /etc/rc.d/rc.sysinit:由init调用执行,设置网络/时钟、加载文件系统等一系列工作

    /etc/rc.d/rc:由init调用执行,根据运行级别参数,加载/终止相应服务

    /etc/rc.d/rc.local:由rc脚本调用执行,存放用户自定义的开机后自动执行的命令

    /etc/rc.d/init.d/*:各系统服务的可执行脚本程序

 

         ** 上述路径中的 rc.d 通常可以省略,因为默认建立有相关的快捷方式

         ** 比如 /etc/init.d ->/etc/rc.d/init.d、 /etc/rc.local -> /etc/rc.d/rc.local

 

 

4. 设置默认运行级别

[root@svr5 ~]#vim  /etc/inittab

id:3:initdefault:                           【修改为对应的运行级别值】

 

5. 禁用TTY控制台的Ctrl+Alt+Del热键重启功能

[root@svr5 ~]#vim  /etc/init/control-alt-delete.conf

#ca::ctrlaltdel:/sbin/shutdown-t3 -r now       【注释掉此行】

 

 

 

三、进程管理

 

1. 查看进程信息

    查看所有进程的静态快照:ps  aux、ps  -elf

    ** 常见的STAT状态指示:R 运行中、S 休眠状态、Z 僵死状态

 

    查看进程的动态排名:top、top -d5

 

    查看进程树:pstree、pstree  PID、pstree  用户名

    常用命令选项

         -a:显示完整的命令行

         -u:列出各进程所属的用户名

         -p:列出对应的PID号

 

    按条件检索进程:

         pgrep 关键词、pgrep  -U  用户名、pgrep  -t  终端名

         ** 加选项 -l 可同时输出进程名,否则只输出PID

 

2. 进程的前后台调度

    直接启动后台任务: 命令行  &

    挂起当前任务(转入后台并暂停运行):快捷键Ctrl + z

    终止当前任务:快捷键 Ctrl + c

 

    查看后台任务列表:jobs 、jobs  -l

    将后台任务恢复到前台运行:fg、fg  任务编号

    激活后台被挂起的任务:bg、bg  任务编号

         ** 未指定序号时,缺省为最近1个后台任务

 

3. 关闭进程

    按PID杀死进程:kill  PID、kill  -9  PID

    按进程名杀死进程:killall  进程名

 

 

    按条件检索并杀死进程:

         pkill 关键词、pkill  -U  用户名、pkill  -t  终端名

         ** 用法与 pgrep类似

 

    图形桌面下点杀窗口程序:xkill

 

一、查看及测试网络

 

1. 查看网络

    1)查看网卡的IP/MAC信息

         ifconfig、ifconfig  -a、ifconfig 接口名                  【-a列出所有接口】

 

         ** HWaddr: 对应的是网卡的MAC地址

         ** inet addr: 对应的是IPv4地址

         ** 主要接口类型:

                   ethN 以太网连接、lo 本地回环接口

                   sitN:ipv6地址网卡接口

                   fddN:光纤网卡

                   PPPN:ADSL宽带或×××连接

 

   2) 查看主机名

         hostname

 

    3)查看路由表条目

         route -n  或 netstat  -rn

 

         ** 标记为“UG”的表示网关记录

         ** 到目标网段 0.0.0.0/0.0.0.0网关记录称为“默认网关”

 

    4)查看网络连接状况

         格式:netstat  [选项]...

         常用选项:

                   -a:显示所有活动连接

                   -n:以数字形式显示

                   -p:显示进程信息

                   -t:查看TCP连接信息

                   -u:查看UDP连接信息

 

         ** 状态 LISTEN 表示有对应监听的网络服务

         ** 状态 ESTABLISHED 表示已建立的TCP连接

         ** 状态 TIME_WAIT 表示在等待客户端请求的连接

         ** 用法示例:

                   netstat  -anptu | grep :80    ==>查看Web服务的监听状态进程

                   netstat  -anptu | grep httpd ==>查看httpd进程的监听端口

 

    5)查看 arp缓存表

         arp -an 

 

2. 测试网络

    1)测网络连通性

         格式:ping  目标主机

 

         ** 选项 -c 包个数、-s 包大小

         ** 默认会持续ping,按Ctrl+c可终止

 

         ** 返回 “xx bytes from 目标主机...” 表示连接正常

         ** 返回 “Request timeout” 表示网络不通,或者延迟较大

         ** 返回 “Network isunreachable”表示网络不可达,通常是未设置默认网关

         ** 返回 “Destination HostUnreachable”表示目标主机不可达,配置不通或未开机

 

    2)测试域名解析

         格式:host  目标主机  [DNS服务器]

                   nslookup  目标主机  [DNS服务器]

 

         ** 必须有可用的DNS服务器,否则将无法解析

         ** 若无法解析域名,就不能以域名的方式访问目标站点

         ** 若测试时未指定DNS服务器地址,则使用/etc/resolv.conf中设置的地址

 

    3)跟踪路由过程

         格式:tracert    目标地址

                   traceroute    目标地址

                   mtr   目标地址       【集成ping和tracert优势】

 

 

二、配置网络地址

 

1. 主要配置方式

    临时配置:命令行调整,重启后失效

         ifconfig、hostname、route、arp

 

    固定配置:静态文件,重启后仍然有效

                   |

                   |--> 主机名、网卡、DNS、hosts

 

         ** 修改网卡配置文件 --> 重启network服务

 

2. 临时配置

    修改IP地址:

         ifconfig  接口名称  IP地址[/掩码长度]

 

 

 

    禁用、激活网络接口

         ifconfig  接口  down

         ifconfig  接口  up

 

    修改主机名:

         hostname  新的主机名

 

    添加/删除默认网关记录

         route add  default  gw  IP地址

         route del  default  gw  IP地址

 

    添加静态路由

         route add  -net  目标网段  gw  IP地址

         route del  -net  目标网段

 

 

3. 配置文件路径:

    网卡配置:/etc/sysconfig/network-scripts/ifcfg-接口名

                                   --> IP地址、MAC地址、子网掩码、默认网关

        ** 典型配置含义:

         DEVICE=eth0                   //设备名

         TYPE=Ethernet                //网络类型

         BOOTPROTO=none        //或者dhcp、static

         HWADDR=00:0C:29:82:09:E9       //物理MAC地址

         ONBOOT=yes                  //是否启用

         NETMASK=255.255.255.0     //子网掩码

         IPADDR=192.168.8.128         //指定的静态IP地址

        

          **可以通过MACADDR=00:0C:29:82:09:E8修改mac地址注意注释原来的行

 

    主机名配置:/etc/sysconfig/network

         HOSTNAME=新的主机名

        GATEWAY=192.168.8.1          //默认网关地址

    DNS设置:/etc/resolv.conf

         search localdomain                 //默认搜索域/后缀

         nameserver 192.168.4.1       //DNS服务器1的IP地址

         nameserver 202.106.0.20     //DNS服务器2的IP地址

 

         ** 还可在网卡配置中设置 DNS1=、DNS2= 来指定,但不推荐使用

         ** 因为重启 network 服务后,还是会自动写入到/etc/resolv.conf 文件内

 

    本地主机名映射文件:/etc/hosts

         ** 用来存放“主机名IP地址”映射记录

         ** 可提高域名解析效率(先找hosts文件,再找DNS服务器)

 

    静态路由:/etc/sysconfig/network-scripts/route-eth1

        cat/etc/sysconfig/network-scripts/route-eth1

        10.0.0.0/8      via 192.168.10.252 dev eth1

        去往的网段      via   下一跳地址   dev  出口设备

 

三、Linux远程控制

 

OpenSSH,Secure SHell

    服务端程序:sshd

    服务配置:/etc/ssh/sshd_config

            Port 22                        【SSH协议的标准端口】

            UseDNS no                          【不使用DNS解析】

 

Linux客户端的SSH程序

     远程登录:

         ssh 用户名@服务器地址

                ssh -X  用户名@服务器地址

         ** 客户端得运行在桌面下,手动加载图形程序)

 

     远程安全复制:

         scp -r 用户名@服务器地址:/文件路径  本地路径

                scp -r 本地文件或目录路径  用户名@服务器地址:远程路径

 

 

 

Windows客户端的SSH程序

    SecureCRT

    Putty(....)

    F-Secure

    WinSCP

 

 

练习一:rwx权限验证

    1)以普通用户zhangsan登入

         a)检查/etc/passwd、/etc/shadow文件的权限

[root@test01 ~]#useradd zhangsan

[root@test01 ~]#su - zhangsan

[zhangsan@test01~]$ ls -l /etc/passwd /etc/shadow

-rw-r--r--. 1root root 1623 2月   1 19:29 /etc/passwd

----------. 1root root  939 2月   1 19:29 /etc/shadow

[zhangsan@test01~]$

         b)尝试查看/etc/passwd、/etc/shadow文件的开头两行

[zhangsan@test01~]$ head -n 2 /etc/passwd /etc/shadow

==>/etc/passwd <==

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

head: 无法打开"/etc/shadow"读取数据: 权限不够

[zhangsan@test01~]$

         c)检查/root/、/home/lisi/目录的权限

[root@test01 ~]#useradd lisi

[root@test01 ~]#su - zhangsan

[zhangsan@test01~]$ ls -ld /root/

dr-xr-x---. 27root root 4096 2月   1 19:26 /root/

[zhangsan@test01~]$ ls -ld /home/lisi

drwx------. 4lisi lisi 4096 2月   1 19:30 /home/lisi

[zhangsan@test01~]$

         d)尝试查看/root/、/home/lisi目录下有哪些内容

[zhangsan@test01~]$ ls /home/lisi/

ls: 无法打开目录/home/lisi/:权限不够

[zhangsan@test01~]$ ls /root/

ls: 无法打开目录/root/:权限不够

[zhangsan@test01~]$

    2)以root用户登入

         a)检查/home/zhangsan/目录的权限

[root@test01 ~]#ls -ld /home/lisi/

drwx------. 4lisi lisi 4096 2月   1 19:30 /home/lisi/

[root@test01 ~]#

         b)将文件/root/install.log复制到/home/zhangsan/目录下

[root@test01 ~]#ls /home/zhangsan/

ls.help

[root@test01 ~]#cp /root/install.log /home/zhangsan/

[root@test01 ~]#ls /home/zhangsan/

install.log  ls.help

[root@test01 ~]#

         c)在/home/zhangsan/目录下创建一个子目录rootdir

[root@test01 ~]#ls /home/zhangsan

install.log  ls.help

[root@test01 ~]#mkdir -p /home/zhangsan/rootdir

[root@test01 ~]#ls /home/zhangsan

install.log  ls.help rootdir

[root@test01 ~]#

        

    3)再次以普通用户zhangsan登入

         a)检查家目录下install.log文件、rootdir/目录的权限

[root@test01 ~]#su - zhangsan

[zhangsan@test01~]$ ls

install.log  ls.help rootdir

[zhangsan@test01~]$ ls -l

总用量 52

-rw-r--r--. 1root     root     39321 2月   1 19:33 install.log

-rw-r--r--. 1zhangsan zhangsan  6513 1月  28 18:48 ls.help

drwxr-xr-x. 2root     root      4096 2月   1 19:34 rootdir

         b)将install.log文件改名为inst.txt,将rootdir/目录改名为rtdir

[zhangsan@test01~]$ ls

install.log  ls.help rootdir

[zhangsan@test01~]$ mv install.log inst.txt

[zhangsan@test01~]$ ls

inst.txt  ls.help rootdir

[zhangsan@test01~]$ mv rootdir/ rtdir

[zhangsan@test01~]$ ls

inst.txt  ls.help rtdir

[zhangsan@test01~]$

         c)删除文件inst.txt,删除目录rtdir/

[zhangsan@test01~]$ ls

inst.txt  ls.help rtdir

[zhangsan@test01~]$ rm -rf *

[zhangsan@test01~]$ ls

[zhangsan@test01~]$

 

练习二:chmod权限设置1(字符方式)

    1)新建/nsddir/目录,在该目录下新建文件readme.txt

[root@test01 ~]#whoami

root

[root@test01 ~]#mkdir /nsddir

[root@test01 ~]#touch /nsddir/readme.txt

[root@test01 ~]#ls /nsddir/

readme.txt

[root@test01 ~]#

    2)使用户zhangsan能够在/nsddir/目录下创建/删除子目录

[root@test01 ~]#su - zhangsan

[zhangsan@test01~]$ cd /nsddir/

[zhangsan@test01nsddir]$ ls

readme.txt

[zhangsan@test01nsddir]$ mkdir zhangsandir

mkdir: 无法创建目录"zhangsandir":权限不够

[zhangsan@test01nsddir]$ exit

logout

[root@test01 ~]#chmod o+w /nsddir/

[root@test01 ~]#ls -ld /nsddir/

drwxr-xrwx. 2root root 4096 2月  1 19:39 /nsddir/

[root@test01 ~]#su - zhangsan

[zhangsan@test01~]$ cd /nsddir/

[zhangsan@test01nsddir]$ ls

readme.txt

[zhangsan@test01nsddir]$ mkdir zhangsandir

[zhangsan@test01nsddir]$ ls

readme.txt  zhangsandir

[zhangsan@test01nsddir]$

    3)使用户zhangsan能够修改/nsddir/readme.txt文件的容

[zhangsan@test01nsddir]$ whoami

zhangsan

[zhangsan@test01nsddir]$ ls

readme.txt  zhangsandir

[zhangsan@test01nsddir]$ echo 123 > readme.txt

-bash:readme.txt: 权限不够

[zhangsan@test01nsddir]$ exit

logout

[root@test01 ~]#chmod o+w /nsddir/readme.txt

[root@test01 ~]#ls -l /nsddir/readme.txt

-rw-r--rw-. 1root root 0 2月   1 19:39 /nsddir/readme.txt

[root@test01 ~]#su - zhangsan

[zhangsan@test01~]$ cd /nsddir/

[zhangsan@test01nsddir]$ echo 123 > readme.txt

[zhangsan@test01nsddir]$ cat readme.txt

123

[zhangsan@test01nsddir]$

    4)调整/nsddir/目录的权限,使任何用户都不能进入该目录

[root@test01 ~]#su - zhangsan

[zhangsan@test01~]$ cd /nsddir/

[zhangsan@test01nsddir]$ exit

logout

[root@test01 ~]#chmod a-x /nsddir/

[root@test01 ~]#su - zhangsan

[zhangsan@test01~]$ cd /nsddir/

-bash: cd:/nsddir/: 权限不够

[zhangsan@test01~]$

    5)测试用户zhangsan是否还能修改/nsddir/readme.txt文件的内容

[root@test01 ~]#su - zhangsan

[zhangsan@test01~]$ echo 1234 > /nsddir/readme.txt

-bash:/nsddir/readme.txt: 权限不够

[zhangsan@test01~]$

    6)将/nsddir/目录及其下所有内容的权限都设置为 rwxr-x---

[root@test01 ~]#chmod -R 750 /nsddir/

[root@test01 ~]#ls -l /nsddir/

总用量 8

-rwxr-x---. 1root     root        4 2月   1 19:43 readme.txt

drwxr-x---. 2zhangsan zhangsan 4096 2月   1 19:40 zhangsandir

[root@test01 ~]#

 

练习三:chmod权限设置2(数值方式)

    1)参考练习二 (测试目录/nsddir改为/nsddir1)

 

 

 

 

 

 

 

 

 

练习四:目录/文件的默认权限

    1)新建目录tdir1,同时将权限设为rwxr-xr-x

[root@test01 ~]#mkdir -m 755 /tdir1

[root@test01 ~]#ls -ld /tdir1/

drwxr-xr-x. 2 rootroot 4096 2月   1 19:51 /tdir1/

[root@test01 ~]#

    2)以用户root登入,测试umask掩码值

         a)查看当前的umask值

[root@test01 ~]#umask

0022

[root@test01 ~]#

         b)新建目录udir1、文件ufile1,查看默认权限

[root@test01 ~]#mkdir udir1

[root@test01 ~]#touch ufile1

[root@test01 ~]#ls -ld udir1/ ufile1

drwxr-xr-x. 2root root 4096 2月   1 19:53 udir1/

-rw-r--r--. 1root root    0 2月   1 19:53 ufile1

[root@test01 ~]#

         c)将umask设为077,再新建目录udir2、文件ufile2,查看默认权限,再将umask值改回022

[root@test01 ~]#umask 077

[root@test01 ~]#umask

0077

[root@test01 ~]#mkdir udir2

[root@test01 ~]#touch ufile2

[root@test01 ~]#ls -ld udir2/ ufile2

drwx------. 2root root 4096 2月   1 19:54 udir2/

-rw-------. 1root root    0 2月   1 19:54 ufile2

[root@test01 ~]#umask 022

[root@test01 ~]#umask

0022

[root@test01 ~]#

    3)以用户zhangsan登入,测试umask掩码值

         a)查看当前的umask值

[root@test01 ~]#su - zhangsan

[zhangsan@test01~]$ umask

0002

[zhangsan@test01~]$

         b)新建目录udir1、文件ufile1,查看默认权限

[zhangsan@test01~]$ mkdir udir1

[zhangsan@test01~]$ touch ufile1

[zhangsan@test01~]$ ls -ld udir1/ ufile1

drwxrwxr-x. 2zhangsan zhangsan 4096 2月   1 19:56 udir1/

-rw-rw-r--. 1zhangsan zhangsan    0 2月   1 19:56 ufile1

[zhangsan@test01~]$

         c)将umask设为077,再新建目录udir2、文件ufile2,查看默认权限,再将umask值改回002   

[zhangsan@test01~]$ umask

0002

[zhangsan@test01~]$ umask 077

[zhangsan@test01~]$ umask

0077

[zhangsan@test01~]$ mkdir udir2

[zhangsan@test01~]$ touch ufile2

[zhangsan@test01~]$ ls -ld udir2 ufile2

drwx------. 2zhangsan zhangsan 4096 2月   1 19:57 udir2

-rw-------. 1zhangsan zhangsan    0 2月   1 19:57 ufile2

[zhangsan@test01~]$ umask 002

[zhangsan@test01~]$ umask

0002

[zhangsan@test01~]$

练习五:chown归属设置

    1)新建/tarena1目录

         a)将属主设为gelin01,属组设为tarena组

[root@test01 ~]#mkdir /tarena1

[root@test01 ~]#useradd gelin01

[root@test01 ~]#groupadd tarena

[root@test01 ~]#ls -ld /tarena1/

drwxr-xr-x. 2root root 4096 2月   1 19:58 /tarena1/

[root@test01 ~]#chown gelin01:tarena /tarena1/

[root@test01 ~]#ls -ld /tarena1/

drwxr-xr-x. 2gelin01 tarena 4096 2月   1 19:58 /tarena1/

[root@test01 ~]#

         b)使用户gelin01对此目录具有rwx权限,其他人对此目录无任何权限

[root@test01 ~]#ls -ld /tarena1/

drwxr-xr-x. 2gelin01 tarena 4096 2月   1 19:58 /tarena1/

[root@test01 ~]#chmod o=- /tarena1/

[root@test01 ~]#ls -ld /tarena1/

drwxr-x---. 2gelin01 tarena 4096 2月   1 19:58 /tarena1/

[root@test01 ~]#

    2)使用户gelin02能进入、查看/tarena1文件夹

[root@test01 ~]#ls -ld /tarena1/

drwxr-x---. 2gelin01 tarena 4096 2月   1 19:58 /tarena1/

[root@test01 ~]#useradd -G tarena gelin02

[root@test01 ~]#su - gelin02

[gelin02@test01~]$ cd /tarena1/

[gelin02@test01tarena1]$ ls

[gelin02@test01tarena1]$

    3)新建/tarena2目录

         a)将属组设为tarena

[root@test01 ~]#mkdir /tarena2

[root@test01 ~]#ls -ld /tarena2

drwxr-xr-x. 2root root 4096 2月   1 20:02 /tarena2

[root@test01 ~]#chown :tarena /tarena2

[root@test01 ~]#ls -ld /tarena2

drwxr-xr-x. 2root tarena 4096 2月   1 20:02 /tarena2

[root@test01 ~]#

         b)使tarena组的任何用户都能在此目录下创建、删除文件

[root@test01 ~]#chmod g=rwx /tarena2

[root@test01 ~]#ls -ld /tarena2

drwxrwxr-x. 2root tarena 4096 2月   1 20:02 /tarena2

[root@test01 ~]#id gelin02

uid=503(gelin02)gid=504(gelin02) 组=504(gelin02),503(tarena)

[root@test01 ~]#su - gelin02

[gelin02@test01~]$ cd /tarena2

[gelin02@test01tarena2]$ mkdir gelin02

[gelin02@test01tarena2]$ ls

gelin02

[gelin02@test01tarena2]$

    4)新建/tarena/public目录

         a)使任何用户对此目录都有写入权限

[root@test01 ~]#mkdir -p /tarena/public

[root@test01 ~]#chmod 777 /tarena/public/

[root@test01 ~]#ls -ld /tarena/public/

drwxrwxrwx. 2root root 4096 2月   1 20:07 /tarena/public/

[root@test01 ~]#

         b)以用户zhangsan登入,在此目录下创建子目录zhsdir、文件zhsfile

[root@test01 ~]#su - zhangsan

[zhangsan@test01~]$ mkdir /tarena/public/zhsdir

[zhangsan@test01~]$ touch /tarena/public/zhsfile

[zhangsan@test01~]$ ls /tarena/public/

zhsdir  zhsfile

[zhangsan@test01~]$

         c)以用户lisi登入,将zhsdir改名为lsdir、删除文件zhsfile

[root@test01 ~]#su - lisi

[lisi@test01 ~]$cd /tarena/public/

[lisi@test01public]$ ls

zhsdir  zhsfile

[lisi@test01public]$ mv zhsdir/ lsdir

[lisi@test01public]$ rm -rf zhsfile

[lisi@test01 public]$ls

lsdir

[lisi@test01public]$

 

 

练习六:粘滞位权限

    1)为/tarena/public/目录设置粘滞位权限,所有人都有权写入

[root@test01 ~]#ls -ld /tarena/public/

drwxrwxrwx. 3root root 4096 2月   1 20:10 /tarena/public/

[root@test01 ~]#chmod o+t /tarena/public/

[root@test01 ~]#ls -ld /tarena/public/

drwxrwxrwt. 3root root 4096 2月   1 20:10 /tarena/public/

[root@test01 ~]#

    2)以用户zhangsan登入,在/tarena/public/目录下创建文件zhsfile2

[root@test01 ~]#su - zhangsan

[zhangsan@test01~]$ touch /tarena/public/zhsfile2

[zhangsan@test01~]$ ls -l /tarena/public/zhsfile2

-rw-rw-r--. 1zhangsan zhangsan 0 2月   1 20:12/tarena/public/zhsfile2

[zhangsan@test01~]$

    3)以用户lisi登入,在/tarena/public/目录下创建文件lsfile2

[root@test01 ~]#su - lisi

[lisi@test01 ~]$touch /tarena/public/lsfile2

 

         a)查看文件zhsfile2、lsfile2的权限和归属

[lisi@test01 ~]$ls -l /tarena/public/

总用量 4

drwxrwxr-x. 2zhangsan zhangsan 4096 2月   1 20:08 lsdir

-rw-rw-r--. 1lisi     lisi        0 2月   1 20:14 lsfile2

-rw-rw-r--. 1zhangsan zhangsan    0 2月   1 20:12 zhsfile2

[lisi@test01 ~]$

         b)尝试删除zhsfile2、lsfile2文件

[lisi@test01 ~]$rm -rf /tarena/public/zhsfile2

rm: 无法删除"/tarena/public/zhsfile2":不允许的操作

[lisi@test01 ~]$

 

练习七:setfacl基本操作

    1)创建一个目录 /public/,将权限设置为755

[root@test01 ~]#mkdir /public

[root@test01 ~]#ls -ld /public/

drwxr-xr-x. 2 rootroot 4096 2月   1 20:15 /public/

[root@test01 ~]#chmod 755 /public/

[root@test01 ~]#ls -ld /public/

drwxr-xr-x. 2root root 4096 2月   1 20:15 /public/

[root@test01 ~]#

    2)查看目录 /public/ 的ACL策略

[root@test01 ~]#getfacl /public/

getfacl:Removing leading '/' from absolute path names

# file: public/

# owner: root

# group: root

user::rwx

group::r-x

other::r-x

 

[root@test01 ~]#

    3)为目录 /public/ 设置ACL策略

         a)使用户zhangsan有权限写入,验证效果

[root@test01 ~]#ls -ld /public/

drwxr-xr-x. 2root root 4096 2月   1 20:15 /public/

[root@test01 ~]#setfacl -m u:zhangsan:rwx /public/

[root@test01 ~]#getfacl /public/

getfacl:Removing leading '/' from absolute path names

# file: public/

# owner: root

# group: root

user::rwx

user:zhangsan:rwx

group::r-x

mask::rwx

other::r-x

 

[root@test01 ~]#su - zhangsan

[zhangsan@test01~]$ mkdir /public/zhsdir

[zhangsan@test01~]$ ls -ld /public/zhsdir/

drwxrwxr-x. 2zhangsan zhangsan 4096 2月   1 20:33 /public/zhsdir/

[zhangsan@test01~]$

         b)使用户lisi无任何权限,验证效果

[root@test01 ~]#setfacl -m u:lisi:- /public/

[root@test01 ~]#getfacl /public/

getfacl:Removing leading '/' from absolute path names

# file: public/

# owner: root

# group: root

user::rwx

user:zhangsan:rwx

user:lisi:---

group::r-x

mask::rwx

other::r-x

[root@test01 ~]#su - lisi

[lisi@test01 ~]$ls /public/

ls: 无法打开目录/public/:权限不够

[lisi@test01 ~]$

    4)为用户zhangsan的家目录设置ACL策略

         a)使用户lisi有权限写入,验证效果

[root@test01 ~]#ls -ld /home/zhangsan/

drwx------. 6zhangsan zhangsan 4096 2月   1 19:57 /home/zhangsan/

[root@test01 ~]#setfacl -m u:lisi:rwx /home/zhangsan/

[root@test01 ~]#getfacl /home/zhangsan/

getfacl:Removing leading '/' from absolute path names

# file:home/zhangsan/

# owner:zhangsan

# group:zhangsan

user::rwx

user:lisi:rwx

group::---

mask::rwx

other::---

[root@test01 ~]#su - lisi

[lisi@test01 ~]$mkdir /home/zhangsan/lsdir

[lisi@test01 ~]$ls -ld /home/zhangsan/lsdir/

drwxrwxr-x. 2lisi lisi 4096 2月   1 20:36/home/zhangsan/lsdir/

[lisi@test01 ~]$

             b)使tarena组的任何用户都有权进入和查看,验证效果

[root@test01 ~]#setfacl -m g:tarena:rx /home/zhangsan/

[root@test01 ~]#getfacl /home/zhangsan/

getfacl:Removing leading '/' from absolute path names

# file:home/zhangsan/

# owner:zhangsan

# group:zhangsan

user::rwx

user:lisi:rwx

group::---

group:tarena:r-x

mask::rwx

other::---

[root@test01 ~]#id gelin02

uid=503(gelin02)gid=504(gelin02) 组=504(gelin02),503(tarena)

[root@test01 ~]#su - gelin02

[gelin02@test01~]$ ls -l /home/zhangsan/

总用量 12

drwxrwxr-x. 2lisi     lisi     4096 2月   1 20:36 lsdir

drwxrwxr-x. 2zhangsan zhangsan 4096 2月   1 19:56 udir1

drwx------. 2zhangsan zhangsan 4096 2月   1 19:57 udir2

-rw-rw-r--. 1zhangsan zhangsan    0 2月   1 19:56 ufile1

-rw-------. 1zhangsan zhangsan    0 2月   1 19:57 ufile2

[gelin02@test01~]$

    5)删除 /public/ 目录上设置的针对用户zhangsan的ACL策略

[root@test01 ~]#getfacl /public/

getfacl:Removing leading '/' from absolute path names

# file: public/

# owner: root

# group: root

user::rwx

user:zhangsan:rwx

user:lisi:---

group::r-x

mask::rwx

other::r-x

 

[root@test01 ~]#setfacl -x u:zhangsan /public/

[root@test01 ~]#getfacl /public/

getfacl:Removing leading '/' from absolute path names

# file: public/

# owner: root

# group: root

user::rwx

user:lisi:---

group::r-x

mask::r-x

other::r-x

 

[root@test01 ~]#

    6)删除用户zhangsan家目录上设置的所有ACL策略

[root@test01 ~]#getfacl /home/zhangsan/

getfacl:Removing leading '/' from absolute path names

# file:home/zhangsan/

# owner:zhangsan

# group:zhangsan

user::rwx

user:lisi:rwx

group::---

group:tarena:r-x

mask::rwx

other::---

 

[root@test01 ~]#setfacl -b /home/zhangsan/

[root@test01 ~]#getfacl /home/zhangsan/

getfacl:Removing leading '/' from absolute path names

# file:home/zhangsan/

# owner:zhangsan

# group:zhangsan

user::rwx

group::---

other::---

 

[root@test01 ~]#

 

练习八:setfacl自动继承(default权限)

    1)为目录 /public/ 设置ACL策略,使用户gelin01具有rwx权限

[root@test01 ~]#setfacl -m u:gelin01:rwx /public/

[root@test01 ~]#getfacl /public/

getfacl:Removing leading '/' from absolute path names

# file: public/

# owner: root

# group: root

user::rwx

user:lisi:---

user:gelin01:rwx

group::r-x

mask::rwx

other::r-x

 

[root@test01 ~]#

    2)在 /public/ 下创建子目录gdir1、文件gfile1,分别查看其ACL策略

[root@test01 ~]#mkdir /public/gdir1

[root@test01 ~]#touch /public/gfile1

[root@test01 ~]#getfacl /public/gdir1/

getfacl:Removing leading '/' from absolute path names

# file:public/gdir1/

# owner: root

# group: root

user::rwx

group::r-x

other::r-x

 

[root@test01 ~]#getfacl /public/gfile1

getfacl:Removing leading '/' from absolute path names

# file:public/gfile1

# owner: root

# group: root

user::rw-

group::r--

other::r--

 

[root@test01 ~]#

    3)以用户gelin01登入,做以下测试:

         a)对/public/目录是否有写入权限

[root@test01 ~]#su - gelin01

[gelin01@test01~]$ mkdir /public/gelindir

[gelin01@test01~]$ ls -ld /public/gelindir/

drwxrwxr-x. 2gelin01 gelin01 4096 2月   1 20:45 /public/gelindir/

[gelin01@test01~]$

         b)对/public/下的子目录gdir1和文件gfile1是否有写入权限

[gelin01@test01~]$ mkdir /public/gdir1/gelindir

mkdir: 无法创建目录"/public/gdir1/gelindir":权限不够

[gelin01@test01~]$

    4)为目录 /public/ 设置可继承权限为“用户ht02具有rwx权限”

[root@test01 ~]#useradd ht02

[root@test01 ~]#setfacl -dm u:ht02:rwx /public/

[root@test01 ~]#getfacl /public/

getfacl:Removing leading '/' from absolute path names

# file: public/

# owner: root

# group: root

user::rwx

user:lisi:---

user:gelin01:rwx

group::r-x

mask::rwx

other::r-x

default:user::rwx

default:user:ht02:rwx

default:group::r-x

default:mask::rwx

default:other::r-x

 

[root@test01 ~]#

    5)在 /public/ 下创建子目录gdir2、文件gfile2,分别查看其ACL策略

[root@test01 ~]#mkdir /public/gdir2

[root@test01 ~]#touch /public/gfile2

[root@test01 ~]#getfacl /public/gdir2

getfacl:Removing leading '/' from absolute path names

# file:public/gdir2

# owner: root

# group: root

user::rwx

user:ht02:rwx

group::r-x

mask::rwx

other::r-x

default:user::rwx

default:user:ht02:rwx

default:group::r-x

default:mask::rwx

default:other::r-x

 

[root@test01 ~]#

    6)以用户ht02登入,做以下测试:

         a)对/public/目录是否有写入权限

[root@test01 ~]#su - ht02

[ht02@test01 ~]$mkdir /public/htdir

mkdir: 无法创建目录"/public/htdir":权限不够

[ht02@test01 ~]$

         b)对/public/下的子目录gdir2和文件gfile2是否有写入权限

[ht02@test01 ~]$mkdir /public/gdir2/htdir

[ht02@test01 ~]$ls -ld /public/gdir2/htdir/

drwxrwxr-x+ 2ht02 ht02 4096 2月   1 20:49/public/gdir2/htdir/

[ht02@test01 ~]$echo 123 > /public/gfile2

[ht02@test01 ~]$cat /public/gfile2

123

[ht02@test01 ~]$

         c)对/public/下的子目录gdir1和文件gfile1是否有写入权限

[ht02@test01 ~]$mkdir /public/gdir1/htdir

mkdir: 无法创建目录"/public/gdir1/htdir":权限不够

[ht02@test01 ~]$echo 123 > /public/gfile1

-bash:/public/gfile1: 权限不够

[ht02@test01 ~]$

    7)测试用户gelin01对/public/下的子目录gdir2和文件gfile2是否有写入权限

[root@test01 ~]#su - gelin01

[gelin01@test01~]$ mkdir /public/gdir2/gelindir

mkdir: 无法创建目录"/public/gdir2/gelindir":权限不够

[gelin01@test01~]$ echo 123 > /public/gfile2

-bash:/public/gfile2: 权限不够

[gelin01@test01~]$

 

 

基本权限和归属

附加权限控制

#################################################

 

一、基本权限和归属

 

1. 基本概念

    用户在访问一个目录或文件时,由设置的访问权限+归属关系共同决定最终权限

    访问权限

         r 读取:允许查看内容-read                           

         w 写入:允许修改内容-write

         x 可执行:允许运行和切换-excute

 

         ** 若对目录有r权限,()

         ** 若对目录有w权限,()

         ** 若对目录有x权限,()

 

    归属关系

         u 所有者(属主):拥有此文件/目录的用户-user    

         g 所属组(属组):拥有此文件/目录的组-group

         o 其他用户:除所有者、所属组以外的用户-other

         a 所有用户:以上三类归属合称-all

 

2. 权限的数值表示

    对 ls  -l  ...输出结果的分段解析:

权限位  硬链接数  属主  属组  大小  最后修改时间  文件/目录名称

    |--> 类型+属主权限+属组权限+其他人权限

 

[root@svr5 ~]#ls  -ld /etc/passwd  /boot

drwxr-xr-x4  root root  1024   07-10 17:22  /boot

-rw-r--r--            1 root  root  1715  08-24 11:42   /etc/passwd

 

         r--    ==> 100    ==>    4

         -w-  ==>  010    ==>   2

         --x   ==>  001    ==>   1

         ---   ==>  000    ==>   0

 

         rwx   ==>  111    ==>   7

         rw-   ==>  110    ==>   6

         r-x    ==>  101    ==>   5

         r--    ==>  100    ==>   4

 

         常见的目录权限:rwxr-xr-x  755

         常见的文件权限:rw-r--r--    644 

 

3. 设置访问权限 —— chmod

    格式:chmod  [-R] [ugoa] [+-=][rwx]  文件...

              chmod  [-R] nnn  文件...

 

         ** 加选项 -R 可递归修改目标文件夹及其下的所有文档

 

 

4. 设置访问归属 —— chown

    格式:chown  属主  文件...                【只修改属主】

              chown  :属组  文件...               【只修改属组】

              chown  属主:属组  文件...      【同时修改属主、属组】

 

         ** 选项 -R 的含义同chmod

 

5. 目录和文件的默认权限

    1)新建目录时手动指定:mkdir  -m  755文件夹路径

 

    2)根据umask值自动设置:

         查看权限掩码值(自动去除的权限):umask

         查看权限值(默认权限):umask  -S

         新目录的权限 = 777 - umask掩码

         新文件的权限 = 666 - umask掩码        【安全起见,文件默认不给x权限】

 

 

二、附加权限控制

 

1. 特殊权限

    SET UID,s,4               User的x位     可执行程序

    SET GID,s,2                 Group的x位          可执行程序/目录

    Sticky Bit,t,1              Other的x位   目录

 

    ** SUID、SGID()

    ** Sticky Bit()

 

    如何设置SUID:chmod  4755 ...

    如何设置SGID:chmod  2755 ...

    同时设置SUID、SGID:chmod  6755 ...

    如何设置粘滞位:chmod  1777 ...

 

 

2. ACL访问控制

    1)查看ACL策略 —— getfacl

         getfacl 文件或目录

   

    2)设置工具:setfacl

         设置ACL策略:

            setfacl  -m  u:用户名:权限   文件或目录...

            setfacl  -m  g:组名:权限   文件或目录...

            ** 加选项 -R 可递归修改目标文件夹及其下的所有文档

 

             设置可继承的ACL策略(对新建的子文档有效,不影响已有文档的权限):

            setfacl  -d  -m  u:用户名:权限   目录...

            setfacl  -d  -m  g:组名:权限   目录...

 

         清除所有ACL策略:

            setfacl -b 文件或目录...

         清除指定用户的ACL策略:

            setfacl -x u:用户名文件或目录...

            setfacl -x g:组名文件或目录...

 

3. 关于目录权限的继承

    强制继承:

         chmod -R ... /parent/

         chown -R ... /parent/

 

 

    自动继承:

         方法1:调控umask值,适用于当前用户的整个Shell环境

         方法2:针对文件夹的归属关系,setuid、setgid

         方法3:setfacl  -d -m u:用户名:权限列表  文件或目录...

                     setfacl  -d -m g:组名:权限列表  文件或目录...