练习记录

1.某年某月某日某时,某人在工作中设置crontab定时任务规则保存时,提示“No space left on device”,此时用df -h检查磁盘,发现还有剩余空间.请问是什么原因及如何排查?什么会导致这种事情发生?

原因:磁盘空间有剩余但提示磁盘空间不足,可判断出是inode满了。
排查:用find命令找出目录过大的目录
[root@Sloth /]# find / -type d -size +1M
/var/spool/postfix/maildrop
故障原因:定时任务中的命令输出的结果未追加到/dev/null中导致系统不断地发邮件致使/var/spool/postfix/maildrop/目录下小文件堆积占满了inode
解决方法:删除目录下文件并关闭邮件服务
[root@Sloth /]# find /var/spool/postfix/maildrop/ -type f |xargs rm -f
[root@Sloth maildrop]# /etc/init.d/postfix stop   (临时关闭)
[root@Sloth maildrop]# chkconfig postfix off  (永久关闭)

2.书写定时任务完成:每天晚上12点备份/etc/rc.local /etc/sysconfig/ /var/spool/cron /etc/fstab 这些文件到/backup目录

第一步:定时任务:
00 00 * * * /bin/sh /servers/beifen12.sh >/dev/null 2>&1

第二步:脚本:
[root@Sloth servers]# vim /servers/beifen12.sh 
#每天晚上12点备份/etc/rc.local  /etc/sysconfig/ /var/spool/cron /etc/fstab 这些文件到/backup目录
tar -zcvf /backup/$(date +%F-%T)etc.tar.gz /etc/rc.local /etc/sysconfig/ /var/spool/cron /etc/fstab

第三步:检查定时任务日志:
[root@Sloth ~]# tail -f /var/log/cron
Nov 19 09:00:01 Sloth CROND[26157]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Nov 20 00:00:01 Sloth CROND[26164]: (root) CMD (/bin/sh /servers/beifen12.sh >>/dev/null 2>&1 )

第四步:检查结果:
[root@Sloth oldboy]# ls  /backup
2018-11-25-00:00:01etc.tar.gz

———————————————————————————————————————

3.每天凌晨1点备份/var/www/html目录到/backup下面以本机ip地址命名的目录中

第一步:先建立/backup下以本机IP地址命名的目录
[root@Sloth servers]# mkdir /backup/$(ifconfig |sed -nr '2s#^.*addr:(.*)  Bc.*$#\1#gp')
[root@Sloth servers]# ll /backup/
total 176
drwxr-xr-x 2 root root  4096 Nov 19 23:09 10.0.0.200
第二步:创建脚本
[root@Sloth servers]# vim beifen01.sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
tar -zcvf /backup/$(ifconfig |sed -nr '2s#^.*addr:(.*)  Bc.*$#\1#gp')/html.tar.gz /var/www/html
第三步:创建定时任务。
[root@Sloth html]# vim /servers/beifen01.sh

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
tar -zcvf /backup/$(ifconfig |sed -nr '2s#^.*addr:(.*)  Bc.*$#\1#gp')/html.tar.gz /var/www/html

第四步:检查定时任务日志
[root@Sloth html]# tail -f /var/log/cron
Nov 19 01:00:01 Sloth CROND[1967]: (root) CMD (/bin/sh /servers/beifen01.sh >>/dev/null 2>&1)

第五步:检查结果
[root@Sloth html]# ls -l /backup/10.0.0.200/*
-rw-r--r-- 1 root root 240 Nov 19 01:00 /backup/10.0.0.200/html.tar.gz

———————————————————————————————————————

4.每天晚上12点备份/etc/目录到/backup目录下面,并且删除7天之前的备份

第一步:编写脚本
[root@Sloth servers]# vim /servers/beietc12.sh 

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
tar -zcvf /backup/$(date +%F-%T)etc.tar.gz /etc/
find /backup/ -type f -name "*etc.tar.gz" -mtime +7 |xargs rm -f
~                                           
第二步:设置定时任务
crontab -e
#每天晚上12点备份/etc/目录到/backup目录下面,并且删除7天之前的备份
00 00 * * * /bin/sh /servers/beietc12.sh >>/dev/null 2>&1
第三步:检查日志
[root@Sloth servers]# tail -f /var/log/cron
Nov 21 00:00:01 Sloth CROND[2155]: (root) CMD (/bin/sh /servers/beietc12.sh >>/dev/null 2>&1)
第四步:检查测试结果
[root@Sloth ~]# ll /backup/
-rw-r--r-- 1 root root 9743986 Nov 21 00:00 2018-11-21-00:00:01etc.tar.gz

5.简述Linux下面用户分为几类,什么是虚拟用户?怎么区分虚拟用户与普通用户?

Linux下用户分为三类:
第一类:root 用户,是系统管理员。
第二类:虚拟用户,是系统创建出来循行程序的伪用户。
第三类:普通用户。
区分:
[root@Sloth servers]# vim /etc/passwd
通过以上命令可以查看系统中的用户信息。一般虚拟用户的uid是1-499,且运行环境是/sbin/nologin 并且不能被登陆。
普通用户的uid为500及以后,运行环境为/bin/bash 并且可以登陆

6.创建一个uid为999的虚拟用户mysql

[root@Sloth servers]# useradd -s /sbin/nologin -u 999 -M mysql

———————————————————————————————————————

7.命令提示符出现-bash-4.1$如何解决

原因:出现以上问题说明用户家目录下一些相关的隐藏文件被删除了。
解决
-bash-4.1$ cp /etc/skel/.bash* .
-bash-4.1$ logout
[root@Sloth ~]# su - alex-1
[alex-1@Sloth ~]$

8.给oldboy用户授权以root身份执行ls,touch,passwd命令,但是禁止修改root用户密码

错误:[root@Sloth ~]# visudo
oldboy  ALL=(ALL)       /bin/ls, /bin/touch, /usr/bin/passwd, !/usr/bin/passwd root
会被绕开:用sudo passwd 可以直接修改

正确:oldboy  ALL=(ALL)       /bin/ls, /bin/touch, !/usr/bin/passwd, /usr/bin/passwd [a-Z]*,!/usr/bin/passwd root
/usr/bin/passwd [a-Z]*   主要目的是过滤掉空格 过滤/usr/bin/passwd  命令。[ ]中可放任意字符。

———————————————————————————————————————

8.每天晚上12点备份/etc/目录到/backup下面的以ip地址命名的目录中,并删除目录中7天之前的备份,但是要保留每周1的备份。

第一步:编写脚本
[root@Sloth ~]# vim /servers/zhou.sh 

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
tar -zcvf /backup/$(ifconfig |sed -nr '2s#^.*addr:(.*)  Bc.*$#\1#gp')/$(date +%F-%w).tar.gz /etc/
find /backup/$(ifconfig |sed -nr '2s#^.*addr:(.*)  Bc.*$#\1#gp')/ -type f -name "*[0,2-6].tar.gz" -mtime +7 |xargs rm -f
第二步:设置定时任务
[root@Sloth ~]# crontab -e

每天晚上12点备份/etc/目录到/backup下面的以ip地址命名的目录中,并删除目录中7天之前的备份,但是要保留每周1的备份。
00 00 * * * /bin/sh /servers/zhou.sh >>/dev/null 2>&1
第三步:创建测试环境
[root@Sloth 10.0.0.200]# touch 2018-10-{1..10}-{0..6}.tar.gz
[root@Sloth 10.0.0.200]# ls
2018-10-10-0.tar.gz  2018-10-1-3.tar.gz  2018-10-2-6.tar.gz  2018-10-4-2.tar.gz  2018-10-5-5.tar.gz  2018-10-7-1.tar.gz  2018-10-8-4.tar.gz
2018-10-10-1.tar.gz  2018-10-1-4.tar.gz  2018-10-3-0.tar.gz  2018-10-4-3.tar.gz  2018-10-5-6.tar.gz  2018-10-7-2.tar.gz  2018-10-8-5.tar.gz
2018-10-10-2.tar.gz  2018-10-1-5.tar.gz  2018-10-3-1.tar.gz  2018-10-4-4.tar.gz  2018-10-6-0.tar.gz  2018-10-7-3.tar.gz  2018-10-8-6.tar.gz

第四步:查看定时任务日志
[root@Sloth ~]# tail -f /var/log/cron
Dec 11 00:00:01 Sloth CROND[2754]: (root) CMD (/bin/sh /servers/zhou.sh >>/dev/null 2>&1)
第五步:查看测试结果
[root@Sloth 10.0.0.200]# ls
2018-10-10-1.tar.gz  2018-10-2-1.tar.gz  2018-10-4-1.tar.gz  2018-10-6-1.tar.gz  2018-10-8-1.tar.gz  2018-12-09-0.tar.gz  2018-12-11-2.tar.gz
2018-10-1-1.tar.gz   2018-10-3-1.tar.gz  2018-10-5-1.tar.gz  2018-10-7-1.tar.gz  2018-10-9-1.tar.gz  2018-12-10-1.tar.gz

9.创建10个用户stu01…stu10并设置随机8为密码(禁止使用循环for,while等)(至少2种方法)

[root@lin lin]# echo oldboy{01..05}|xargs -n1
oldboy01
oldboy02
oldboy03
oldboy04
oldboy05
[root@lin lin]# echo oldboy{01..05}|xargs -n1|awk '{print "useradd "$NF}'
useradd oldboy01
useradd oldboy02
useradd oldboy03
useradd oldboy04
useradd oldboy05

交给bash执行
[root@lin lin]# echo oldboy{01..05}|xargs -n1|awk '{print "useradd "$NF}'|bash

 设置随机密码
方法1:

[root@lin lin]# echo oldboy{01..05}:$(echo $RANDOM|md5sum|cut -c 1-8)|xargs -n1
oldboy01:2ea44fb5
oldboy02:24d3d6ab
oldboy03:d524fdff
oldboy04:92e6c1e7
oldboy05:9e6830d8

 方法2:

[root@lin lin]# echo oldboy{01..05}:$((RANDOM +10000000))|xargs -n1
oldboy01:10029728
oldboy02:10003967
oldboy03:10029427
oldboy04:10021946
oldboy05:10020909

 重定向到文件
[root@lin lin]# echo oldboy{01..05}:$((RANDOM +10000000))|xargs -n1>oldboypwd.txt
[root@lin lin]# cat oldboypwd.txt
oldboy01:10027086
oldboy02:10023644
oldboy03:10016532
oldboy04:10017825
oldboy05:10027238

 修改密码
[root@lin lin]# chpasswd < oldboypwd.txt

 方法3:
[root@lin tmp]# echo a{01..05}|xargs -n1|sed -r 's#(.*)#useradd \1;pass=$(echo $RANDOM|md5sum|cut -c 1-8);echo "$pass"|passwd --stdin \1;echo "\1 $pass" >> /tmp/user1.txt#g'|bash

10.添加一块100M的硬盘并把s永久挂载到/data01上,写出详细的操作步骤

第一步:在虚拟机上添加一块100M的硬盘,并重启Linux服务器。
第二步:用fdisk命令对磁盘进行分区。
[root@Sloth ~]# fdisk /dev/sdb
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First sector (2048-208895, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-208895, default 208895): 
Using default value 208895

Command (m for help): p

Disk /dev/sdb: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 cylinders, total 208896 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0fd509aa

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048      208895      103424   83  Linux
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
第三步:通知系统磁盘分区发生变化
[root@Sloth ~]# partprobe /dev/sdb
第四步:对新硬盘进行格式化
[root@Sloth ~]# mkfs.ext4 /dev/sdb
第五步:关闭磁盘分区的自动检查
[root@Sloth ~]# tune2fs -c 0 -i 0 /dev/sdb1
第六步:开机自动挂载
[root@Sloth ~]# vim /etc/fstab
/dev/sdb1               /data01                 ext4    defaults        0 0

———————————————————————————————————————

11.创建一个500M的文件并把它永久增加到swap中,写出配置的详细步骤

第一步:创建一个500M的文件
[root@Sloth oldboy]# dd if=/dev/zero of=/oldboy/500M bs=1M count=500
第二步:将文件属性变成swap
[root@Sloth oldboy]# mkswap 500M
第三步:永久挂载
[root@Sloth oldboy]# vim /etc/fstab
/oldboy/500M            swap                    swap    defaults        0 0

12.把{}内的oldboy替换为oldgirl

方法一: [root@Sloth oldboy]# awk 'NR==2,NR==$p' oldboy.txt |sed 's#oldboy#oldgirl#g'
{
oldgirl
oldgirl
}
oldgirl
oldgirl
{
oldgirl
oldgirl
}
方法二:
[root@Sloth oldboy]# awk '/{/,/}/{gsub(/oldboy/,"oldgirl");print}' oldboy.txt 
{
oldgirl
oldgirl
}
{
oldgirl
oldgirl
}

———————————————————————————————————————

13.统计access.log文件中每个ip地址出现的次数

[root@Sloth oldboy]# awk '{h[$1]++}END{for(pol in h)print pol,h[pol]}' access.log 
101.226.61.184 5
27.154.190.158 2
218.79.64.76 2
114.94.29.165 1

———————————————————————————————————————

14.统计access.log中每个ip地址使用的流量总数

[root@Sloth oldboy]# awk '{h[$1]=$10+h[$1]}END{for(num in h)print num,h[num]}' access.log 
101.226.61.184 53581
27.154.190.158 31602
218.79.64.76 36438
114.94.29.165 491

———————————————————————————————————————

15.通过awk分析secure这个日志哪个ip地址在破解你的密码?

[root@Sloth oldboy]# awk '/Failed/ {h[$11]++}END{for(pol in h)print pol,h[pol]}' /var/log/secure
10.0.0.1 3

16.通过awk同时分析access.log文件每个ip的重复数和每个ip使用的流量

[root@Sloth oldboy]# awk '{h[$1]++;d[$1]=d[$1]+$10}END{for(num in d)print num,h[$1],d[num]}' access.log 
101.226.61.184 2 53581
27.154.190.158 2 31602
218.79.64.76 2 36438
114.94.29.165 2 491

———————————————————————————————————————

17.通过awk同时分析出secure文件中每个用户被每个ip破解的次数

[root@Sloth oldboy]# awk '/Failed/{h[$9,$11]++}END{for(pol in h)print "用户IP:"pol,"次数:"h[pol]}' /var/log/secure
用户IP:oldboy10.0.0.1 次数:2
用户IP:root10.0.0.1 次数:3

———————————————————————————————————————

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值