用户——提权——权限管理
linux用户管理
用户基本概述
什么是用户
用户是指能够正常登录linux系统,例:登录王者荣耀的用户,登录QQ的用户
为什么需要用户
- 1.系统上的每一个进程(运行的程序),都需要一个特定的用户;
- 2.通常在公司是使用普通用户管理服务器,因为root权限过大,容易造成故障和不可挽回的状况
用户有哪些分类
- 系统中约定的含义
用户 | 含义 |
---|---|
0 | 超级管理员,最高权限,有着极强的破坏能力 |
1~200 | 系统用户,用来运行系统自带的进程,默认已创建 |
201~999 | 系统用户,用来运行用户安装的程序,所以此类用户无需登录系统 |
1000+ | 普通用户,正常可以登录系统的用户,权限较小,能执行的任务所以也就有限 |
查询用户的ID信息
- 使用id命令查询当前登录用户的信息
[root@localhost ~]# id #查看当前所登录的用户信息
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@localhost ~]# id zj #查看其它用户的信息
uid=1041(zj) gid=1041(zj) groups=1041(zj)
用户相关配置文件
- 当我们创建一个新用户,系统会将用户信息存放在/etc/passwd中,密码单独存放在/etc/shadow中,这两个文件非常重要,不能轻易删除与修改
passwd文件
- /etc/passwd配置文件解释,如下图:
shadow文件
- /etc/shadow 配置文件,如下图
- 使用chage更改用户密码示例
-d //设置最近一次更改密码时间, 0下次登陆系统强制修改密码
-m //设置用户两次改变密码之间使用"最小天数"
-M //设置用户两次改变密码之间使用"最大天数"
-W //设置密码更改警告时间 将过期警告天数设为“警告天数”
-I //设置密码过期天数后, 密码为失效状态
-E //设置用户过期时间, 账户失效后无法登陆
-l //显示用户信息
#修改时间为2014年08月31日,和图中时间匹配,方便后续验证
[root@xuliangwei ~]# date -s '20140831'
Sun Aug 31 00:00:00 CST 2014
[root@xuliangwei ~]# date
Sun Aug 31 00:00:01 CST 2014
[root@xuliangwei ~]# usereadd bgx1
[root@xuliangwei ~]# echo "123" |passwd --stdin bgx1
[root@xuliangwei ~]# tail -1 /etc/shadow
bgx1:!!:16312:0:99999:7:::
#设置最近一次修改密码时间
[root@xuliangwei ~]# chage -d "2014-09-01" bgx1
[root@xuliangwei ~]# tail -n1 /etc/shadow
bgx1:!!:16314:0:99999:7:::
#设置最短使用密码时间
[root@xuliangwei ~]# chage -m 2 bgx1
[root@xuliangwei ~]# tail -n1 /etc/shadow
bgx1:!!:16314:2:99999:7:::
#设置密码最长使用时间
[root@xuliangwei ~]# chage -M 15 bgx1
[root@xuliangwei ~]# tail -n1 /etc/shadow
bgx1:!!:16314:2:15:7:::
#设置密码警告时间
[root@xuliangwei ~]# chage -W 6 bgx1
[root@xuliangwei ~]# tail -n1 /etc/shadow
bgx1:!!:16314:2:15:6:::
[root@xuliangwei ~]# chage -W 7 bgx1
[root@xuliangwei ~]# tail -n1 /etc/shadow
bgx1:!!:16314:2:15:7:::
#设置密码过期时间
[root@xuliangwei ~]# chage -I 5 bgx1
[root@xuliangwei ~]# tail -n1 /etc/shadow
bgx1:!!:16314:2:15:6:5::
#设置用户过期时间
[root@xuliangwei ~]# chage -E "20115-08-31" bgx1
[root@xuliangwei ~]# tail -n1 /etc/shadow
bgx1:!!:16314:2:15:6:5:6627567:
[root@xuliangwei ~]# chage -l bgx1
Last password change : Sep 01, 2014 #最近一次更改密码时间
Password expires : Sep 16, 2014 #密码过期时间
Password inactive : Sep 21, 2014 #密码失效时间
Account expires : Aug 31, 2015 #用户失效时间
Minimum number of days between password change : 2 #密码最短使用时间
Maximum number of days between password change : 15 #密码最长使用时间
Number of days of warning before password expires : 7 #密码过期前警告天数
#如何验证,只调整时间为如下进行验证:
1.验证普通用户是否能修改密码, 不需要调整时间。
2.普通用户登陆系统后, 会提示警告密码还剩多少天过期
[root@xuliangwei ~]# date -s "2014-09-12"
3.普通用户登陆系统后, 强制要求修改密码
[root@xuliangwei ~]# date -s "2014-09-18"
4.普通用户登陆系统后, 提示账户已过期
[root@xuliangwei ~]# date -s "2014-09-23"
用户相关命令
添加用户useradd
选项
-u #指定要创建用户的UID,不可以冲突
-g #指定要创建用户的基本组
-G #指定要创建用户的附加组,逗号隔开可添加多个附加组
-d #指定要创建用户家目录
-s #指定要创建用户的bash shell
-c #指定要创建用户的注释信息
-M #给创建的用户不创建家目录
-r #创建系统账户,默认无家目录
添加用户范例
例1
- 创建test用户
- 用户ID为6966
- 基本组为opt,附加组dev
- 注释信息HelloWord,登陆shell:/bin/bash
[root@localhost ~]# groupadd opt
[root@localhost ~]# groupadd dev
[root@localhost ~]# useradd -u 6966 -g opt -G dev -c "HelloWord" -s /bin/bash test
例2
- 创建一个test1系统用户
- 此用户不需要家目录
- 此用户不需要登录系统
[root@localhost ~]# useradd -r tset1 -M -s /sbin/nologin`
修改用户usermod
选项
-u #指定修改用户的UID
-g #指定修改用户的基本组
-G #指定修改用户的附加组,使用逗号隔开多个附加组,覆盖原有的附加组
-d #指定修改用户家目录
-s #指定修改用户的bash shell
-c #指定修改用户的注释信息
-l #指定要修改用户的登录名
-L #指定要锁定的用户
-U #指定要解锁的用户
修改用户范例
例1
- 修改test用户
- uid为5008
- 基本组为network,附加组为opt dev sa
- 注释信息为student ,登录名称为new_test
[root@localhost ~]# usermod -u 5008 -g network -G opt,dev,sa -l new_test -c "student" test`
例2
- 修改new_test用户
- 为new_test用户配置密码
- 锁定该用户,然后测试远程连接登录
- 解锁该用户,然后再次测试连接登录
修改密码1:[root@localhost ~]# echo "123" |passwd --stdin new_test
修改密码2:[root@localhost ~]# passwd new_test
Changing password for user new_test.
New password:
BAD PASSWORD: The password is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]# usermod -L new_test #不可以登录
[root@localhost ~]# usermod -U new_test #可以登录了
删除用户userdel
删除用户范例
例1
- 删除 new_test
- 连同家目录一起删除
[root@localhost home]# userdel -r new_test
例2
- 批量删除系统中创建过的所有无用的用户
- 使用awk提取无用的用户名称
- 使用sed拼接删除用户的命令
- 调用userdel命令,连同家目录一并删除
[root@localhost home]# awk -F ':' '$3>1000{print $1}' /etc/passwd | sed -r 's#(.*)#userdel -r \1#g'|bash
设定密码passwd
- 设定密码使用passwd
- 1.普通用户只允许更改自己的密码,无法修改其他人的密码,并且密码长度必须为8位字符
- 2.管理员允许修改任何用户的密码,无论密码长度
- 推荐密码保护套件工具 链接: lastpass官方网站
交互式设定密码
[root@localhost ~]# passwd #给当前用户修改密码
[root@localhost ~]# passwd root #给root用户修改密码
[root@localhost ~]# passwd drzk #给drzk用户修改密码,普通用户只能自己家修改自己密码
非交互式设定密码
- 非交互式设定简单密码
[root@localhost ~]# echo "123" |passwd --stdin new_test
- 非交互式设定随机密码
[root@localhost ~]# yum install -y expect
[root@localhost ~]# echo $(mkpasswd -l 10 -d 2 -c 2 -C 2 -s4)| tee pass.txt|passwd --stdin zhaojie
linux用户组管理
什么是用户组
- 组是一种逻辑层面的定义
- 逻辑上将多个用户归纳至一个组,当我们对组操作,其实就相当于对组中的所有用户进行操作。
组有几种类别
- 对于用户来说,组分为这几类
默认组:创建用户时不指定组,则默认创建与用户同名的组
基本组:用户有且只能有一个基本组,创建时可以用-g指定
附加组:用户可以有多个附加组,创建时用-G指定
组相关的配置文件
- 组账户信息保存在/etc/group和/etc/gshadow两个文件中,着重掌握group
group文件
- /etc/group配置文件解释
gshadow文件
- /etc/gshadow文件
用户组相关的命令
添加组groupadd
选项
-f #如果组已经存在,会提示成功创建的状态
-g #为新组设置GID,若GID已经存在会提示GID已存在
-r #创建一个系统组
修改组groupmod
选项
-g #修改组GID
-o: #与groupadd相同
-n #改名为新的组
删除组groupdel
[root@localhost ~]#groupdel 组名
普通用户如何提权
su与sudo
- 1.su switch user 身份切换,使用普通用户登录,然后使用su命令切换到root
- 优点:简单
- 缺点:需要知道root密码
- 2.sudo提权,当需要使用root权限时进行提权,而无需切换至root用户
- 优点:安全,方便
- 缺点:需要预先定义规则,较为复杂
su命令身份切换
- 在使用su且换身份前,我们需要shell登录分类,环境变量配置文件加载顺序
Shell登录分类
- 登录shell需要输入用户名和密码才能进入Shell
- 非登录shell不需要输入用户名和密码就能进入Shell
环境变量配置文件
- profile类文件:设定环境变量,登录前运行的脚本和命令
- bashrc类文件:设定本地变量,定义命令别名
- 用户配置文件
- ~/.bash_profile
- ~/.bashrc
- 全局环境变量:
- /etc/profile
- /etc/profile.d/*.sh
- /etc/basrc
- 登录式shell配置文件加载顺序:/etc/profile->/etc/profile.d/*.sh->/.bash_profile->/.bashrc->/etc/bashrc
- 非登录式shell配置文件加载顺序:/.bashrc->/etc/bashrc->/etc/profile.d/*.sh
su与环境变量的关系
- su - username 属于登陆式shell
- su username 属于非登录式shell
- 区别:加载环境变量不一样
1.普通用户使用su切换到root用户,需要输入root超级管理员密码
[zhaojie@localhost ~]$ su - root
Password:
2.以某个用户的身份执行某个服务,使用su -c username
[zhaojie@localhost ~]$ su - zhaojie -c 'ifconfig'
sudo命令提权
su 命令在用户身份切换时,需要拿到root管理员密码,如果当某个用户泄露了root密码,那么会导致系统非常不安全,为了改进这一问题,所以有了现在的sudo
sudo快速起步
- 快速配置sudo方式
1.将用户加入wheel组,默认wheel组有sudo权限
[root@localhost ~]# usermod -G wheel zhaojie
2.切换到普通用户身份
[root@localhost ~]# su - zhaojie
3.普通用户正常情况下无法删除/opt目录
[zhaojie@localhost ~]$ rm -rf /opt/
rm: cannot remove `/opt: Permission denied
4.使用sudo提权,然后输入普通用户密码,正常可以删除无权限的/opt目录
[zhaojie@localhost ~]$ sudo rm -rf /opt
5.后期可以通过审计日志查看普通用户提权都执行了什么操作
[root@localhost ~]# tail -f /var/log/secure
linux基础权限
linux权限介绍
什么是权限
- 权限是用来约束用户对系统所作的操作
- 权限是指某个特定的用户具有特定的系统资源使用权力
为什么需要权限
- Linux是一个多用户操作系统,对于每个用户来说,个人隐私的保护十分重要,所以需要进行权限划分
- 1.安全性:降低误删除风险,减少人为造成故障以及数据泄露等风险
- 2.数据隔离:不同的权限能看到,以及操作不同的数据
- 3.职责明确:电商场景客服只能查看投诉,无法查阅店铺收益,运营则能看到投诉以及店铺收益
权限与用户的关系
- 在linux系统中,权限是用来定义用户能做什么,不能做什么
- 1.针对文件定义了三种身份:属主(owner),属组(group),其他人(others)
- 2.每种身份有对应三种权限:读(read),写(write),执行(execute)
- 当一个用户访问文件流程如下:
- 1)判断用户是否为文件属主,如果是则按属主权限进行访问
- 2)判断用户是否为文件属组,如果是则按属组权限进行访问
- 3)如果不是文件属主,也不是文件属组,则按其他人权限进行访问
权限中rwx的含义
字母 | 含义 | 二进制 | 八进制权限标识法 |
---|---|---|---|
r- - | 读取权限 | 100 | 4 |
-w- | 写入权限 | 010 | 2 |
- -x | 执行权限 | 001 | 1 |
- - - | 没有权限 | 000 | 0 |
修改文件权限
修改权限的意义
- 赋予某个用户或组—>能够以何方式(读写执行)—>访问文件
如何修改权限
- 修改权限使用命令:chmod
- 对于root用户,可以修改任何人的文件权限
- 对于普通用户仅仅只能修改属于自己文件权限
UGO方式
1)给文件所有人添加读写执行权限
[root@localhost ~]# chmod a=rwx test
2)取消文件的所有权限
[root@localhost ~]# chmod a= -rwx test
3)属主读写执行,属组读写,其他人无权限
[root@localhost ~]# chmod u=rwx,g=rw,o=- test
4)属主属组读写执行,其他人读权限
[root@localhost ~]# chmod ug=rwx,o=r test
NUM方式
1)设定文件权限644,rw-r--r--
[root@localhost ~]# chmod 644 test
2)设定文件权限600,rw-------
[root@localhost ~]# chmod 600 test
3)设定文件权限,755,递归授权rwx-r-xr-x
[root@localhost ~]# chmod -R 755 test1
权限设定对文件与目录的区别
权限 | 对文件的影响 | 对目录的影响 |
---|---|---|
读取权限(r) | 具有读取\阅读文件内容权限 | 具有浏览目录及子目录 |
写入权限(w) | 具有新增、修改文件内容的权限 | 具有增加和删除目内的文件权限 |
执行权限(x) | 具有执行文件的权限 | 具有访问目录的内容(取决于目录中文件权限) |
文件权限总结
- 1.读取权限r:具有读取,阅读文件内容权限
- 只能使用查看类命令:cat ,head,tail,less,more
- 2.写入权限w:具有新增,修改文件内容的权限
- 使用vim会提示权限拒绝,但可以强制保存,会覆盖文件的所有内容
- 使用echo命令重定向的方式可以往文件内容写入数据,>>可以追加内容
- 使用rm无法删除文件,因为删除文件需要看上级目录是否有w的权限
- 3.执行权限x:具有执行文件的权限
- 执行权限什么用都没有
- 如果普通用户需要执行文件,需要配合r权限
目录权限总结
- 1.读取权限r:具有浏览目录及子目录权限
- 使用ls命令浏览目录及子目录,但同时也会提示权限拒绝
- 使用ls -l命令浏览目录及子目录,文件属性会带问号,并且只能看到文件名
- 2.写入权限w:具有增加,修删或修改目录内文件名权限,需要x权限配合
- 可以在目录内创建文件,删除文件(跟文件本身权限无关)
- 不能进入目录,不能复制目录,不能删除目录,不能移动目录
- 3.执行权限x:具有执行文件的权限
- 只能进入目录
- 不能浏览,复制,移动,删除
文件与目录权限大总结
- 文件权限设定:
- 文件r权限,只给用户查看,无其他操作
- 文件rw权限,可以查看和编辑文件内容
- 文件rx权限,允许查看和执行文件,但不能修改文件
- 文件rwx权限,能读,能写,能执行,不能删除
- 目录权限设定:
- 目录rx权限,允许浏览目录内文件及子目录,不允许在该目录下创建文件,删除文件
- 目录rw权限,能查看目录,能往目录写入文件,但无法进入目录–>(使用的情况太少)
- 默认系统设定的安全权限
- 文件权限:644
- 目录权限:755
修改文件所属关系的意义
如何修改文件的所属关系
- 可以使用命令;chown,chgrp
- chown 能变更文件的属主和属组
- chgrp仅能变更文件的属组
chown命令
1.准备环境,创建文件和目录
[root@localhost ~]# mkdir /data
2.修改所属主为bin
[root@localhost ~]# chown bin/data
3.修改所属组为admin
[root@localhost ~]# chown .admin /data
4.修改目录所属主为root,所属组为root,并进行递归授权
[root@localhost ~]# chown -R root.root dir
========================================================================================
chgrp命令
1.准备环境,创建文件,目录
[root@localhost ~]# mkdir /data1
修改所属组admin
[root@localhost ~]# chgrp .admin /data
文件特殊权限
特殊权限SUID
SUID生产背景
在linux系统中,每个普通用户都可以更改自己的密码,这是合理的设置;但用户的密码存储在/etc/shadow文件中,也就是说,普通用户再更改自己密码时会更新/etc/shadow文件的内容
但/etc/shadow文件不允许任何人修改?为什么普通用户可以修改自己的权限呢?
[root@localhost ~]# ll /etc/shadow
----------. 1 root root 813 Dec 2 04:45 /etc/shadow
其实,普通用户可以修改自己的密码在于passwd命令本身,该命令拥有特殊权限setUID也就是在属主的权限位的执行权限上是s
[root@localhost ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 33600 Apr 6 2020 /usr/bin/passwd
解释:当一个执行文件设置SUID后,用户在执行这个文件时将以文件所有者的身份来执行
- 当我们使用普通用户执行passwd命令时发生的变化
- 1.由于passwd命令拥有suid特殊权限(属主位:s)
- 2.所以passwd命令在执行的过程中,会以命令的属主身份运行该命令(也就是root身份)
- 3.用户—>passwd—>转换为命令属主身份root执行—>操作/etc/shadow信息变更
SUID配置语法
[root@localhost ~]# chmod u+s test
[root@localhost ~]# chmod 4755 test
SUID作用总结
- 1.让普通用户对可执行的二进制文件,临时拥有二进制文件的所属主权限
- 2.如果设置的二进制文件没有执行权限,那么suid的权限显示就是大S
- 3.特殊权限suid仅对二进制可执行程序有效,其他文件或目录则无效
- 注意:suid相对危险,不建议对vim或rm进行suid设定操作
特殊权限SGID
- SGID:
- 设置二进制可执行文件,命令在执行的过程中,会以命令的属组身份运行该命令
- 设置在目录上,这时候在该目录下新建的文件/目录自动继承父目录的属组
SGID配置语法
[root@localhost ~]# chmod g+s /dir
[root@localhost ~]# chmod 2755 /dir
SGID场景说明
需求描述
1.系统有两个用户,分别为zj1与zj2,这两个用户都拥有example附加组
2.这两个用户需要共同拥有/data/code目录的开发权
3.互相之间能修改彼此的文件,且该目录不允许其他人进入查阅
[root@localhost ~]# groupadd example
[root@localhost ~]# useradd zj2 -G example
[root@localhost ~]# useradd zj1 -G example
[root@localhost ~]# mkdir /data/code
[root@localhost ~]# chgrp project /data/code/
[root@localhost ~]# chmod 770 /data/code/
[root@localhost ~]# chmod 2770 /data/code/
特殊权限SBIT
什么是SBIT
一旦目录被赋予了粘滞位除了root可以删除目录中的所有文件,普通用户对该目录就算拥有w权限,也只能删除自己建立的文件,而不能删除其他用户建立的文件。
SBIT配置示例
需求:默认情况下/mnt不是粘滞位,如何将此目录设置为粘滞位
[root@localhost data]# chmod 1755 /tmp
[root@localhost data]# chmod o+t /tmp
SBIT使用场景
后期当我们要初始化MySql服务时,服务会创建一些临时文件存储至/tmp目录下,当初始化完毕后,自己会清理掉里面的数据,别人无法清理(如果这个目录不是粘滞位,那么初始化MySql就会报错)
- 编写shell脚本模拟
- 1.模拟MySql初始化创建文件至/tmp目录
- 2.然后登录普通用户删除MySql的初始化文件
- 3.如果普通用户删除成功,则初始化失败
- 4.如果普通用户删除失败,则MySql服务尝试删除,删除成功,则初始化成功
#!/bin/bash
#********************************************************************
#Author: ZhaoJie
#QQ: 631455878
#Date: 2021-12-03
#FileName: my_ql_init.sh
#URL; https://www.zhaojie.com
#Description: The test script
#Copyright (C): 2021 All rights reserved
#********************************************************************
mysql_tmp_file=/tmp/mysql.init
User=oldxu
#1.初始化mysql服务
touch ${mysql_tmp_file}
#2.模拟用户删除文件
useradd oldxu
su - ${User} -c "rm -f ${mysql_tmp_file} &>/dev/null"
#3.检查是否删除成功
if [ $? -eq 0 ];then
echo "${mysql_tmp_file} 文件被 ${User} 用户删除成功,该目录不是SBIT, mysql初始化失败"
else
echo "${mysql_tmp_file}文件被 ${User} 用户删除失败,该目录时SBIT,mysql初始化成功"
fi
==========================================================================================
//默认粘滞位测试
[root@localhost data]# sh my_ql_init.sh
/tmp/mysql.init文件被 oldxu 用户删除失败,该目录时SBIT,mysql初始化成功
//修改位普通目录测试
[root@localhost data]# chmod 777 /tmp/
[root@localhost data]# sh my_ql_init.sh
useradd: user 'oldxu' already exists
/tmp/mysql.init 文件被 oldxu 用户删除成功,该目录不是SBIT, mysql初始化失败
SBIT作用总结
- 1.让所有普通用户对该目录具有写入权限,并且能实现每个用户只能删除自己的文件
- 2.粘滞位目录表现在others的x位,用t表示,如果没有执行权限则显示为T
- 3.粘滞位目录的属主以及root用户权限目录中的内容,其他用户无权限删除
文件特殊属性
什么是特殊属性
这类文件属性凌驾于rwx基础权限上,是一种高级属性
特殊属性的作用
- 1.创建一个文件,不允许被修改,移动,删除,包括root也不行–>适合/etc/passwd
- 2.创建一个文件,仅允许往文件里面追加数据,不允许修改,移动,删除。–>适合sudo审计日志
特殊属性如何配置
linux系统通过chattr来实现特殊属性配置
命令格式:chattr [+ - =] [选项] 文件或目录
a:可对文件进行追加内容
i:锁定文件。不允许其他操作
1.配置/etc/passwd文件,不能改,不能追加,不能删除
1.赋予i权限
[root@localhost data]# chattr +i /etc/passwd
2.验证权限
[root@localhost data]# rm -f /etc/passwd
rm: cannot remove '/etc/passwd': Operation not permitted
2.配置/var/log/secure文件,只能追加写入日志,不允许手动修改,也不允许删除
1.赋予a权限
[root@localhost data]# chattr +a /var/log/secure
[root@localhost data]# lsattr /var/log/secure
-----a---------- /var/log/secure
2.测试追加数据
[root@localhost ~]# echo "test" >> /var/log/secure
[root@localhost ~]# echo "test" >> /var/log/secure
3.不能删除,不能修改
[root@localhost ~]# rm -f /var/log/secure
rm: cannot remove '/var/log/secure': Operation not permitted
3.如果想取消特殊属性,需要使用root身份
[root@localhost ~]# chattr -i /etc/passwd
[root@localhost ~]# chattr -a /var/log/secure
特殊属性场景
- 模拟病毒串改张店,然后使用chattr锁住文件,让病毒程序无法串改,然后追踪并杀死病毒程序
- 1.安装并启动http服务
- 2.模拟病毒脚本篡改网页内容
- 3.锁定篡改文件,然后找出病毒,将其杀死
1.安装http服务,然后启动对外
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# yum install httpd -y
[root@localhost ~]# systemctl start httpd
2.编写病毒脚本,尝试篡改网页内容
#!/bin/bash
#********************************************************************
#Author: ZhaoJie
#QQ: 631455878
#Date: 2021-12-03
#FileName: virus.sh
#URL; https://www.zhaojie.com
#Description: The test script
#Copyright (C): 2021 All rights reserved
#********************************************************************
web_site=/var/www/html/index.html
while true
do
echo "我是病毒" > ${web_site}
sleep 20
done
3.锁定篡改文件,然后杀死病毒
[root@localhost ~]# chatttr +i /var/www/html/index.html
[root@localhost ~]# kill $(ps -ef | grep virus | grep -v grep|awk '{print $2}')