linux系统管理之sudo实操一

Sudo

/etc/sudoers授权文件

Sudoers语法格式:

Who------where=(whom)......command

# ls /etc/sudoers -l
# lsattr /etc/sudoers

[root@localhost ~]# useradd zhangsan
[root@localhost ~]# passwd zhangsan

更改用户 zhangsan 的密码 。

新的 密码:

重新输入新的 密码:

passwd: 所有的身份验证令牌已经成功更新。

场景一:希望让zhangsan用户在sudo里面代替root用户使用useradd命令;

可使用专门编辑sudoers文件的命令visudo

#visudo

Sudo授权用户:

#sudo -l
#sudo COMMAND
[zhangsan@localhost ~]$ whoami
[zhangsan@localhost ~]$ sudo -l
[zhangsan@localhost ~]$ useradd han
[zhangsan@localhost ~]$ sudo /usr/sbin/useradd lisi
[zhangsan@localhost ~]$ tail -1 /etc/passwd


[zhangsan@localhost ~]$ useradd hanadd han
[zhangsan@localhost ~]$ sudo /usr/sbin/useradd lisi
[zhangsan@localhost ~]$ tail -1 /etc/passwd
[zhangsan@localhost ~]$ ls /var/log/secure -l

[zhangsan@localhost ~]$ sudo /usr/sbin/useradd wangwu
[sudo] password for zhangsan:
[zhangsan@localhost ~]$ tail -1 /etc/passwd
wangwu:x:502:502::/home/wangwu:/bin/bash

[root@localhost ~]# tail /var/log/secure

Sudo默认为用户保留五分钟成功登陆后的状态,前提是之前执行的命令是成功的

[zhangsan@localhost ~]$ sudo -k
[zhangsan@localhost ~]$ sudo /usr/sbin/useradd maliu

[sudo] password for zhangsan:

[zhangsan@localhost ~]$ tail -1 /etc/passwd

maliu:x:503:503::/home/maliu:/bin/bash

sudosers常用选项:
-k结束密码的有效期限,也就是在下次再执行sudo时,需要输入密码;
-l列出目前用户可执行与无法执行的指令;
-p改变询问密码的提示符号;
-s执行指定的shell;
-u<用户> 以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;
-v延长密码有效期限五分钟;
-V显示版本信息;
-S从标准输入流替代终端来获取密码;

场景之二:期望某一组的用户都可以执行useradd命令;

1)添加用户组administrations

[root@localhost ~]# groupadd admins
[root@localhost ~]# useradd test1
[root@localhost ~]# useradd test2

useradd:警告:此主目录已经存在。

不从 skel 目录里向其中复制任何文件。

正在创建信箱文件: 文件已存在

[root@localhost ~]# userdel -r test2
[root@localhost ~]# useradd test2
[root@localhost ~]# usermod -a -G admins test1
[root@localhost ~]# usermod -a -G admins test2


使用test1账户登录查看效果

[test1@localhost ~]$ sudo -l


[test1@localhost ~]$ sudo /usr/sbin/useradd zhaomin

使用root身份查看日志信息:

[root@localhost ~]# tail /var/log/secure

小结:看来,test1test2这两个用户都没有相关的权限哦!

解决方法:编辑sudoers,添加如下文件

[root@localhost ~]# vim /etc/sudoers

114 %admins         172.16.17.0/24=(root)   /usr/sbin/useradd

[test1@localhost ~]$ whoami
[test1@localhost ~]$ sudo -l
[test1@localhost ~]$ sudo /usr/sbin/useradd test3
[test1@localhost ~]$ tail -1 /etc/passwd

小结:%groupname:对组中所有用户进行sudo授权

Sudo别名机制的应用

Sudoers文件支持使用别名,对同类对象进行分组;此组指的是sudoers自己内建的逻辑组,且组名必须使用全大写字符

Host_Alias哪个主机?

User_Alias哪些用户给?

Runas_Alias在哪个主机上以谁的身份?

Cmnd_Alias执行什么命令?

简化定义结构:

定义命令别名:

在客户端执行如下命令

[test1@localhost ~]$ sudo -k

执行sudo-l查看列出test可以执行的命令

[test1@localhost~]$sudo -l

删除用户试试看:

[test1@localhost ~]$ sudo /usr/sbin/useradd test5
[test1@localhost ~]$ sudo /usr/sbin/userdel -r test5

小结:通过别名的机制让用户所能够执行的命令进行分组

那么,可以使用自己创建的组吗?不使用系统默认组,新建admin希望admin也能使用上述命令;但是不希望把admin加到admins组里面;该如何操作呢?

可以定义用户别名:

[root@localhost ~]# useradd han1
[root@localhost ~]# useradd han2
[root@localhost ~]# passwd han1
[root@localhost ~]# passwd han2
[root@localhost ~]# useradd admin

[root@localhost ~]# passwd admin

[test1@localhost ~]$ su - han1

[han1@localhost ~]$ sudo -l

定义主机别名:


你可能感兴趣的:(linux,sudo)