sudo授权的配置以及bash编程之数组和关联数组。

        sudo按我的理解来看是一个提权命令,当普通用户需要执行系统管理员的命令的时候,就需要使用sudo来提权了,当然这个权限也是要系统管理员事先下发的。

        下面让我们一起来看看如何配置sudo吧:

sudo的配置文件在/etc/sudoers

可以先用chmod命令给予管理员修改权限,再用vim进行编辑,也可以直接用visudo命令直接编辑。

例1、我们给tuchao用户授予useradd,userdel,groupadd,groupdel权限。

# visudo

加入以下一行即可。

wKioL1OCtLHBw4xnAAISM-M3NRw823.jpg

# sudo -l    用于查看,用户可执行的特权命令。

刚刚授权的命令显示了吧。

wKioL1OCtV_worGkAALfGQOfN-I791.jpg

如果这时要给一组用户授权多个命令怎么办,那不是要写很多行?其实不用,配置文件可以支持alias功能的,可以把多个用户加到一个组里,配置的时候用%groupname表示,或者把多个用户加到一个alias里,当然命令也支持alias,可以把多个命令写到一个alias里。

例2、给openstack,tyz,admin,ldapuser,用户下发useradd,userdel,usermod,iptables执行权限。

我们这里创建了,SUPERUSER,SPECIALCOMMOND这两个别名实现的。

wKiom1OCy9ySpyLnAAJadjwT8kg606.jpg

用openstack用户做下测试,给防火墙添加一条规则怎么样?

$ sudo -l

$ sudo iptables -t filter -A INPUT -d 192.168.10.198 -p tcp --dport 443 -j REJECT

$ sudo iptables -L

规则加上去了吧,这样普通用户也可以管理防火墙了,当然这是实验,工作环境这样做很不安全。

wKiom1OCznvTOg3EAARGTef3gYs343.jpg

接下来,看看bash编程数组:

        数组其实就是一段连续的内存空间,用下标来引用每个内存空间中的值。

declare -a    声明一个数组;

declare -A    声明一个关联数组;

例、写一个脚本,把12个月份的单词保存至Month数组中,每一次执行随机给出一个月份。

wKioL1OC3D3A0MQNAADhhnw4n5w952.jpg

 

关联数组下标可以使用字符串:

# declare -A Month

# Month=([one]="january" [two]="february" [three]='March')

# echo ${Month[one]}

wKioL1OC6frxTFv2AADjKrkafdg970.jpg

 

本篇完

有问题欢迎与我交流QQ1183710107

你可能感兴趣的:(bash,sudo,bash数组)