一、前言

sudo 是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等, 这样不仅减少了root用户的登陆和管理时间,同样也提高了安全性,sudo不是对shell的代替,它是面向每一个命令的。sudo是可以让某个用户不需要拥有管理员的账号密码,可以执行管理员的权限的。

二、su与sudo的区别

su命令就是转换用户的工具,假如当前用户没有userdel权限,而只有root有此权限,这时你就可以使用利用su切换到root用户(你要知道root密码才可以),操作完成后再切换回来。还有如果有多个用户都要涉及root运行程序,那么就要将root密码告诉多个人,那么,这么多人当中就可以通过root权限能够做任何事,这在一定程度上就对系统的安全造成了威协。所以说su只适用于一两个人参与管理的系统,毕竟su并不能让普通用户受限的使用;终极用户root密码应该掌控在少数用户手中,这绝对是真理!su并不能做到对权限的下放,也不能做到约定其它用户使用哪些命令来完成与其相关的工作;这样也就有了suo,通过sudo,我们能把某些终极权限有针对性的下放,并且无需普通用户知道root密码,所以sudo 相对于权限无限制性的su来说,还是比较安全的,所以sudo 也能被称为受限制的su ;另外sudo 是需要授权许可的,所以也被称为授权许可的su;

二、sudo 授权工具

把有限的管理操作授权某普通用户,并且还能限定其仅能够在某些主机上执行此类命令,操作过程还会被记录于日志中,以便于日后审计,作为管理员可以指派某些用户可以执行某些特定的命令,类似于suid(仅在执行所用的权限上类似)

三、特点

sudo能够限制用户只在某台主机上运行某些命令
sudo提供了丰富的日志,详细地记录了每个用户干了什么,它能够将日志传到中心主机或日志服务器

sudo使用时间戳文件来执行类似的“检票”的系统,当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票(这个值可以在编译的时候改变)

四、配置文件

Sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机,它所存放的位置默认是在/etc/sudoers,属性为0440.

注:可以使用vim /etc/sudoers编辑配置文件,也可以使用visudo(建议使用visudo)

1、命令参数

命令 参数 说明
sudo[klv] -b 在后台执行指令
-h 显示帮助
-H 将HOME环境变量设为新身份的HOME环境变量
-k 结束密码的有效期限,也就是下次再执行sudo时便需要输入密码
-l 列出当前用户可执行的命令与不可执行的命令
-p 改变询问密码的提示符
-s 执行指定的shell
-u 以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份。
-v 延长密码有效期限5分钟

-V 显示版本信息

2、配置文件说明

⑴、语法

who which_host=(whom)  command

who:授权的用户(也可以使用 User_Alias定义一个或一组用户)

which_host:对于那些主机(也可以使用Host_Alias定义一个或一组主机)

whom:以谁的身份(也可以使用Runas_Alias定义一个或一组用户)

command:定义的命令(也可以使用Cmd_Alias来定义一个或一组命令)

其语义就是说,授权那一个用户在那一个主机上以什么样的身分执行那些命令。

注:关于更多别名的用法请visudo自行查看

⑵、标签

NOPASSWD:如果在命令别名前加上NOPASSWD则表示这一组命令都不需要不密码。

PASSWD:如果在命令别名前加上PASSWD则表示这一组命令在执行前都会提示输入密码

⑶、别名类别注解

注:

定义的别名必须要使用大写字母

%表示本地系统组

!表示取反(不允许执行)

如,不允许你对某一用户执行某一个命令

Cmnd_Alias USERADMIN = /usr/sbin/useradd,/usr/sbin/usermod,/usr/sbin/userdel,/usr/bin/passwd, !/usr/bin/passwd (root)

别名类别 User Aliases
样例 User_Alias ADMINS = jsmith, mikem
注解 以ADMINS为别名(大写)包含了两个用,jsmith与mikem

别名类别 Host Aliases
样例

Host_Alias SPARC = bigtime,eclipse,moet,anchor

Host_Alias CUNETS = 192.168.0.0/255.255.255.0

Host_Alias CURNETS =  172.16.0.0/16
注解 将主机分类,这些都是可以随便分,目的是为了更好的管理,可以使用主机名,也可使用ip/mask或ip/cidr

别名类别 Runas Aliases
样例 Runas_Alias SYSTEM = root,oracle
注解 在这里可以定义一组用户

别名类别 Command Aliases
样例 Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
注解 定义命令是命令的路径,命令一定要使用绝对路径,避免其它目录的同名命令被执行,造成安全隐患,因此使用的时候也是使用绝对路径引用

五、实例

授权tom,hdoop用户能够以管理员的身份基于sudo执行useradd、passwd、usermod、userdel命令;后面三个命令在执行时需要输入密码,而前一个不需要。

编辑sudo配置文件

$sudo visudo

User_Alias USERADMIN=tom,hdoop
Host_Alias LOCAL=127.0.0.1,bogon
Runas_Alias SYSTEM=root
Cmnd_Alias USERADD=/usr/sbin/useradd
Cmnd_Alias USERMOD=/usr/bin/passwd,/usr/sbin/userdel,/usr/sbin/usermod
USERADMIN LOCAL=(SYSTEM) NOPASSWD:USERADD
USERADMIN LOCAL=(SYSTEM) PASSWD:USERMOD

前提:

tom,hdoop必须事先存在,保存后,使用su - hdoop

linux系统之sudo用法_第1张图片


=====================完====================