系统运维基础操作

用户管理

用户查看可以使用id命令

\# id user	##显示指定用户uid、gid和副组id
uid=1002(user) gid=1002(user) groups=1002(user)
\# id -u user 	##仅显示uid
1002
\# id -g user 	##仅显示gid
1002
\# id -G user 	##仅显示副组id
1002
\# id -Gn user 	##仅显示副组名
user
\# id -gn user 	##仅显示组名
user

用户shell中身份切换

[root@bogon ~]# su - user	##切换当前shell为user用户环境
[user@bogon ~]$ 

用户创建

\# useradd user			##创建一个user用户
\# useradd -u 8888 user	##指定创建时用户uid
\# useradd -g 9999 user	##指定创建时用户gid,需要真实存在的
\# useradd -G 7777 user	##指定创建时还需要加入的组,需要真实存在的
\# useradd -c nothing user	##指定创建时为用户添加说明
\# useradd -M user		##创建用户不创建家目录
\# useradd -d /home/user123 user	##指定创建用户的家目录
\# useradd -s /sbin/nologin user	##指定用户的shell类型,默认为/bin/bash,如果不想让创建的用户被登录可以设置为这样

\# userdel user		##删除用户,但是默认不会删除创建的家目录
\# userdel -r user	##删除用户,同时删除家目录

用户组创建

\# groupadd usergroup 			##创建用户组
\# groupadd -g8888 usergroup	##指定创建用户组的gid
 
\# groupdel usergroup			##删除用户组

用户信息修改

\# usermod -l aaa user			##更改user用户用户名
\# usermod -u 6666 user			##更改用户uid
\# usermod -g 7788 user			##更改用户gid,需要真实存在的组
\# usermod -G 7788 user			##更改用户副组id,需要真实存在
\# usermod -aG 8888 user		##添加用户副组,需要真实存在
\# usermod -c test user			##更改用户说明
\# usermod -s /bin/bash user	##更改用户shell
\# usermod -d /opt/user user	##更改用户家目录,此更改不会创建新的家目录,只是在文件里修改记录
\# usermod -md /opt/user user	##更改用户家目录,删除之前的家目录,同时创建新的家目录
\# groupmod -g 888 usergroup	##更改组id

用户权限下放

\# visudo		##编辑文件写入规则
user     ALL=(root)      NOPASSWD:/usr/sbin/useradd
说明
user下放权力的用户名
ALL下放的主机名,ALL表示所有,可以写本机的主机名(可以用 hostname 查看)
=(root)新执行身份
NOPASSWD:免密操作 ,使用命令时不需要再确认密码
/usr/sbin/useradd下放的权限(which useradd可查看权限的真实目录)

使用

 \# su - user
 \$ sudo useradd user2

修改用户密码

\# passwd	##更改本身密码
\# passwd user		##更改指定用户密码,只有超户可以更改其他用户密码,普通用户无权限

\# echo 123 | passwd --stdin user	##非交互式更改指定用户密码,一条命令直接搞定

文件管理

文件查看

\# ls /root			##列出目录内容
\# ls -d /root		##查看目录本身详细信息
\# ls -a /root		##列出所有内容包括隐藏文件
\# ls -l /root		##列出目录内内容详细信息
\# ls -S /root		##列出目录内各个文件大小
\# ls -s /root		##按大小排列内容
\# ls -R /root		##递归查看目录下所有内容
\# ls -Z /root		##查看目录内文件安全上下文

\# tail /etc/passwd			##查看文件最后5行,默认是5
\# tail -n10 /etc/passwd	##查看文件最后10行,自定义
\# tail -f 10 /etc/passwd	##监控文件最后10行,自定义
\# head /etc/etc/passwd		##查看文件开始5行,默认是5
\# head -n10 /etc/passwd

文件查找

按为文件名查找
\# find /etc  -name passwd		##在/etc/下查找名为passwd的文件

按文件所在范围查找
\# find /etc -maxdepth 1 -name passwd		##查找passwd文件,深度最多只在当前目录下一层
\# find /etc -mindepth 2 -name passwd		##查找passwd文件,深度最少都在2层以下

按文件大小查找
\# find /etc -size 20K		##查找大小是20k的文件
\# find /etc -size -20k		##查找大小小于20k的文件
\# find /etc -size +20k		##查找大小大于20k的文件


按文件所属查找
\# find /etc -user root		##查找属于root用户的文件
\# find /etc -group root	##查找属于root组的问价

文件权限修改

\# chmod 777 /etc/passwd 			##更改文件权限
\# chmod +x /etc/passwd 			##给文件添加x权限
\# chmod -R 777 /etc				##递归丢该权限,会执行目录下所有文件的权限修改

\# chown user /etc/passwd			##更改文件拥有者
\# chgrp user /etc/passwd			##更改文件拥有组
\# chown user.user /etc/passwd		##同时更改文件拥有者和拥有组

\# chown -R /mnt					##更改目录拥有者
\# chgrp -R /mnt					##更改目录拥有组

文件打包压缩

打包
\# tar cf etc.tar /etc		##打包,会忽略绝对路径
\# tar rf etc.tar /mnt		##添加进打包文件
\# tar tf etc.tar			##查看打包文件的内容
\# tar cfP etc.tar /etc		##打包时保留绝对路径

\# tar xf etc.tar -C /mnt			##拆解包到指定目录下
\# tar xf etc.tar -get mnt -C /mnt 	##拆解包中指定内容

\# tar f etc.tar -delet mnt		##删除包中指定内容
\# zip -r etc.tar.zip etc.tar	##压缩
\# unzip etc.tar.zip			##解压

\# gzip etc.tar
\# gunzip etc.tar.gz

\# bzip2 etc.tar
\# bunzip2 etc.tar.bz2


\# xz etc.tar
\# unxz etc.tar.xz
打包压缩合并使用
\# tar cfj /etc
\# tar xfj etc.tar.bz2

\# tar cfz /etc
\# tar xfz etc.tar.gz

\# tar cfJ /etc
\# tar xfJ etc.tar.xz

文件基本操作

文件复制
\# cp /etc/passwd /mnt/

文件重命名
\# mv /mnt/passwd /mnt/123		##mv是移动文件命令,也可以作为重命名作用

文件删除
\# rm -f /mnt/passwd	##删除文件 
\# rm -r /mnt			##删除目录

文件备份
对于文件备份,一般使用cp命令复制一份命名为备份文件
cp /etc/passwd /etc/passwd.bak

进程管理

查看进程

\# ps ax 		##查看当前所有进程
\# ps xf

\# ps axo user,pid,comm,%cpu	##查看指定的指标

\# ps axo pid,nice,comm,uid,%cpu,%mem --sort=%mem		##查看指定指标,并按照内存使用率顺序排序
\# ps axo pid,nice,comm,uid,%cpu,%mem --sort=-%mem	##查看指定指标,并按照内存使用率倒序排序


\# pgrep -u 0		##显示指定uid的进程
\# pgrep -U root	##显示指定用户的进程
\# pgrep -u 0 -l	##显示指定uid进程的名称
根据名称查看进程号
\# pidof sshd

\# ps ax | grep sshd

管理进程

\# kill -1 pid		##刷新进程
\# kill -9 pid		##强制关闭进程
\# kill -15 pid	##关闭进程,可能失败
\# kill -18 pid	##激活进程
\# kill -19 pid	##强制暂停进程
\# killall -1 名称	##刷新相同名称的所有进程
\# killall -9 名称
\# killall -15 名称
\# killall -18 名称
\# killall -19 名称

网络管理

网卡设置

\# vim /etc/sysconfig/network--scripts/ifcfg-ens33	##编写网卡配置文件
TYPE=Ethernet		##网络类型
BOOTPROTO=dhcp		##ip获取方式,如果是none则需要自行配置IPADDR和PREFIX
NAME=ens33			##网卡名称
DEVICE=ens33		##设备名称
ONBOOT=yes			##启动
GETEWAY=172.24.206.1	##网关
DNS1=114.114.114.114	##DNS
临时添加ip
ip addr add dev 192.168.1.10/24		##这种方式是添加新的ip到网卡设备中

ifconfig ens33 192.168.1.10/4		##这种方式是覆盖网卡上的第一条ip
显示网卡信息
ip addr show ens33

ifconfig ens33

MAC地址:在展示出的信息ether后面的就是MAC地址
\# ip addr show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:a8:98:db brd ff:ff:ff:ff:ff:ff
    inet 172.24.207.16/23 brd 172.24.207.255 scope global noprefixroute dynamic ens33

路由表

查看本机路由表
\# rount
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    100    0        0 eth0
111.234.2.0      0.0.0.0         255.255.255.0   U     100    0        0 eth0


添加路由
\# route add -host 172.24.206.100 dev eth0
\# route add -host 10.20.30.148 gw 10.20.30.40     ##添加到10.20.30.148的网关

删除路由
\# route del -host 172.24.206.100 dev eth0
\# route del -net 10.20.30.40 netmask 255.255.255.248 eth0  

启动路由功能
\# sysctl -w net.ipv4.ip_forward=1  
\# vim /etc/sysctl.conf  
net.ipv4.ip_forward = 1  
\# sysctl net.ipv4.ip_forward  


添加静态路由

Iptables

开启iptables后,执行操作
\# iptables -L				##查看策略
\# iptables -F				##刷新策略,会取消之前的显示,重启可以恢复
\# service iptables save	##储存策略
链路说明
input输入,需要经过本机内核
output输出,需要经过本机内核
forward转发,通过内核路由功能
postrouting路由之后,发送信息通过路由之后伪装ip,不需要通过本机内核
prerouting路由之前,传回信息通过路由之前伪装ip,不需要通过本机内核
表名说明
filter经过本机内核的数据(input output forward)
nat不经过内核的数据(postrouting,prerouting,input,output)
mangle当filter和nat表不够用时使用(input output forward postrouting,prerouting,)
默认策略分为5条链和3张表管理不同的进出流量
\# iptables -t filter -A INPUT -j REJECT	##在filter表里添加进策略拒绝所有
\# iptables -t filter -A INPUT -s 172.22.0.30 -j REJECT	##拒绝30主机的输入信息
\# iptables -t filter -I INPUT 1 -j ACCEPT	##插入策略到第一行,拒绝策略之前会读到接受,从上向下读取策略

\# iptables -t filter -D INPUT 3			##删除第三条策略

\# iptables -t filter -I INPUT -s 172.22.0.30 -p tcp --dport 22 -j ACCEPT		##添加让30主机可以访问22端口
\# iptables -t filter -R INPUT 1 -s 172.22.0.20 -p tcp --dport 22 -j ACCEPT	##修改让20主机可以访问22端口

\# iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT			##添加新策略允许访问80端口,不指定表默认filter

修改DNS

在网卡配置中修改
\# vim /etc/sysconfig/network--scripts/ifcfg-ens33

在配置文件中修改或添加
\# vim /etc/resolv.conf
nameserver 114.114.114.114

安装包管理

yum源配置

yum源储存位置
\# ls /etc/yum.repos.d/

yum源编写
\# vim /etc/yum.repos.d/yum-dvd.repo
[yum-dvd]
name=yum-dvd	##名称任意
baseurl=		##资源的路径,可以是网上路径
gpgcheck=1/0	##是否开启验证检测
gpgkey=			##如果gpgcheck为1,这里就需要key的地址
enable=1		##自动启用	

yum安装

对于后缀是rpm的安装包,都可以使用yum安装,yum安装时会附带安装软件的依赖性

\# yum install -y ***.rpm
\# yum remove -y ***.rpm
\# yum update -y ***.rpm

rpm命令安装

\# rpm -ivh ***.rpm		##安装软件包
\# rpm -e ***.rpm		##卸载软件包
\# rpm -qa				##查看所有安装过的软件包
\# rpm -ql nginx		##列出安装后创建出的所有文件

日志管理

rsyslog日志采集管理

编辑配置文件,在文件RULES之后写入自定义的采集级别和存放路径
\# vim /etc/rsyslog.conf
...
#### RULES ####
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
以此为例,前半段规则分为4部分,定义了4项规则,每个“;”为一项,每项的格式为"*.*",第一个*表示类型,第二个*表示级别。后段为指定的路径。
远程日志同步
接收方编辑配置文件,在udp协议注释下写入配置打开接口,接受其他主机的udp传输。
\# vim /etc/rsyslog.conf
# Provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514
$Modload imudp
$UDPServerRun 514
保存后,重启服务,检查端口是否开启
\# systemctl restart rsyslog


发送方定义新的日志采集格式
\# vim /etc/rsyslog.conf
...
#### RULES ####
*.*														@IP
定义将所有类型级别日志传输给指定的IP

日志打包

日志打包可以使用手动命令或自动脚本来实现
命令:按照日期自动命名打包日志
\# tar zcf /opt/log_$(date +%F).tar.gz /var/log/messages

脚本:可以设置定时任务,如每天执行一次打包
\# vim log.sh
#!/bin/bash
tar zcf /opt/log_$(date +%F).tar.gz /var/log/messages
echo > /var/log/messages		##打包后清空之前的日志信息,开始储存新的日志
保存脚本,给予可执行权限
\# chmod +x log.sh
编写定时任务
\# crontab -e		##创建定时任务
00 00 * * *		/opt/log.sh		##每天0点0分执行脚本

文本编辑器

vim日常操作

i		##插入模式
按键[Esc] ##退出插入模式
:wq		##保存退出
:q		##仅退出
:q!		##不保存退出
:wq!	##强制保存退出

:6		##移动到第六行
/a		##搜索文件中所有的a,n向下选择,N向上选择
:noh	##取消文中的高亮显示
:set nu	##显示行号
:set nonu	##取消行号显示
文本编辑中的字符管理
按键【yl】	##复制当前字符,
按键【yw】	##复制当前词,
按键【yy】	##复制当前行“,可以使用【y4y】复制当前位置下面的4行;	

按键【dl】	##删除当前字符,
按键【dw】	##删除当前词,
按键【dd】	##删除当前行;可以使用【d4d】删除当前位置下面的4行,长按【d】一直删除当前行以下内容;	

按键【cl】	##剪贴当前字符,
按键【cw】	##剪贴当前词,
按键【cc】	##剪贴当前行;可以使用【c4c】剪贴当前位置下面的4行;	

按键【p】	##粘贴,
按键【u】	##撤销,
按键【Ctrl+r】	##返回撤销操作;
字符替换
:%s/*/!/g		##*是原字符,!是新字符,%s所有行,g所有列
:1,5/*/!/g		##1-5行所有*替换为!
光标移动
按键【gg】	##移动到最后行,
按键【G】	##移动到最前行,

按键【I】	##移动光标到所在行的最前开始插入,
按键【i】	##当前位置插入,
按键【A】	##移动光标到所在行的最后开始插入,
按键【a】	##当前词后插入,
按键【O】	##在所在行上插入一行插入,
按键【o】	##在所在行下插入一行插入,
按键【S】	##删除所在行插入,
按键【s】	##删除所在词插入。

服务管理


设置开机自启动任务及计划任务

开机自启任务设置

开机自启任务编辑
\# /etc/rc.local
在这个文件里,直接写入需要开机启动执行的命令即可

计划任务设置

延时任务
\# at 08:00		##at命令+时间
at> date 		##需要指定的命令
at> <EOT>		##上面写完命令后【Ctrl+d】确认执行
\# at -l		##查看待执行的任务
\# at -c jobid	##查看指定的任务
\# at -r jobid	##取消指定的任务
定时任务
创建任务
\# crontab -e			##创建定时任务
* * * * *	command		##5个星分别代表分钟、小时、日、月、星期,后面是需要执行的任务或脚本
30 12 * * 5 	command		##每周五12点半执行命令
30 12 * * 5 	root	command		##还可以确认任务执行的用户身份
\# crontab -l			##查看定时任务
\# crontab -r			##删除定时任务

可以指定创建任务的用户
\# crontab -u root -e
在配置文件里设定任务,里面有基础的日常定时任务文件存在
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly

系统性能分析工具

top

命令行输入:top,显示top界面,会随时间自动刷新,【Ctrl+c】退出显示
在这里插入图片描述

内部参数用途
Pcpu百分比排序
M内存百分比排序
T累计占用cpu时间排序
l开启/关掉uptime信息
t开启/关闭task&cpu信息
s调整刷新频率
k终止进程
u查看指定用户进程

因为这些参数的效果不是很突出适合展示,所以还是在个人实操中体验

top命令参数用途
-d指定刷新间隔,top -d 1
-b以批次方式显示,top -b
-n显示批次数量,top -b -n 3

netstat

查看端口是否开启,或查看开启了那些端口

\# netstat -antlp	##展示所有端口
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1380/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1051/master         
tcp        0     36 10.234.2.207:22         172.24.206.73:51311     ESTABLISHED 1382/sshd: root@pts 
tcp6       0      0 :::22                   :::*                    LISTEN      1380/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1051/master  

\# netstat -antlp | grep 22		##过滤显示指定端口的信息
\# netstat -antlp | grep sshd	##过滤显示指定名称的信息

free

查看内存使用量及使用情况

\# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.7G         85M        1.3G        9.1M        296M        1.5G
Swap:          975M          0B        975M

iftop

作用是监控服务器的出入流量,检查有误异常大流量进出;iftop可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等

需要自行编译安装

yum -y install flex byacc  libpcap ncurses ncurses-devel libpcap-devel gcc
wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz

安装完成后,执行iftop开启应用
在这里插入图片描述
参数

iftop -i eth0		##监听指定的网卡

iftop -i eth0 -P	##监听指定网卡并显示服务名称

iftop -F 172.25.0.0/16		##监听特定的网段的进出流量

显示名称的效果
在这里插入图片描述
界面内参数

参数说明
按h切换是否显示帮助;
按n切换显示本机的IP或主机名;
按s切换是否显示本机的host信息;
按d切换是否显示远端目标主机的host信息;
按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;
按N切换显示端口号或端口服务名称;
按S切换是否显示本机的端口信息;
按D切换是否显示远端目标主机的端口信息;
按p切换是否显示端口信息;
按P切换暂停/继续显示;
按b切换是否显示平均流量图形条;
按B切换计算2秒或10秒或40秒内的平均流量;
按T切换是否显示每个连接的总流量;
按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;
按L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;
按j或按k可以向上或向下滚动屏幕显示的连接记录;
按1或2或3可以根据右侧显示的三列流量数据进行排序;
按<根据左边的本机名或IP排序; 按>根据远端目标主机的主机名或IP排序;
按o切换是否固定只显示当前的连接;
按f可以编辑过滤代码,这是翻译过来的说法,我还没用过这个!
按q退出监控。

iostat

iostat工具将对系统的磁盘操作活动进行监视。特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。

需要安装sysstat程序去获得此工具
\# yum install -y sysstat
\# iostat
Linux 3.10.0-1127.19.1.el7.x86_64 (bogon) 	11/04/2020 	_x86_64_	(2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.25    0.00    0.36    0.18    0.00   99.20

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.19        17.21        18.69     769248     835301
scd0              0.00         0.02         0.00       1108          0
dm-0              1.45        16.79        18.34     750299     819677
dm-1              0.00         0.05         0.00       2204          0
数值说明:
%user		##CPU处在用户模式下的时间百分比。
%nice		##CPU处在带NICE值的用户模式下的时间百分比。
%system		##CPU处在系统模式下的时间百分比。
%iowait		##CPU等待输入输出完成时间的百分比。
%steal		##管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
%idle		##CPU空闲时间百分比。

tps			##该设备每秒的传输次数
kB_read/s	##每秒从设备(drive expressed)读取的数据量;
kB_wrtn/s	##每秒向设备(drive expressed)写入的数据量;
kB_read 	##读取的总数据量;
kB_wrtn		##写入的总数量数据量
特殊说明
如果%iowait的值过高,表示硬盘存在I/O瓶颈
如果%idle值高,表示CPU较空闲
如果%idle值高但系统响应慢时,可能是CPU等待分配内存,应加大内存容量。
如果%idle值持续低于10,表明CPU处理能力相对较低,系统中最需要解决的资源是CPU。
使用参数
\# iostat 2 2				##每隔2秒,连续3次 
\# iostat -d /dev/sda		##显示指定磁盘信息
\# iostat -k				##以kb单位显示数据,还有-m,以mb单位显示
\# iostat -d /dev/sda -x	##显示更详细信息
\# iostat -c				##显示cpu信息

三剑客sed、awk、grep

sed

作用是用以批量指定展示,和批量修改替换文本内容

显示操作
\# sed -n 5p /etc/passwd		##显示第5行
\# sed -n 3,5p /etc/passwd		##显示3到5行
\# sed -ne “3p;5p” /etc/passwd	##显示3和5行
\# sed -ne ‘5,$p’ /etc/passwd	##显示5到最后的行
\# sed -n ‘/^s/p’ /etc/passwd	##显示以s开头的行

删除操作
\# sed 5d /etc/passwd			##删除第5行
\# sed 5,10d /etc/passwd		##删除5-10行
\# sed '/^s/d' /etc/passwd		##删除s开头的行
\# sed '/^a/!d' /etc/passwd		##删除除a开头以外的所有行
\# sed '10,$d' /etc/passwd		##删除10行之后所有行

添加操作
\# sed '$a world' /etc/passwd			##在文本最后添加,可以指定行号
\# sed '$a hello\nworld' /etc/passwd	##在文本最后添加,并换行
\# sed -e '/^s/a world' /etc/passwd		##在s开头的行下添加

替换操作
\# sed -e '/^s/c world' /etc/passwd		##替换s开头的行为world
\# sed '5c world' /etc/passwd			##替换第5行为world
\# sed 's/a/@/g' /etc/passwd			##替换文本所有的a为@
\# sed '5,10s/a/@/g' /etc/passwd		##替换文本5-10行所有的a为@

提取操作
\# sed '/^s/w file1' /etc/passwd 		##提取s开头的行到file1中

整合操作
\# sed 'r file1' /etc/passwd			##将file1内容写入passwd后面
\# sed '10r file1' /etc/passwd			##将file1内容写入passwd第10行后面

上面的操作都只是无效操作,只是展示操作后的效果,-i参数可以使操作生效

grep

文本过滤工具

\# grep root /etc/passwd		##过滤还有root的行
\# grep ^root /etc/passwd		##过滤root开头的行
\# grep nologin$ /etc/passwd	##过滤nologin结尾的行
\# grep -i root /etc/passwd		##过滤关键词忽略大小写
\# grep -2 root /etc/passwd		##过滤含有关键词的行及该行上下2行
\# grep -n root /etc/passwd		##过滤关键词显示匹配行的行号
\# grep -A2 root /etc/passwd	##过滤含有关键词的行及该行下2行
\# grep -B2 root /etc/passwd	##过滤含有关键词的行及该行上2行
\# grep -v root /etc/passwd		##过滤不包含root 的行
\# grep -E "root|nologin$" /etc/passwd	##过滤包含root或nologin结尾的行

awk

报告生成器

\# awk '{print NR}' /etc/passwd						##列出所有行号
\# awk -F : '{print NF}' /etc/passwd				##以:为分割显示有几列
\# awk '/nologin$/{print FILENAME}' /etc/passwd		##以文件名展示所有nologin结尾的行,文件名也可以写为其他内容如“aaa”等
\# awk -F : '/sh$/||/bash$/{print $1}' /etc/passwd	##以:分割并打印sh或bash结尾的行的第一列
\# awk -F : '/sh$/&&/bash$/{print $0}' /etc/passwd	##以:分割并打印sh和bash结尾的行的所有列
\# awk -F : '$6~/home/&&!/^root/{print}' /etc/passwd	##打印出第六列是home并且不是以user开头的行
\# awk -F : '$6!~/home/{print}' /etc/passwd		##打印出第六列不是home的行
\# awk 'BEGIN{n=0} {n++} END{print n}' /etc/passwd	##打印出文件行数

入侵检测工具

rootkit

Rootkit是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,比较多见到的是Rootkit一般都和木马、后门等其他恶意程序结合使用。Rootkit一词更多地是指被作为驱动程序,加载到操作系统内核中的恶意软件。
通过Rootkit,攻击者可以控制被入侵的电脑。

chkrookit

chkrootkit是一个linux下检RootKit的脚本,在某些检测中会调用当前目录的检测程序
源码链接==》

\# yum install gcc gcc-c++ make
\# yum install glibc-static
解压后进入文件执行 make 命令,就可以使用
\# make
*** stopping make sense ***
make[1]: Entering directory `/mnt/chkrootkit-0.53'
cc -static  -o strings-static strings.c
cc  -o chkutmp chkutmp.c
make[1]: Leaving directory `/mnt/chkrootkit-0.53'

\# ./chkrootkit | grep INFECTED		##如果检测出INFECTED,可能被植入Rootkit

备注:由于Chkrootkit的检查过程中使用了部分系统命令。因此,如果服务器被入侵,那么,Chkrootkit的检查结果也将变得完全不可信。

RKHunter

rkhunter是Linux系统平台下的一款开源入侵检测工具,具有非常全面的扫描范围,除了能够检测各种已知的rootkit特征码以外,还支持端口扫描、常用程序文件的变动情况检查。

源码链接

下载源码包后解压,进入解压目录执行安装脚本
\# ./installer.sh --install

为基本系统程序建立校对样本,建议系统安装完成后就建立。
\# rkhunter --propupd
\# cat /var/lib/rkhunter/db/rkhunter.dat		###样本文件位置

运行rkhunter检查系统
它主要执行下面一系列的测试:

  1. MD5校验测试, 检测任何文件是否改动.
  2. 检测rootkits使用的二进制和系统工具文件.
  3. 检测特洛伊木马程序的特征码.
  4. 检测大多常用程序的文件异常属性.
  5. 执行一些系统相关的测试 - 因为rootkit hunter可支持多个系统平台.
  6. 扫描任何混杂模式下的接口和后门程序常用的端口.
  7. 检测如/etc/rc.d/目录下的所有配置文件, 日志文件, 任何异常的隐藏文件等等. 例如, 在检测/dev/.udev和/etc/.pwd.lock文件时候, 我的系统被警告.
  8. 对一些使用常用端口的应用程序进行版本测试. 如: Apache Web Server, Procmail等.
执行命令检测
\# rkhunter --check

如果不想要每个部分都以 Enter 来继续,想要让程序自动持续执行,可以使用:
\# rkhunter --check --sk

更新rkhunter的数据库,帮助检查rookits
\# rkhunter --check --sk

检查程序版本,保证版本最新
\# rkhunter --versioncheck
  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Howei__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值