让渡用户权限

在不少状况下, 在多人共管主机, 某些用户请求执行某些须要 root 权限的
命令或者干脆就是你忙不过来的时候,你就得让其余人得到 root 权限了。但将
系统的 root 密码告诉不少人显然不是一个好的选择,这每每成为悲剧事件的开
端。那么咱们该如何作呢, sudo 命令给咱们提供了一个不须要 root 密码也能执
行 root 权限命令的途径。
sudo 命令容许规定的用户可以以在许可范围内以其余用户身份执行规定的
命令。因此, 经过 sudo 命令系统管理员能够分配给普通用户一些合理的“权利”,
让他们执行一些只有 root 或其余特许用户才能完成的任务,好比:运行一些像
mount, halt, shutdown 之类的命令,或者编辑一些系统配置文件,像/etc/mtab,
/etc/samba/smb.conf 等。这样以来,就不只减小了 root 用户的登录次数和管
理时间,也提升了系统安全性。 sudo 命令有如下特色:
 sudo 命令可以限制指定用户在指定主机上运行某些命令。
 sudo 命令能够提供日志,忠实地记录每一个用户使用 sudo 命令作了些什么,
而且能将日志传到中心主机或者日志服务器。
 sudo 命令为系统管理员提供配置文件,容许系统管理员集中地管理用户的
使用权限和使用的主机。它默认的存放位置是/etc/sudoers。
 sudo 命令使用时间戳文件来完成相似“检票”的系统。当用户执行 sudo 命令
而且输入密码后,用户得到了一张默认存活期为 5 分钟的“入场券”(默认值
能够在编译的时候改变)。超时之后,用户必须从新输入密码。
A) 修改/etc/sudoers 文件
一开始系统默认仅有 root 能够执行 sudo 命令,咱们须要经过修改
/etc/sudoers 文件来让别的用户也可以执行 sudo 命令。
用 vi /etc/sudoers 打开/etc/sudoers 文件,在没有改动的状况下文件大约
有 100 多行,在其中找到一行,以下所示:
……
## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## Syntax:
##
## user MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root ALL=(ALL) ALL #找到这一行
# 用户 可登陆的主机=(可切换的用户身份列表) 可以使用的命令列表
# 表示 root 用户能够在任何地方(远程终端)登陆,而且以任意用户身份执行任何命令
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING,
PROCESSES, LOCATE, DRIVERS
……
咱们将在这行以后添加一行:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL #找到这一行
intern01 ALL=(ALL) ALL #添加这行
#表示 intern01 用户能够在任何地方(远程终端)登陆,以任意用户身份执行任何命令
咱们试着用 intern01 经过 sudo 来执行一个 passwd 命令来修改 intern02 的
密码:
[root@localhost ~]# su - intern01
[intern01@localhost ~]$ sudo –u root passwd intern02
#以 root 身份执行 passwd 命令,能够省略 –u 选项,命令是默认转换为 root 身份的
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
#系统给出了一些警示信息
[sudo] password for intern01: #提供 intern01 密码便可,无需提供 root 密码
更改用户 intern02 的密码 。
新的 密码:
从新输入新的 密码:
passwd: 全部的身份验证令牌已经成功更新。
事实上, 这样就给了 intern01 几乎等同于 root 的权限,除非你彻底信任
intern01,不然建议你不要这么作,你能够指定 intern01 可以执行的命令:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL #找到这一行
intern01 localhost=(root) /sbin/shutdown -h -5
#表示 intern01 用户能够在本地登陆,以 root 用户身份执行/sbin/shutdown -5 now 这个命
令,命令得以绝对路径的方式指定
这样一个一个用户指定太过麻烦,也能够按用户组指定:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL #找到这一行
%group_p 192.168.56.130=(root) /sbin/shutdown -h -5
#表示从属于 group_p 用户组的 用户能够在 192.168.56.130 主机上登陆,以 root 用户身
份执行/sbin/shutdown -5 now 这个命令
事实上,咱们甚至能够免除用户输入本身密码的步骤:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL #找到这一行
%group_p 192.168.56.130=(root) NOPASSWD:/sbin/shutdown -h -5
#表示从属于 group_p 用户组的 用户能够在 192.168.56.130 主机上登陆,以 root 用户身
份执行/sbin/shutdown -5 now 这个命令,而且无需输入用户密码安全

注意
 虽说若是 sudo 命令容许规定的用户可以以在许可范围内以其余用
户身份执行规定的命令,可是它最常仍是用在让普通用户可以以 root
身份执行一些命令;
 sudo 命令不带-u 选项,默认为切换到 root 用户身份,也即 “sudo
fdisk ” 等价于“su –u root fdisk”

相关文章
相关标签/搜索