管理员账户授权

为普通用户分配特权

使用 sudo 命令可以允许普通用户执行管理员账户才能执行的命令。

sudo 命令允许已经在 /etc/sudoers 文件中指定的用户运行管理员账户命令。例如,一个已经获得许可的普通用户可以运行如下命令:

sudo /usr/sbin/useradd newuserl

实际上,sudo 的配置完全可以指定某个已经列入 /etc/sudoers 文件的普通用户可以做什么,不可以做什么。

/etc/sudoers 的配置行如下所示。

  • 空行或注释行(以#字符打头):无具体功能的行。

  • 可选的主机别名行:用来创建主机列表的简称。必须以 Host_Alias 关键词开头,列表中的主机必须用逗号隔开,如:

    Host_Alias  linux=ted1,ted2
    

    其中 ted1 和 ted2 是两个主机名,可使用 linux(别名)称呼它们。

  • 可选的用户别名行:用来创建用户列表的简称。用户别名行必须以 User_Alias 关键词开头,列表中的用户名必须以逗号隔开。其格式同主机别名行。

  • 可选的命令别名行:用来创建命令列表的简称。必须以 Cmnd_Alias 开头,列表中的命令必须用逗号隔开。

  • 可选的运行方式别名行:用来创建用户列表的简称。不同的是,使用这样的别名可以告诉 sudo 程序以列表中某一用户的身份来行程序。

  • 必要的用户访问说明行。

    用户访问的说明语法如下:

    user host = [ run as user ] command list
    

    在 user 处指定一个真正的用户名或定义过的别名,host 也可以是一个真正的主机名或者定义过的主机别名。默认情况下,sudo 执行的所有命令都是以 root 身份执行。如果您想使用其他身份可以指定。command list 可以是以逗号分隔的命令列表,也可以是一个已经定义过的别名,如:

    ted1   ted2=/sbin/shutdown
    

    这一句说明 ted1 可以在 ted2 主机上运行关机命令。

    newuser1 ted1=(root) /usr/sbin/useradd,/usr/sbin/userdel
    

    这一句说明 ted1 主机上的 newuser1 具有以 root 用户权限执行 useradd,userdel 命令的功能。

    说明:

    - 可以在一行定义多个别名,中间用冒号 (:) 隔开。

    - 可在命令或命令别名之前加上感叹号 (!),使该命令或命令别名无效。

    - 有两个关键词:ALL 和 NOPASSWD。ALL 意味着“所有”(所有文件、所有主机或所有命令),NOPASSWD 意味着不用密码。

    - 通过修改用户访问,将普通用户的访问权限修改为同 root 一样,则可以给普通用户分配特权。

下面是一个 sudoers 文件的例子:

#sudoers files
#User alias specification
User_Alias ADMIN=ted1:POWERUSER=globus,ted2
#user privilege specification
ADMIN ALL=ALL
POWERUSER ALL=ALL,!/bin/su

其中:

  • User_Alias ADMIN=ted1:POWERUSER=globus, ted2

    定义了两个别名 ADMIN 和 POWERUSER

  • ADMIN ALL=ALL

    说明在所有主机上,ADMIN 用户都可以以 root 身份执行所有命令

  • POWERUSER ALL=ALL,!/bin/su

    给 POWERUSER 用户除了运行 su 命令外等同 ADMIN 的权限

results matching ""

    No results matching ""