博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
让渡用户权限
阅读量:6216 次
发布时间:2019-06-21

本文共 3149 字,大约阅读时间需要 10 分钟。

hot3.png

在很多情况下, 在多人共管主机, 某些用户请求执行某些需要 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 ~]# su - intern01
[intern01 ~]$ 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”

160731_kIxk_3127489.png160731_hdIZ_3127489.png160731_rQqA_3127489.png160731_FW55_3127489.png

转载于:https://my.oschina.net/u/3127489/blog/1624229

你可能感兴趣的文章
如何申请开通微信多客服功能
查看>>
Sr_C++_Engineer_(LBS_Engine@Global Map Dept.)
查看>>
非监督学习算法:异常检测
查看>>
App开发中甲乙方冲突会闹出啥后果?H5 APP 开发可以改变现状吗
查看>>
jquery的checkbox,radio,select等方法总结
查看>>
Linux coredump
查看>>
Ubuntu 10.04安装水晶(Mercury)无线网卡驱动
查看>>
Myeclipes快捷键
查看>>
癌细胞最偏爱10个字,你却每天都在喂养“它”!
查看>>
我的友情链接
查看>>
ToRPC:一个双向RPC的Python实现
查看>>
Vim脚本 - 竖线'|' 和反斜线'\'
查看>>
netty框架的学习笔记 + 一个netty实现websocket通信案例
查看>>
磁盘超过2T无法用fdisk分区的问题
查看>>
我的友情链接
查看>>
nginx在reload时候报错invalid PID number
查看>>
神经网络和深度学习-第二周神经网络基础-第二节:Logistic回归
查看>>
Myeclipse代码提示及如何设置自动提示
查看>>
RMQ 问题及解决算法
查看>>
零碎知识点
查看>>