sudo配置文件/etc/sudoers概述

    sudo命令可以用来以另一个用户身份执行那个用户才能执行的命令,有时因为安全考虑,不得不对某些命令的执行范围进行强制限制。为了限制某个执行sudo命令的用户以其他用户的身份执行更多命令,我们可以通过直接编辑 /etc/sudoers 文件(或使用visudo命令间接编辑)来对命令的执行者进行约束。下面示例阐述了该过程(为了美观就把它假想成bash代码了):
# Define aliases for machines in CS & Physics departments.
Host_Alias CS = tigger, anchor, piper, moer, sigi
Host_Alias PHYSICS = eprince, pprince, icarus

# Define collections of commands.
Cmnd_Alias DUMP = /sbin/dump, /sbin/restore
Cmnd_Alias PRINTING = /usr/sbin/lpc, /usr/bin/lprm
Cmnd_Alias SHELLS = /bin/sh, /bin/tcsh, /bin/bash, /bin/ash, /bin/bsh

# Permissions.
mark,ed  PHYSICS = ALL
herb     CS = /usr/sbin/tcpdump: PHYSICS = (operator)DUMP
lynda    ALL = (ALL)ALL, !SHELLS
%wheel   ALL, !PHYSICS = NOPASSWD: PRINTING

    前5个非注释行定义了主机组和命令组的别名,以方便后面定义权限(Permissions部分)时使用。每一行权限说明包括的信息如下(sudo内建的命令 ALL 表示允许所有):
    * 该行所适用的用户。
    * 该行所适用的主机。
    * 可以以其身份执行命令的用户(置于小括号中,缺省时就表示 root)。
    * 指定用户可以运行的命令(最好写成绝对路径)。
    第一行权限说明适用于 PHYSICS 组机器上的用户 mark 和 ed ,并且可以执行所有命令,不过只能以 root 身份执行。
    第二行权限说明允许用户 herb 在 CS 组机器上以 root 身份运行 tcpdump 命令,还能在 PHYSICS 组机器上运行 DUMP 组命令,但是只能以 operator 用户的身份运行,此时用户 herb 输入的实际命令类似于下面:
    $ sudo -u operator /sbin/dump 0u /dev/hda2
    第三行说明用户 lynda 能以任意用户身份在任意机器上运行所有除 SHELL 组的命令,不过要注意的是,虽然不能直接执行 SHELL 组的命令,但是可以通过其他方式来间接执行,比如采用下面这种方式:
    $ cp -p /bin/bash  /tmp/bash
    $ sudo /tmp/bash
    一般来说,任何设定“除……以外的命令”的做法都注定要失败,这样写的目的只是为了避免用户不经意的使用。
    最后一行说明 wheel 组的用户能在除 PHYSICS 组的机器上运行 PRINTING 组命令,并且这些运行命令不需要任何口令(NOPASSWD)。

猜你喜欢

转载自aisxyz.iteye.com/blog/2377156