sudo提取及通配符使用

管理root借用权限(而不是命令)

当在/etc/sudoers中设置了普通用户命令的权限,普通用户可以通过sudo来将命令的权限提升至root等级(就是通过root用户,将权限分发给其他的用户);

vim /etc/sudoers 或者 visudo
100 root    ALL=(ALL)       ALL
101 men     ALL=(ALL)       /usr/bin/touch,/usr/bin/mkdir,/usr/bin/mv
root #用户名
ALL=(ALL) #用户登录进系统的白名单
ALL     #表示给用户什么功能(必须写,绝对路径)
#查看,我有哪些可以提权的功能命令,借用root的能力,临时提权;
sudo -l
#sudo提权,跟你的系统中的文件属性权限,没有半毛钱关系;他是借用root的命令使用;

一、通配符号

*   #前面字符出现0次或者0次以上
?   #匹配任意一个字符
[]  #匹配中括号中任意1个字符
{}  #
1,【*】前面字符出现0次,或者0次以上
ll ./*.sh
-rw-r--r-- 1 root    root    0 530 08:55 ./1.sh
-rw-r--r-- 1 root    root    0 530 08:55 ./2.sh
-rw-r--r-- 1 root    root    0 530 08:55 ./3.sh
2,【?】匹配任意1个字符
ls ?.sh
1.sh  2.sh  3.sh  4.sh  5.sh  6.sh  7.sh  8.sh  9.sh
3,【[]】匹配中括号中任意1个字符
ll
总用量 0
-rw-r--r-- 1 root root 0 530 09:33 a.txt
-rw-r--r-- 1 root root 0 530 09:33 b.txt
-rw-r--r-- 1 root root 0 530 09:33 c.txt
#中括号使用中,可以省略的写法,全是字母的[a-z],全是数字的[0-9]
ll ./[a-z]*
-rw-r--r-- 1 root root 0 530 09:34 ./aassdddfff.sh
-rw-r--r-- 1 root root 0 530 09:33 ./a.txt
-rw-r--r-- 1 root root 0 530 09:33 ./b.txt
-rw-r--r-- 1 root root 0 530 09:33 ./c.txt
#中括号取反
 ll ./[!a-z]*
 -rw-r--r-- 1 root root 0 530 09:36 ./1.txt
-rw-r--r-- 1 root root 0 530 09:36 ./2.txt
-rw-r--r-- 1 root root 0 530 09:36 ./3.txt
ll ./[ab]*
-rw-r--r-- 1 root root 0 530 09:34 ./aassdddfff.sh
-rw-r--r-- 1 root root 0 530 09:33 ./a.txt
-rw-r--r-- 1 root root 0 530 09:33 ./b.txt
4,【{}】生成序列信息
touch {1..10}
ls
1  10  2  3  4  5  6  7  8  9
 touch {01..10}
 ls
 01  02  03  04  05  06  07  08  09  1  10  2  3  4  5  6  7  8  9
touch 
ls
001  006  010  015  02   024  029  033  038  042  047  051  056  060  065  07   074  079  083  088  092  097  100  6
002  007  011  016  020  025  03   034  039  043  048  052  057  061  066  070  075  08   084  089  093  098  2    7
003  008  012  017  021  026  030  035  04   044  049  053  058  062  067  071  076  080  085  09   094  099  3    8
004  009  013  018  022  027  031  036  040  045  05   054  059  063  068  072  077  081  086  090  095  1    4    9
005  01   014  019  023  028  032  037  041  046  050  055  06   064  069  073  078  082  087  091  096  10   5
#大括号,可以控制查询,前面的字符出现的次数
 echo A{,c}
 Ab Ac
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0.bak
cp /etc/sysconfig/network-scripts/ifcfg-eth0{,.bak}
cp  被复制者  复制到目标
cp  被复制者{,.bak}
echo {001..100..5}
001 006 011 016 021 026 031 036 041 046 051 056 061 066 071 076 081 086 091 096
{起始值..终止值..步长}
echo {a..z..5}
a f k p u z
${}  #区别变量
boy=wa
echo "$boy"
wa
 echo "$oldboyhahahahahahaha"
  echo "${oldboy}hahahahahahaha"
  wahahahahahahaha
   echo "$oldboy 
   hahahahahahaha"
   wa hahahahahahaha

二、系统的特殊符号

1,【;】命令结束、两个命令之间的分割/隔符
echo "hahaha" ; echo "xixixi"
hahaha
xixixi
echo "hahaha"  echo "xixixi"
hahaha echo xixixi
#不管前面命令是否正确,后面的命令也继续执行;
echoo "hahaha" ; echo "xixixi"
-bash: echoo: 未找到命令
xixixi
##################################
在有些服务的配置文件当中,;也是注释的意思;
高可用服务keepalive,这个服务的配置文件当中,【;】就是注释的意思;
2,【#】
#注释内容,只能看,不执行
3,【|】将前面的命令结果,交给后面的命令操作
#过滤网卡信息
 ip a | grep "192.168.10."
    inet 192.168.10.24/24 brd 192.168.10.255 scope global dynamic ens33
#将找到的目录,移动到/opt下
#错误的;
 find ./ -type d -name "192.168" | mv -t /opt
mv: 缺少了文件操作数
Try 'mv --help' for more information.
find ./ -type d -name "10.1" |xargs  mv -t /opt/
4,【$】
1,调取变量
2,普通用户的提示符
#拓展:【$?】  #判断上一个命令执行的是够正确,0正确,非0错误
 echo "11111" >  /data/og.sh
 echo $?
 0
echo $?
127
5,引号和撬棍
 ""  #解析特殊符号和变量
 ''  #所见即所得,不解析特殊变量和符号
 ``  #限制性反引号里面的代码命令
 #######################################
#所见即所得,写什么就打印什么
echo '$boy'
$oldboy
#【\】撬棍,还原本意
echo "\$oldboy"
$oldboy
 cp `find ./  -name *.txt` /opt
6,重定向
#stdin  :标准输入重定向(代码:0)
<
<<
cat < 1.txt
#替换案例tr命令:分析替换原理
echo "1 2 3 4"|tr "1 " "4"
4424344
echo "123" | tr "1" "4"
423
#将空格替换成换行符
echo "1 2 3"
1 2 3
echo "1 2 3" | tr " " "\n"
1
2
3
 tr "\n" " " < 1.txt 
1 2 3 4 5
#stdout :标准输出重定向(代码:1)
>  #覆盖
>> #追加
[root@docker 1]# echo "111"
111
[root@docker 1]# echo "111" > 1.txt 
[root@docker 1]# cat 1.txt 
111
[root@docker 1]# echo "111" >> 1.txt 
[root@docker 1]# cat 1.txt 
111
111
[root@docker 1]# ls
1.txt
[root@docker 1]# cat > 1.txt 
[root@docker 1]# cat > 1.txt << EOF
> 111
> 222
> 333
> 444
> 555
> EOF
[root@docker 1]# cat 1.txt 
111
222
333
444
555
#stderr:标准错误输出重定向(代码:2)
1>   #标准正确覆盖输出
1>>  #标准正确追加输出
2>   #标准错误覆盖
2>>  #标准错误追加
&>   #正确错误全输出(覆盖)
&>>  #正确错误都输出(追加)
	2>&1>>  #没用
echo "hahaha" &>>3.txt
 ll
总用量 8
-rw-r--r-- 1 root root 20 7月   1 19:35 1.txt
-rw-r--r-- 1 root root  7 7月   1 19:40 3.txt
cat 3.txt 
hahaha
7,逻辑符号
#与  &&   #前面正确,才执行后面
#或  ||   #前面错误,才执行后面
#非  !   #取反
echo "haha" && echo "hehe"
haha
hehe
echo "haha" ||  echo "xixi"
haha
#!
find ./ -name "*.txt"
find ./ ! -name "*.txt"
#案例分析:与或的关系 [ -f /etc/hosts ] 判断文件是否存在的语句
[ -f /etc/hosts ] && echo "文件存在" || echo "文件不存在"
文件存在
 [ -f /etc/hostss ] && echo "文件存在" || echo "文件不存在"
 文件不存在
 

三、系统正则符号+grep

通配符:主要用于匹配文件的名称信息
正则符:主要配合三剑客,来过滤、匹配文件的内容

1、基础正则

^   #以什么开头
$	#以什么结尾
[]	#中括号中任意一个字符
[^] #中括号中内容取反
.  
*

2、准备环境

cat 1.txt 
I love linux study.
my qq is 666666

zhangsan1122
abc
abcabc
abcabcabc

·【^】以什么开头
#过滤出以I开头的行;
grep "^I" 1.txt 
I love linux study.
#grep 取反参数 -v
grep -v "^I" 1.txt 
my qq is 666666

zhangsan1122
abc
abcabc
abcabcabc
·【$】以什么结尾
grep "666$" 1.txt 
my qq is 666666
· 打印空行
grep -v "^$" 1.txt 
I love linux study.
my qq is 666666
zhangsan1122
abc
abcabc
abcabcabc
·【.】匹配任意1个,有且只有1个字符
 grep "^." 1.txt 
I love linux study.
my qq is 666666
zhangsan1122
abc
abcabc
abcabcabc
1
2
#撬棍,还原本意;
grep "^\." 1.txt 
grep "\.$" 1.txt 
I love linux study.
·【*】连续出现0次或者0次以上的字符
grep "b*" 1.txt 
I love linux study.
my qq is 666666

zhangsan1122
abc
abcabc
abcabcabc
1
2
【.*】案例
grep -o 查看匹配过程
grep ".*" 1.txt 
I love linux study.
my qq is 666666

zhangsan1122
abc
abcabc
abcabcabc
1
2
grep -o ".*" 1.txt 
I love linux study.
my qq is 666666
zhangsan1122
abc
abcabc
abcabcabc
1
2
·【[]】匹配中括号中任意1个字符
grep "[ab]" 1.txt 
zhangsan1122
abc
abcabc
abcabcabc
#中括号取反[^]
grep "[^ab]" 1.txt 
I love linux study.
my qq is 666666
zhangsan1122
abc
abcabc
abcabcabc
1
2

2,扩展正则

#grep如果想要识别扩展正则,需要:
grep -E
或者
egrep
###############################
+
[]+
?
|
()
a(n,m)
·【+】匹配前一个字符出现1次或者1次以上
grep -E "b+" 1.txt 
abc
abcabc
abcabcabc
egrep -E "b+" 1.txt 
abc
abcabc
abcabcabc
·【[]+】
 grep -E "[bc+]" 1.txt 
abc
abcabc
abcabcabc
·【?】匹配前一个字符出现0次或1次的情况
grep -E "b?" 1.txt 
I love linux study.
my qq is 666666

zhangsan1122
abc
abcabc
abcabcabc
1
2
grep -E -o "b?" 1.txt 
grep -E -o "b?" 1.txt 
b
b
b
b
b
b
·【|】或者
grep -E "my|i" 1.txt 
 grep -E "my|i" 1.txt 
I love linux study.
my qq is 666666
 grep -E "error|failed" /var/log/messages 
·【()】表示括号中是一个整体
grep -E "(my)|(lin)" 1.txt 
I love linux study.
my qq is 666666
· 【a{n,m}】前面一个字符a,连续最少出现n次,最多出现m次
grep -E "b{1,2}" 1.txt 
abc
abcabc
abcabcabc
grep -E -o "b{1,2}" 1.txt 
b
b
b
b
b
b

grep -E "b{1}" 1.txt 
abc
abcabc
abcabcabc


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当您遇到sudo 1.9.5p2的EMS(Enhanced Management Services)模式下被锁定的情况,通常意味着用户的sudo权限管理出现了问题。EMS是sudo的一个增强版本,旨在提供更高级别的安全管理。这里有几个可能的原因和解决步骤: 1. 锁定原因: - 错误登录尝试次数过多:sudo会限制连续失败的登录尝试次数,超过设定值后可能会锁定账户。 - sudo配置文件更改:可能是由于误操作或恶意行为,修改了/etc/sudoers文件导致了锁定。 - 时间限制:有些版本的sudo会在一段时间无活动后自动锁定,以防恶意会话。 2. 解锁方法: - 重启sudo:执行`sudo rm /var/log/auth.log`然后重新启动sudo服务,这可能会清除锁定记录。 - 重置密码或解锁:通过编辑sudoers文件使用visudosudo visudo),找到相关的锁定条目并根据提示进行解锁或重置密码。 - 修改配置:检查sudoers文件,确认锁定策略是否符合预期,如果设置过于严格,可能需要调整相应的配置参数。 3. 预防措施: - 定期更改密码:保持良好的安全习惯,定期更改sudo密码。 - 使用访问控制列表:限制特定用户或组对sudo使用。 - 监控日志:查看auth.log文件,找出锁定的具体原因。 如果你正在遇到这个问题,建议查看sudoers文件中的相关注释和错误消息,以及查看sudo的日志文件来确定问题的具体细节。如果有疑问,可以寻求IT管理员的帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值