超级用户的权利
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系统管理技术手册上的一张配置图: