马哥教育网络班21期+第五周课程练习

马哥教育网络班21期+第5周课程练习

[TOC]

1. 显示/boot/grub/grub.conf中至少以一个空白字符开头的行。

[root@rhel-5 ~]# grep -E '^[[:space:]]+' /boot/grub/grub.conf 
	root (hd0,0)
	kernel /vmlinuz-2.6.18-348.el5 ro root=LABEL=/ rhgb quiet
	initrd /initrd-2.6.18-348.el5.img
[root@rhel-5 ~]# grep '^[[:space:]]\+' /boot/grub/grub.conf

2. 显示/etc/rc.d/rc.sysinit文件中以#开头,后面至少一个空白字符,而后又有至少一个非空白字符的行。

[root@rhel-5 ~]# grep -E '^#[[:space:]]+[^[:space:]]+' /etc/rc.d/rc.sysinit

3. 打出netstat -tan命令执行结果中以LISTEN后跟空白字符结尾的行。

[root@rhel-5 ~]# netstat -tan | grep 'LISTEN[[:space:]]*'
tcp        0      0 127.0.0.1:2208              0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:3938                0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:6000                0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:1521                0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:6010              0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:6011              0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:734                 0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:2207              0.0.0.0:*                   LISTEN

4. 添加用户bash,testbash,basher,nologin(此用户的shell为/sbin/nologin),而后找出当前系统上用户和默认shell相同的用户信息。

[root@rhel-5 tuser1]# useradd bash
[root@rhel-5 tuser1]# useradd testbash
[root@rhel-5 tuser1]# useradd basher
[root@rhel-5 tuser1]# useradd -s /sbin/nologin nologin
[root@rhel-5 tuser1]# grep -E  "(^[[:alpha:]]+):.*\1$" /etc/passwd
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
bash:x:502:504::/home/bash:/bin/bash
nologin:x:505:507::/home/nologin:/sbin/nologin

5. 显示当前系统上root,fedora或user1用户的默认shell。

[root@rhel-5 ~]# grep -E '^(root|fedora|user1)' /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@rhel-5 ~]# grep -E '^(root|fedora|user1)' /etc/passwd | cut -d: -f7
/bin/bash

6. 找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello ()。

[root@rhel-5 ~]# grep "^\<[a-z]\+\>()" /etc/rc.d/init.d/functions
checkpid() {
daemon() {
killproc() {
pidfileofproc() {
pidofproc() {
status() {
success() {
failure() {
passed() {
warning() {
action() {
strstr() {
confirm() {
[root@rhel-5 ~]# grep -E '^\<[[:alpha:]]+\>\(\)' /etc/rc.d/init.d/functions

7. 使用echo命令输出一个绝对路径,使用grep取出其基名。

grep -oE "[^/]+/?$" | cut -d"/" -f 1

[root@rhel-6 rc.d]# echo /usr/appsoft/software/12.txt/ | grep -oE "[^/]+/?$" | cut -d"/" -f 1
12.txt
[root@rhel-6 rc.d]# echo /usr/appsoft/software/12.txt | grep -oE "[^/]+/?$" | cut -d"/" -f 1
12.txt

7.1 扩展:取出其路径名。

[root@rhel-6 rc.d]# echo /usr/appsoft/software/12.txt | grep -oE ".*/"
/usr/appsoft/software/

8. 找出ifconfig命令结果中的1-255之间的数字。

[root@rhel-5 ~]# ifconfig | grep -wE '([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])'
[root@rhel-5 ~]# ifconfig | grep -wE '[1-9][0-9]?|1[0-9][0-9]|2[0-5][0-5]'

9. 挑战题:写一个模式,能匹配合理的IP地址

这里认为合理的IP为:[0-255].[0-255].[0-255].[0-255]
grep -wE '(([0-1]?[0-9]?[0-9]|2[0-5]{2})\.){3}([0-1]?[0-9]?[0-9]|2[0-5]{2})'

10. 挑战题:写一个模式,能匹配所有的邮件地址。

grep -E '[[:alnum:]]+.*@[[:alnum:]]+\.[[:alnum:]]+\.?[[:alpha:]]+'

11. 查找/var目录下属主为root且属组为mail的所有文件或目录。

[root@rhel-5 ~]# find /var -user root -group mail
/var/spool/mail
/var/spool/mqueue
[root@rhel-5 var]# find /var -user root -group mail -ls
3381291    8 drwxrwxr-x   2 root     mail         4096 8月  1 13:44 /var/spool/mail
 70581    8 drwx------   2 root     mail         4096 7月 28  2011 /var/spool/mqueue
[root@rhel-5 var]# find /var \( -user root -group mail \) -ls
3381291    8 drwxrwxr-x   2 root     mail         4096 8月  1 13:44 /var/spool/mail
 70581    8 drwx------   2 root     mail         4096 7月 28  2011 /var/spool/mqueue

11.1 关于find命令-ls参数的用法总结

在find命令中使用了-a(逻辑与)或-o(逻辑或)时,如果还需要使用-ls参数,则需要注意:

-a: 使用逻辑与时,各条件是否使用()括起来均可,建议使用()括起来;

-O: 使用逻辑或时,各条件必须使用()括起来,否则查找结果显示错误。

-o:若不使用(),一般认为会显示最后一个逻辑条件的查找结果,但是实验发现,最后一个逻辑条件的查找结果显示也是错误的,所以逻辑或查找条件中,必须将各条件用()括起来。

示例:

-a: 可以省略不写

[root@rhel-5 var]# find /var -user oracle -group mail -ls
2763626    0 -rw-r--r--   1 oracle   mail            0 8月  1 14:48 /var/123.sh
3390953    0 -rw-rw----   1 oracle   mail            0 7月 29 15:34 /var/spool/mail/oracle
[root@rhel-5 var]# find /var \( -user oracle -group mail \) -ls
2763626    0 -rw-r--r--   1 oracle   mail            0 8月  1 14:48 /var/123.sh
3390953    0 -rw-rw----   1 oracle   mail            0 7月 29 15:34 /var/spool/mail/oracle

-o:该参数配合-ls使用时,注意以下两点:

  • 第一条命令中,各逻辑条件不用()括起来,一般认为其只会显示最后一个逻辑条件的结果,即 -group mail,但是/var/123.sh的属组为mail,结果却没有显示出来,所以显示最后一个逻辑条件的查找结果的说法也是错误的。

  • find命令使用逻辑或进行条件查找时,各条件必须使用()括起来。

[root@rhel-5 var]# find /var -user oracle -o -group mail -ls
3381291    8 drwxrwxr-x   2 root     mail         4096 8月  1 13:44 /var/spool/mail
3413767    0 -rw-rw----   1 nologin  mail            0 7月 31 19:26 /var/spool/mail/nologin
3413764    0 -rw-rw----   1 bash     mail            0 7月 31 19:26 /var/spool/mail/bash
3390134    4 -rw-rw----   1 rpc      mail            0 7月 29 10:01 /var/spool/mail/rpc
3413766    0 -rw-rw----   1 basher   mail            0 7月 31 19:26 /var/spool/mail/basher
3413765    0 -rw-rw----   1 testbasher mail            0 7月 31 19:26 /var/spool/mail/testbasher
3413768    0 -rw-rw----   1 testbash mail            0 8月  1 13:44 /var/spool/mail/testbash
3413763    0 -rw-rw----   1 hadoop   mail            0 7月 31 19:04 /var/spool/mail/hadoop
 70581    8 drwx------   2 root     mail         4096 7月 28  2011 /var/spool/mqueue
[root@rhel-5 var]# find /var \( -user oracle -o -group mail \) -ls
397605    0 srwxrwxrwx   1 oracle   oinstall        0 7月 29 15:59 /var/tmp/.oracle/sEXTPROC1521
397606    0 srwxrwxrwx   1 oracle   oinstall        0 7月 29 15:59 /var/tmp/.oracle/s#27699.2
397604    0 srwxrwxrwx   1 oracle   oinstall        0 7月 29 15:59 /var/tmp/.oracle/s#27699.1
 41919   16 -rw-------   1 oracle   oinstall    15000 7月 29 15:35 /var/cache/coolkey/coolkeypk11sE-Gate\ 0\ 0-500
2763626    0 -rw-r--r--   1 oracle   mail            0 8月  1 14:48 /var/123.sh
3381291    8 drwxrwxr-x   2 root     mail         4096 8月  1 13:44 /var/spool/mail
3413767    0 -rw-rw----   1 nologin  mail            0 7月 31 19:26 /var/spool/mail/nologin
3413764    0 -rw-rw----   1 bash     mail            0 7月 31 19:26 /var/spool/mail/bash
3390134    4 -rw-rw----   1 rpc      mail            0 7月 29 10:01 /var/spool/mail/rpc
3413766    0 -rw-rw----   1 basher   mail            0 7月 31 19:26 /var/spool/mail/basher
3413765    0 -rw-rw----   1 testbasher mail            0 7月 31 19:26 /var/spool/mail/testbasher
3413768    0 -rw-rw----   1 testbash mail            0 8月  1 13:44 /var/spool/mail/testbash
3413763    0 -rw-rw----   1 hadoop   mail            0 7月 31 19:04 /var/spool/mail/hadoop
3390953    0 -rw-rw----   1 oracle   mail            0 7月 29 15:34 /var/spool/mail/oracle
 70581    8 drwx------   2 root     mail         4096 7月 28  2011 /var/spool/mqueue

12. 查找当前系统上没有属主或属组的文件。

[root@rhel-5 var]# useradd ies
[root@rhel-5 ies]# userdel ies
[root@rhel-5 ies]# find / \( -nouser -o -nogroup \) -ls
3413769    0 -rw-rw----   1 507      mail            0 8月  1 15:23 /var/spool/mail/ies
3348827    4 drwx------   4 507      509          4096 8月  1 15:24 /home/ies
2048441    4 -rw-r--r--   1 507      509           176 8月  1 15:23 /home/ies/.bash_profile
2048442    4 -rw-r--r--   1 507      509           515 8月  1 15:23 /home/ies/.emacs
3348828    4 drwxr-xr-x   3 507      509          4096 8月  1 15:23 /home/ies/.kde
3348829    4 drwxr-xr-x   2 507      509          4096 8月  1 15:23 /home/ies/.kde/Autostart
2113337    4 -rw-r--r--   1 507      509           381 8月  1 15:23 /home/ies/.kde/Autostart/.directory
2048443    4 -rw-r--r--   1 507      509            33 8月  1 15:23 /home/ies/.bash_logout
2048444    4 -rw-r--r--   1 507      509           658 8月  1 15:23 /home/ies/.zshrc
2048446    0 -rw-r--r--   1 507      509             0 8月  1 15:24 /home/ies/ies.txt
3348830    4 drwxr-xr-x   4 507      509          4096 8月  1 15:23 /home/ies/.mozilla
3348831    4 drwxr-xr-x   2 507      509          4096 8月  1 15:23 /home/ies/.mozilla/extensions
3348832    4 drwxr-xr-x   2 507      509          4096 8月  1 15:23 /home/ies/.mozilla/plugins
2048445    4 -rw-r--r--   1 507      509           124 8月  1 15:23 /home/ies/.bashrc

12.1 查找当前系统上没有属主或属组,且最近3天内曾被访问过的文件或目录。

[root@rhel-5 ies]# find / -nouser -o -nogroup -a -atime -3
[root@rhel-5 ies]# find / \( -nouser -o -nogroup -a -atime -3 \) -ls

find命令的逻辑条件查找中使用-ls参数,需要用()将各逻辑条件括起来。

13. 查找/etc目录下所有用户都有写权限的文件。

[root@rhel-5 etc]# find /etc/ -perm -222

14. 查找/etc目录下大于1M且类型为普通文件的所有文件。

[root@rhel-6 rc.d]# find /etc/ -size +1M -type f
/etc/gconf/gconf.xml.defaults/%gconf-tree.xml
/etc/selinux/targeted/policy/policy.24
/etc/selinux/targeted/modules/active/policy.kern
[root@rhel-6 rc.d]# find /etc/ \( -size +1M -type f \) -ls
567266 1968 -rw-r--r--   1 root     root      2014902 8月  1 17:39 /etc/gconf/gconf.xml.defaults/%gconf-tree.xml
437789 7124 -rw-r--r--   1 root     root      7292701 8月  2 08:55 /etc/selinux/targeted/policy/policy.24
437514 7124 -rw-r--r--   1 root     root      7292701 8月  2 08:55 /etc/selinux/targeted/modules/active/policy.kern

15. 查找/etc/init.d目录下,所有用户都有执行权限,且其他用户有写权限的文件。

[root@rhel-6 rc.d]# find /etc/init.d/ -perm 113

16. 查找/usr目录下不属于root,bin或hadoop的文件。

[root@rhel-6 rc.d]# find /usr ! \( -user root -o -user bin -o -user hadoop \) -ls
[root@rhel-6 rc.d]# find /usr ! -user root -a ! -user bin -a ! -user hadoop

17. 查找/etc目录下至少有一类用户没有写权限的文件。

[root@rhel-6 rc.d]# find /etc ! -perm -222 -ls

18. 查找/etc目录下最近一周内其内容被修改过,且不属于root或hadoop的文件。

[root@rhel-6 rc.d]# find /etc -mtime -7 -a ! -user root -a ! -user hadoop

原创文章,作者:N21_未来人,如若转载,请注明出处:http://www.178linux.com/27320

赞 (0)
N21_未来人N21_未来人
上一篇 2016-08-02 15:24
下一篇 2016-08-02 16:31

相关推荐

  • 马哥教育网络班21期+第12周课程练习 ​

    1、请描述一次完整的http请求处理过程;   1)客户端和服务器端建立连接。服务器接收或者拒绝请求。   2)服务器端接收客户端请求。接收来自于网络的请求报文中对某资源的一次请求。对请求的处理响应,可分为单进程(启动一个进程处理请求,一次只处理一个)和多进程(并行启动多个进程,每个进程处理一个请求)。  &…

    Linux干货 2016-10-09
  • 安装包管理

       软件包管理 软件的运行和编译 ABI 由于window和linux不兼容 linux是ELF window 是PE 对应的内核解析方式不同,可以用虚拟化 API 只程序与程序的公用的接口,相互调用方式 程序源代码 –>预处理–>编译–>汇编–>链接 预处理只会引…

    Linux干货 2017-04-24
  • 第七周作业

    第七周 1,创建一个10G分区,并格式化为ext4文件系统;(1) 要求其block大小为2048,预留空间百分比为2,卷标为MYDATA,默认挂载属性包含acl;(2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; [root@www ~]# fdisk /dev/sda <————-fd…

    Linux干货 2017-09-03
  • 学习宣言

    没有学不会的技术,只有不勤奋的人!

    Linux干货 2016-12-28
  • Windows与linux分区的区别:

        对于我们普通人来讲,分区就是我们看到的“我的电脑”下面的C盘、D盘、E盘······,每个分区都有自己的区域,无法使用别的分区的空间,这样可以起到保护分区中文件的作用。其实,这样很容易理解。可是,对于linux初学者来讲,因为使用习惯了windows,到了linux下面,一下子很难转换过来。  &nb…

    2017-07-16
  • 采用二进制包安装mysql

    本文是在CentOS7系统平台下安装Mysql5.6.26版本数据库的操作说明,如有错误,请指正。 系统平台:CentOS-7-x86_64    数据库版本:mysql-5.6.26   Mysql镜像文件下载地址:http://dev.mysql.com/downloads/mirrors.html 本次演示的Mysql安装…

    Linux干货 2017-05-04

评论列表(1条)

  • Net21-冰冻vs西瓜
    Net21-冰冻vs西瓜 2016-08-03 10:36

    写的不错哈!