您的位置:首页 > 其它

SUDO的有关知识总结

2015-06-04 11:47 405 查看

超级用户的权利

root用户有在linux执行任何命令的权利,是超级管理员。在真实的环境中,一般不要以root的身份登录主机,因为root可以执行任何命令,可能带来误操作,就有可能带来意想不到的失误。所以一般管理员都是通过一个普通用户登录,然后在su或sudo去执行相关的命令。这样的好处是,防止误操作,管理员不需要太多的权限就可以执行相应的命令,同时有命令日志可以记录执行命令的情况。

下面说明sudo用户的相关知识:

sudo:普通用户以root用户的身份执行本身不能执行的命令

sudo的配置文件:/etc/sudoers,在这个配置文件里规定了谁可以运行sudo,运行时是否需要密码,可以sudo运行哪些命令

编辑配置文件用:visudo命令,visudo命令会检查是否有他人在修改这个文件,并在修改之后可以检查sudoer的语法。

配置文件说明:
别名;必须全部而且只能使用大写英文字母结合。别名的定义用于被引用,相当于一个变量

who(谁,执行命令者) which_host(在哪些主机上)=(runas)[作为谁执行命令] command(要执行的命令)

可以通过别名(将特定的用户或允许执行的命令放在一起)进行表示,有利于日后的操作与修改
who: User_Alias(用户别名)
which_host: Host_Alias(主机别名)
runas: Runas_Alias(runas别名)
command: Cmnd_Alias(命令别名,一般要指定完整的命令路径)

别名使用语法:
Alias_Type NAME = item1, item2, ... ##定义别名类型

Alias_Type NAME = item1, item2, item3 :NAME = item4, item5 ##定义一个name

User_Alias:
用户名:username
组名:使用%号引导,%group
已经定义了的User_Alias别名

Host_Alias:
主机名
IP地址
网络地址
其他主机别名(已经定义的别名列表)

runas_Alias:
用户名:username
组名:使用%号引导,%group
已经定义了的runas_Alias别名

Cmnd_Alias:
命令
已经定义了的命令别名
实例:
User_Alias ADMINS = jsmith, mikem

Host_Alias     FILESERVERS = fs1, fs2
Host_Alias     MAILSERVERS = smtp, smtp2

Cmnd_Alias SOFTWARE = /bin/rpm,/usr/bin/up2date, /usr/bin/yum

ADMINS   FILESERVERS=SOFTWARE#ADMINS用户可以在FILESERVERS主机上运行的命令在SOFTWARE中

## Command Aliases
## These are groups of related commands...

命令别名实例:

## Installation and management of software
#Cmnd_Alias SOFTWARE = /bin/rpm,/usr/bin/up2date, /usr/bin/yum

## Services
#Cmnd_Alias SERVICES = /sbin/service,/sbin/chkconfig

## Updating the locate database
#Cmnd_Alias LOCATE = /usr/bin/updatedb

## Storage
#Cmnd_Alias STORAGE = /sbin/fdisk,/sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount

## Delegating permissions
#Cmnd_Alias DELEGATING = /usr/sbin/visudo,/bin/chown, /bin/chmod, /bin/chgrp

## Processes
#Cmnd_Alias PROCESSES = /bin/nice,/bin/kill, /usr/bin/kill, /usr/bin/killall

## Drivers
#Cmnd_Alias DRIVERS = /sbin/modprobe

##root用户拥有所有权限
## Allow root to run any commands anywhere
root   ALL=(ALL)       ALL

##允许wheel组中的所有成员执行所有命令的权限
## Allows people in group wheel to run allcommands
# %wheel        ALL=(ALL)       ALL
##允许wheel组中的所有成员执行所有命令时可以不输入密码,NOPASSWD:ALL(命令)
## Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL

## Allows members of the users group tomount and unmount the
## cdrom as root
# %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom


##允许指定的用户进行关机
## Allows members of the users group toshutdown this system
# %users localhost=/sbin/shutdown -h now

实例:允许xcroom用户进行用户添加和修改
xcroom ALL=(root) /usr/sbin/useradd,/usr/sbin/usermod

[wencheng@xc ~]$ sudo /usr/sbin/useradd tom
[sudo] password for wencheng:
[wencheng@xc ~]$ tail -1 /etc/passwd
tom:x:5002:5002::/home/tom:/bin/bash

[wencheng@xc ~]$ sudo /usr/sbin/usermod -scsh tom
[wencheng@xc ~]$ tail -1 /etc/passwd
tom:x:5002:5002::/home/tom:csh
sudo的相关选项:
sudo -l:列出当前用户可以使用的sudo类命令,sudo -l xcroom
(root)/usr/sbin/useradd, (root) /usr/sbin/usermod
sudo -k:让认证信息失效,重新验证

指定shell运行
[xcroom@xc ~]$ sudo /usr/sbin/usermod -sbash tom
[sudo] password for wencheng:
允许xcroom用户可以不输入密码运行/usr/sbin/useradd命令,运行/usr/bin/usermod需要密码才能运行
xcroom ALL=(root) NOPASSWD: /usr/sbin/useradd, PASSWD:/usr/sbin/usermod

在command前使用TAG:标签 TAG: COMMAND

User_Alias USERADMIN = xcroom,%xcroom
Cmnd_AliasUSERCMND=/usr/sbin/useradd,/usr/sbin/userdel,/usr/sbin/usermod,/usr/bin/passwd[A-Za-z]*,! /usr/bin/passwd root

USERADMIN ALL=(root) NOPASSWD: USERCMND

最后附上Linux系统管理技术手册上的一张配置图:


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息