Apache日志统计举例
参考:http://loveyan.blog.51cto.com/829079/745164
http://blog.sina.com.cn/s/blog_79bc8e830101m84w.html
http://www.ttlsa.com/linux/site-troubleshooting-common-commands/
http://www.haiyun.me/archives/nginx-log.html
(1)查看IP($1代表IP)
#cat access_log | awk '{print $1}'
(2)对IP排序
#cat access_log | awk '{print $1}'| sort
(3)打印每一重复行出现的次数,“uniq -c”表示标记出重复数量。
#cat access_log | awk '{print $1}'|sort| uniq -c
(4)排序并统计行数
#cat access_log | awk '{print $1}'|sort|uniq -c|sort -rn | wc -l
(5)显示访问前10位的IP地址,便于查找攻击源
#cat access_log|awk '{print $1}'|sort|uniq-c|sort -nr| head -10
注意awk '{print$1',它表示取日志的第一段,如果换成别的日志,其IP地址在第3段那么就要改变相应数值。
(6)显示指定时间以后的日志($4代表时间)
#cat access_log |awk'$4>="[23/Jul/2012:01:00:01"' access_log
(7)找出访问量最大的IP,并封掉(对排错很有帮助)
#cat access_log |awk '{print $1}'|sort|uniq -c|sort -nr | more
9999192.168.150.179
11 192.168.150.1
#iptables -I INPUT -s 192.168.150.179 -j DROP
#iptables -I INPUT -s 192.168.150.0/24 -j DROP
如果将上面的Shell做以下变形就可以得出访问量TOP 10
#cat access_log |awk '{print $1}'|sort|uniq -c|sort -nr | head -10
(8)找出Apache日志中,下载最多的几个exe文件(下载类网站常用,这里以.exe扩展名举例)
# cat access_log |awk '($7 ~/.exe/){print "$10 "" $1 ""$4""$7}' |sort -n |uniq -c |sort -nr |head -10
2 - 192.168.150.1[25/Jul/2012:05:46:05/test.exe
1 -192.168.150.152[25/Jul/2012:05:46:47/test.exe
使用如下命令:
#cat access_log |awk `($10 >10000000&& $7 ~/.exe/) {print $7}` |sort �Cn|uniq �Cc|sort �Cnr|head -10
这条命令经过增加一个>10000000的条件判断内容就可以显示出大于10MB的exe文件,并统计对应文件发生次数,这条命令对于网站日常分析是非常有帮助的,大家可以灵活使用。
(12)把IP数量输出到文本显示:
cat access_log_2011_06_26.log |awk '{print $1}'|uniq -c|wc -l > ip.txt
(13)查看 access.Log 文件ip统计(从高到低)
cat access.log |awk '{print $3}'|sort|uniq -c|sort -rn| wc -l
(14)查看Apache的并发请求数及其TCP连接状态
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
返回结果示例:
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057
其中的SYN_RECV表示正在等待处理的请求数;ESTABLISHED表示正常数据传输状态;TIME_WAIT表示处理完毕,等待超时结束的请求数。
如果没有mkisofs命令,需要安装yum install -y mkisofs
[root@localhost ~]# mkdir test [root@localhost ~]# mkisofs -o test.iso test //创建镜像文件 I: -input-charset not specified, using utf-8 (detected in locale settings) Total translation table size: 0 Total rockridge attributes bytes: 0 Total directory bytes: 0 Path table size(bytes): 10 Max brk space used 0 174 extents written (0 MB) [root@localhost ~]# ls anaconda-ks.cfg install.log install.log.syslog test test.iso [root@localhost ~]# mkdir /jingxiang [root@localhost ~]# mount -o loop test.iso /jingxiang //挂载镜像文件
#!/bin/bash #此脚本是获取计算机当前的网络配置信息 #注意下面的'eth0'需要根据个人的网络适配器名称来进行修改 #1、获取ip地址 echo "获取当前的ip地址是:" #第一种方法 ifconfig eth0 |grep "inet addr:" |sed 's/.*addr://g'|sed 's/Bcast.*$//g' #第二种方法 #ifconfig eth0 |grep "inet addr:" |sed 's/.*addr://g' |awk '{print $1}' #2、获取子网掩码 echo "获取当前的子网掩码:" ifconfig eth0 |grep "inet addr" |awk 'BEGIN{FS=":"}{print $4}' #3、获取网关 echo "获取当前的网关:" route -n |grep "UG" |awk '{print $2}' #4、获取DNS echo "获取当计算机的DNS地址:" cat /etc/resolv.conf |grep "nameserver"|awk '{print $2}' #5、获取MAC地址 echo "获取当前适配器的MAC地址:" ifconfig |grep "^eth0" |awk '{print $5}'
Linux下网站备份脚本
#!/bin/bash #backup database mypw=CactiEZ newtime=$(date +%Y%m%d) if [ -d /var/www/backup/ ];then mysqldump -u root -p$mypw DB > /var/www/backup/$newtime-Database.sql else mkdir /var/www/backup/ mysqldump -u root -p$mypw DB > /var/www/backup/$newtime-Database.sql fi tar -zcvf /var/www/backup/$newtime-www.tar.gz /var/www/ find /var/www/backup/ -mtime +4 -exec rm -rf {} \;
Linux下利用nc命令来监控检测服务器的端口使用情况
最近看到一个问题,前端用apache htttpd进行发布(80端口),通过双机负载均衡转发到后端的两个tomcat进行处理(8081和8082端口),现在需要随时监控这三个端口的情况,一旦down掉需要能够立即告警处理。批量的系统监控比较好的是用nagios软件来实现,小项目专门装一个nagios软件,有点繁琐,可以用nc(NetCat)命令来实现。
NetCat 官方地址:http://netcat.sourceforge.net/
参考:http://my.oschina.net/jccpp/blog/123430
http://www.cnblogs.com/wenbiao/p/3375811.html
[root@server ~]# yum install -y nc [root@server ~]# rpm -qa nc nc-1.84-22.el6.x86_64
一、nc命令检测端口的用法
-s<来源地址> 设置本地主机送出数据包的IP地址。
-u 使用UDP传输协议。
-v 显示指令执行过程。
-w<超时秒数> 设置等待连线的时间。
-z 使用0输入/输出模式,只在扫描通信端口时使用。
例1:扫描指定的8080端口
# nc -v -w 10 -z 192.168.0.100 8080
Connection to 192.168.0.100 8080 port [tcp/http] succeeded!
例2:扫描20到25的端口范围,并详细输出。
# nc -v -w 2 -z 192.168.0.100 20-25
例3:扫描1到65535的端口范围,只输出打开的端口(去掉-v参数即可)
# nc -w 1 -z 192.168.0.100 1-65535
二、批量检测服务器指定端口开放情况:
1、假如我们要监控一堆指定的IP和端口,可新建一个文件(第1列服务器IP,第2列要监控的端口)。
# vim /scripts/ip-ports.txt
192.168.0.100 80 192.168.0.100 8081 192.168.0.101 8082 192.168.1.100 21
2、我们可以写这样一个脚本来批量检测端口是否开放:
# vim /scripts/ncports.sh
#!/bin/bash #检测服务器端口是否开放,成功会返回0值显示ok,失败会返回1值显示fail cat /scripts/ip-ports.txt | while read line do nc -w 10 -z $line > /dev/null 2>&1 if [ $? -eq 0 ] then echo $line:ok else echo $line:fail echo "服务器 $line 端口不通,请尽快处理!" | mutt -s "【机房监控】服务器$line端口不通" [email protected] fi done
3、执行脚本查看运行结果如下:
# chmod a+x /scripts/ncports.sh
# /scripts/ncports.sh
192.168.0.100 80:ok
192.168.0.100 8081:ok
192.168.0.101 8082:ok
192.168.1.100 21:fail
三、端口不通时设置邮件告警:
1、 邮件告警:
(1) 先安装linux下面的邮件发送程序mutt
(2) 如果上面的接收邮箱设置为移动139邮箱,并开启接收邮件短信告知,即可实现“短信告警”的功能。
(3) 端口不通时发送邮件
# vim /scripts/ncports.sh
#!/bin/bash #检测服务器端口是否开放,成功会返回0值,打不开会返回1值 cat /scripts/ip-ports.txt | while read line do nc -w 10 -z $line > /dev/null 2>&1 if [ $? -eq 0 ] then echo $line:ok else echo $line:fail echo "服务器 $line 端口不通,请尽快处理!" | mutt -s "【机房监控】服务器$line端口不通" [email protected] fi done
2、加入任务计划每2分钟执行一次
# crontab -e
*/2 * * * * /scripts/ncports.sh > /dev/null 2>&1
# service crond restart
vim /root/network-check.sh
#!/bin/bash # Date # 2014.03.13 # Author fengxxxx # Function 实时检查系统的网络流量的大小 function networkdownup(){ local nic=$1 R1=`cat /sys/class/net/$nic/statistics/rx_bytes` T1=`cat /sys/class/net/$nic/statistics/tx_bytes` sleep 1 R2=`cat /sys/class/net/$nic/statistics/rx_bytes` T2=`cat /sys/class/net/$nic/statistics/tx_bytes` TBPS=`expr $T2 - $T1` RBPS=`expr $R2 - $R1` TKBPS=`expr $TBPS / 1024` RKBPS=`expr $RBPS / 1024` echo "上传速率 $nic: $TKBPS kb/s 下载速率 $nic: $RKBPS kb/s at $(date +%Y%m%d%H:%M:%S)" } # run : 指定运行的检测次数,如果输入的次数为空,测默认检测10次 function run(){ #num count default value = 10 num=${1:-10} ; local nic=$2 ; while [ $num -gt 0 ] do networkdownup $nic; num="$((num-1))" done } #检测一下字符是否是数学 # 如是是,就返回1 ;如是不是,就返回0 # use echo to pass retval function checkInt(){ local foo=$1 if [[ $foo != *[!0-9]* ]]; then # echo "'$foo' is strictly numeric" echo 1 else #echo "'$foo' has a non-digit somewhere in it" echo 0 fi } ### use return to pass retval function checkInt2(){ local foo=$1 if [[ $foo != *[!0-9]* ]]; then # echo "'$foo' is strictly numeric" return 1 else #echo "'$foo' has a non-digit somewhere in it" return 0 fi } ####################### shell exec ##################### # method 1 #retval=$(checkInt $1) # method 2 time=${1:-10} checkInt2 $time retval=$? if [ $retval -eq 0 ] ;then echo -e "检测的时间为数字(s),比如: sh network.sh [seconds] [nic] \ndefalut is sh network.sh 10 eth0 " exit 1 fi nic=${2:-"eth0"} falg_nic=0 ### check the nic is exist ?? for var in `ls /sys/class/net/ -F | grep "@"` do [ "$nic" == "${var%@}" ] && nic="${var%@}" && falg_nic=1 done if [ $falg_nic -eq 1 ];then run $time $nic else echo "Sorry ,$nic don't exist ." fi
#chmod +x /root/network-check.sh
#/root/network-check.sh 5 eth0
上传速率 eth0: 0 kb/s 下载速率 eth0: 0 kb/s at 2014052818:11:48 上传速率 eth0: 0 kb/s 下载速率 eth0: 0 kb/s at 2014052818:11:49 上传速率 eth0: 0 kb/s 下载速率 eth0: 0 kb/s at 2014052818:11:50 上传速率 eth0: 0 kb/s 下载速率 eth0: 0 kb/s at 2014052818:11:51 上传速率 eth0: 0 kb/s 下载速率 eth0: 0 kb/s at 2014052818:11:52
可以添加到计划任务中
crontab -e
*
/30
* * * *
/root/network-check
.sh >
/dev/null
2>&1
start crond start
系统初始化脚本
#!/bin/bash # author: gm100861 # mail: [email protected] # blog: http://www.gm100861.com # date: 2013-06-25 if [ $(id -u) != 0 ];then echo "Must be root can do this." exit 9 fi # set privileges chmod 600 /etc/passwd chmod 600 /etc/shadow chmod 600 /etc/group chmod 600 /etc/gshadow echo "Set important files privileges sucessfully" # yum repo add cat > /etc/yum.repos.d/thrid-repository.repo <<EOF [epel] name=Extra Packages for Enterprise Linux 6 - $basearch baseurl=http://epel.mirror.ucloud.cn/epel/6/$basearch failovermethod=priority enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 [remi] name=Les RPM de remi pour Enterprise Linux $releasever - $basearch baseurl=http://remi.mirror.ucloud.cn enabled=0 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi [rpmforge] name = RHEL - RPMforge.net - dag baseurl = http://rpmforge.mirror.ucloud.cn/redhat/el6/en/$basearch/rpmforge enabled = 1 protect = 0 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag gpgcheck = 0 [rpmforge-extras] name = RHEL - RPMforge.net - extras baseurl = http://rpmforge.mirror.ucloud.cn/redhat/el6/en/$basearch/extras enabled = 1 protect = 0 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag gpgcheck = 0 EOF yum clean all &>/dev/null yum makecache &>/dev/null echo "add thired repository sucessfully" # Turn off unnecessary services service=($(ls /etc/init.d/)) for i in ${service[@]}; do case $i in sshd|network|syslog|iptables|crond) chkconfig $i on;; *) chkconfig $i off;; esac done #set ulimit cat >> /etc/security/limits.conf << EOF * soft nofile 65535 * hard nofile 65535 EOF # set sysctl cat > /etc/sysctl.conf << EOF net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmmax = 68719476736 kernel.shmall = 4294967296 net.ipv4.tcp_max_tw_buckets = 6000 net.ipv4.tcp_sack = 1 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_rmem = 4096 87380 4194304 net.ipv4.tcp_wmem = 4096 16384 4194304 net.core.wmem_default = 8388608 net.core.rmem_default = 8388608 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.core.netdev_max_backlog = 262144 net.core.somaxconn = 262144 net.ipv4.tcp_max_orphans = 3276800 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 262144 net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_synack_retries = 1 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_mem = 94500000 915000000 927000000 net.ipv4.tcp_fin_timeout = 1 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.ip_local_port_range = 1024 65535 vm.swappiness = 0 EOF echo "0 0 * * * /usr/sbin/ntpdate cn.pool.ntp.org &>/dev/null" >>/var/spool/cron/root # set iptables iptables -F iptables -X iptables -Z iptables -I INPUT -i lo -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT iptables -A INPUT -p icmp --icmp-type 0 -m limit --limit 3/second --limit-burst 5 -j ACCEPT iptables -A INPUT -p icmp --icmp-type 8 -m limit --limit 3/second --limit-burst 5 -j ACCEPT iptables -A INPUT -p udp --sport 53 -j ACCEPT iptables -A INPUT -p tcp --sport 53 -j ACCEPT iptables -P INPUT DROP #iptables -P FORWARD DROP #iptables -P OUTPUT DROP /etc/init.d/iptables save echo "All things is init ok! "
一个防止暴力破解sshd的小脚本
#!/bin/bash #denyhost ip cat /var/log/secure|egrep -i -o "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" | sort |uniq -c |sort -n > /root/dropip ORIGIN="150" cat /root/dropip | while read LINE do host=`echo $LINE|awk '{print $2}'` num=`echo $LINE |awk '{print $1}'` if [ $num -gt $ORIGIN ];then grep $host /etc/hosts.deny &> /dev/null if [ $? -gt 0 ];then echo "ALL:$host" >> /etc/hosts.deny fi fi done
linux系统服务rsync启动脚本
http://alanwake.blog.51cto.com/6881848/1421188
http://jishuweiwang.blog.51cto.com/6977090/1421184
参考:http://navyaijm.blog.51cto.com/4647068/1334671
现如今服务器的CPU越来越强劲,RPS起初是谷歌为了发挥多CPU系统下网卡***能而给Linux打的补丁。RPS在系统层给网卡模块更多队列,更有效发挥网卡和CPU的协作能力。如今新版Kernel已默认采用了。
在定位LVS调度均衡***问题时,最终确定是 persistence_timeout 参数会使用IP哈希。目的是为了保证长连接,即一定时间内访问到的是同一台机器。但一般内部系统,由于出口IP相对单一,所以总会被哈希到相同的RealServer。
CentOS 6.1就开始支持RPS了
简单来讲,RPS就是让网卡使用多核CPU的。传统方法就是网卡多队列(RSS,需要硬件和驱动支持),RPS则是在系统层实现了分发和均衡。献上修改设置的脚本一例:
1、Broadcom的网卡建议关闭GRO功能
ethtool -K eth0 gro off ethtool -K eth1 gro off
2、关闭irqbalance服务并手动分配网卡中断
service irqbalance stop chkconfig irqbalance off # 查看网卡中断号 grep ethx /proc/interrupts $ grep em1 /proc/interrupts 72: 62922 0 0 0 IR-PCI-MSI-edge em1-0 73: 12024 0 0 0 IR-PCI-MSI-edge em1-1 74: 2470 0 0 0 IR-PCI-MSI-edge em1-2 75: 99071 0 0 0 IR-PCI-MSI-edge em1-3 76: 1350 0 0 0 IR-PCI-MSI-edge em1-4 $ grep em2 /proc/interrupts 77: 8 0 0 0 IR-PCI-MSI-edge em2-0 78: 52607 0 0 0 IR-PCI-MSI-edge em2-1 79: 2471 0 0 0 IR-PCI-MSI-edge em2-2 80: 440 0 0 0 IR-PCI-MSI-edge em2-3 81: 670 0 0 0 IR-PCI-MSI-edge em2-4 # 分配到每颗颗CPU核上 cat /proc/irq/{72,73,74,75,76,77,78,79,80,81}/smp_affinity PS:smp_affinity的值可以用下面脚本算 #!/bin/bash # echo "统计cpu的16进制" [ $# -ne 1 ] && echo ‘$1 is Cpu core number’ && exit 1 CCN=$1 echo “Print eth0 affinity” for((i=0; i<${CCN}; i++)) do echo ============================== echo "Cpu Core $i is affinity" ((affinity=(1<<i))) echo "obase=16;${affinity}" | bc done 使用方法:sh 脚本名字 空格 cpu核数 ###例如我的cpu是4核心的,统计出下面情况。 sh smp-affinity.sh 4 统计cpu的16进制 “Print eth0 affinity” ============================== Cpu Core 0 is affinity 1 ============================== Cpu Core 1 is affinity 2 ============================== Cpu Core 2 is affinity 4 ============================== Cpu Core 3 is affinity 8 echo 1 > /proc/irq/72/smp_affinity echo 2 > /proc/irq/73/smp_affinity echo 4 > /proc/irq/74/smp_affinity echo 8 > /proc/irq/75/smp_affinity echo 10 > /proc/irq/76/smp_affinity echo 20 > /proc/irq/77/smp_affinity echo 40 > /proc/irq/78/smp_affinity echo 80 > /proc/irq/79/smp_affinity echo 100 > /proc/irq/80/smp_affinity echo 200 > /proc/irq/81/smp_affinity
3、开启网卡的RPS功能 (Linux内核2.6.38或以上版本支持)
#!/bin/bash # Enable RPS (Receive Packet Steering) rfc=4096 cc=$(grep -c processor /proc/cpuinfo) rsfe=$(echo $cc*$rfc | bc) sysctl -w net.core.rps_sock_flow_entries=$rsfe for fileRps in $(ls /sys/class/net/eth*/queues/rx-*/rps_cpus) do echo fff > $fileRps done for fileRfc in $(ls /sys/class/net/eth*/queues/rx-*/rps_flow_cnt) do echo $rfc > $fileRfc done tail /sys/class/net/eth*/queues/rx-*/{rps_cpus,rps_flow_cnt}
补充一些知识:
Linux运维常见系统服务介绍:http://www.tiejiang.org/996.html
irabalance服务主要是可以合理调配使用各个CPU核心,把压力分配到各个CPU核心上面,提升***能,降低能耗。它自动收集系统数据分析使用模式,将工作状态置于performance mode和power-save mode二种模式。
一般精简操作系统没有安装irabalance服务,
安装和开启irbalance
yum -y install irqbalance service irqbalance start chkconfig irqbalance on mpstat -P ALL 1 10观察前后实际CPU使用运行情况
检查操作系统***诵懈鞲錾璞�IPO是不是启用了IRQBALANCE,通过下面命令可以看到
cat /proc/interrupts CPU0 CPU1 CPU2 CPU3 0: 133 0 0 0 IR-IO-APIC-edge timer 3: 1 0 0 0 IR-IO-APIC-edge 4: 1 0 0 0 IR-IO-APIC-edge 8: 1 0 0 0 IR-IO-APIC-edge rtc0 9: 0 0 0 0 IR-IO-APIC-fasteoi acpi 10: 248 0 0 0 IR-IO-APIC-edge ipmi_si 22: 3574 0 0 0 IR-IO-APIC-fasteoi ehci_hcd:usb2 23: 66835 0 0 0 IR-IO-APIC-fasteoi ehci_hcd:usb1 56: 0 0 0 0 DMAR_MSI-edge dmar0 57: 496 0 0 0 IR-HPET_MSI-edge hpet2 58: 0 0 0 0 IR-HPET_MSI-edge hpet3 59: 0 0 0 0 IR-HPET_MSI-edge hpet4 60: 0 0 0 0 IR-HPET_MSI-edge hpet5 70: 126234 0 0 0 IR-PCI-MSI-edge megasas 71: 1043467 0 0 0 IR-PCI-MSI-edge ahci 72: 62249 0 0 0 IR-PCI-MSI-edge em1-0 73: 11391 0 0 0 IR-PCI-MSI-edge em1-1 74: 2443 0 0 0 IR-PCI-MSI-edge em1-2 75: 98906 0 0 0 IR-PCI-MSI-edge em1-3 76: 1323 0 0 0 IR-PCI-MSI-edge em1-4 77: 8 0 0 0 IR-PCI-MSI-edge em2-0 78: 51597 0 0 0 IR-PCI-MSI-edge em2-1 79: 2423 0 0 0 IR-PCI-MSI-edge em2-2 80: 430 0 0 0 IR-PCI-MSI-edge em2-3 81: 658 0 0 0 IR-PCI-MSI-edge em2-4
从上面输出内容可以看出,网卡1(em0)和网卡2(em1)的IO并没有工作在负载均衡调度模式下面,所
有数据传输到cpu的第一个核里面去了,其它核处于空闲状态.
在实际工作中,公司不会将root用户直接给员工使用,而是通过员工自己的账号临时获得系统的root权限。
1.我现在测试的环境是:centos6.4-x64
2.创建两个普通用户,分别为kongzhong,xcg ;并设置密码
3.赋予root权限,有三种方式,如下:
在修改时,我们发现此文件只读,所以,我们需要在root用户下,将权限改成可修改的权限,修改完后,记得将权限改为原来的440
[root@rhel1 ~]# cd /etc/ [root@rhel1 etc]# ll sudoers -r--r-----. 1 root root 4002 Mar 2 2012 sudoers [root@rhel1 etc]# chmod 755 sudoers [root@rhel1 etc]# ll sudoers -rwxr-xr-x. 1 root root 4002 Mar 2 2012 sudoers [root@rhel1 etc]# chmod 440 sudoers # 此步,在修改好/etc/sudoers里面的内容后,将权限还原
(1).方法一:修改 /etc/sudoers 文件,找到下面一行,在root下面添加两行,如下所示:
[root@rhel1 ~]# vim /etc/sudoers root ALL=(ALL) ALL xcg ALL=(ALL) ALL # 这个在切换时,是需要输入密码的,密码是当前普通用户的密码 kongzhong ALL=(ALL) NOPASSWD:ALL # 这个在切换时,不需要输入密码 修改完毕,用xcg,kongzhong帐号登录, 然后,执行sudo 命令,即可执行相应的命令; 或者 执行sudo su ,临时切换到root用户下,获取root权限。
(2).方法二:修改 /etc/sudoers 文件,去除下面这一行的注释,然后修改普通用户默认组为wheel
[root@rhel1 ~]# vim /etc/sudoers %wheel ALL=(ALL) ALL 然后,修改普通用户,使其属于wheel 组,命令如下: [root@rhel1 etc]# usermod -g wheel kongzhong1 修改完毕,用kongzhong1帐号登录; 然后,执行 sudo 命令,即可执行相应的命令; 或者 执行sudo su ,临时切换到root用户下,获取root权限
(3).方法三:修改 /etc/passwd 文件,找到如下行,把用户ID修改为 0 ,如下所示:
[root@rhel1 ~]# vim /etc/passwd kongzhong2:x:504:504:kongzhong2:/home/kongzhong2:/bin/bash 修改后如下 kongzhong2:x:0:500:kongzhong2:/home/kongzhong2:/bin/bash 保存,用kongzhong2账户登录后,直接获取的就是root帐号的权限。
以上三种方法,建议使用 第一种,第三种强烈不建议使用,企业也不会去使用。