Linux系统中切换用户身份su与sudo的用法与实例
日常操作中为了避免一些误操作,更加安全地管理系统,通常使用的用户身份都为普通用户,而非root。当需要执行一些管理员命令操作时,再切换成root用户身份去执行。
普通用户切换到root用户的方式有:su和sudo。
1,su -
(su为switch user,即切换用户的简写)
格式:su -l USERNAME(-l为login,即登陆的简写)
-l可以将l省略掉,所以此命令常写为su - USERNAME
如果不指定USERNAME(用户名),默认即为root,所以切换到root的身份的命令即为:su -root或是直接 su -
实例1:普通用户user1知道root账户登录密码,要求用户user1在不注销登录的前提下查看/etc/shadow文件。
如下图,试图查看文件/etc/shadow时,提示拒绝访问,此时使用su - 命令切换成root身份后,即可正常查看。

之后,通过命令exit或logout,或者是快捷键Cry+D即可返回原用户身份。
2:su - 与su
通过su切换用户还可以直接使用命令su USERNAME,与su - USERNAME的不同之处如下:
su - USERNAME切换用户后,同时切换到新用户的工作环境中
su USERNAME切换用户后,不改变原用户的工作目录,及其他环境变量目录
如下图,显示两个命令的执行结果:

3,sudo
使用su切换用户时需知晓对应用户的登陆密码,即若切换成root用户身份,需知道root用户的登陆密码。作为root用户管理员,如何授权其他普通用户,在不需要知晓root密码的情况下,执行root权限的命令操作?此时即可使用sudo。
sudo是一种权限管理机制,依赖于/etc/sudoers,其定义了授权给哪个用户可以以管理员的身份能够执行什么样的管理命令;
格式:sudo -u USERNAME COMMAND
当普通用户通过sudo以root用户执行命令时,sudo后面的 -uUSERNAME可省略,即sudo COMMAND 即意为sudo以root用户执行
默认情况下,系统只有root用户可以执行sudo命令。需要root用户通过使用visudo命令编辑sudo的配置文件/etc/sudoers,才可以授权其他普通用户执行sudo命令。
如下图,假如使用普通用户帐号user4通过sudo以root用户身份执行命令tail /etc/shadow时,即被提示:user4未被定义在sudoers文件中,无法执行此命令。

|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
sudo命令语法:sudo [-bhHpV][-s ][-u <用户>][指令]或 sudo [-klv]参数:-b 在后台执行指令。-h 显示帮助。-H 将HOME环境变量设为新身份的HOME环境变量。-k 结束密码的有效期限,也就是下次再执行sudo时便需要输入密码。-l 列出目前用户可执行与无法执行的指令。-p 改变询问密码的提示符号。-s 执行指定的shell。-u <用户> 以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份。-v 延长密码有效期限5分钟。-V 显示版本信息。-S 从标准输入流替代终端来获取密码 |
4,sudoers
sudo的配置文件为:/etc/sudoers。
sudoers文件中允许指定用户在不需要知道root用户的登陆密码的情况下,可以以root用户身份运行各种命令。此文件必须使用visudo命令编辑配置。(visudo命令可以提供basic sanitychecks和check for parse errors,即提供快速的正确性有效性检查,以及语法检查功能)
查看sudores文件,其中有一行如下图,定义了允许root用户从任何主机登陆,使用sudo可以切换成任何用户的身份,执行所有命令。

查看sudoers文件,其中有两行如下图,定义了组可以使用sudo命令的配置。

实例2:设置普通用户user4,使其可以使用sudo命令以root用户身份修改其他所有用户登录密码,但不能修改root用户登陆密码
未被授权前,user4使用sudo以root用户修改user1的密码时,提示user4未被定义在sudoers文件中,无法执行,并且此事件将被报告给。如下图:

执行visudo命令,编辑sudoers文件,添加一行:用户帐号为user4;可以从任何主机登陆,执行三条命令(以root身份执行passwd命令后面不加用户名时,即代表修改root用户本身的密码,此即为第一条命令的作用),如下图,即可实现user4可以修改除root用户之外的其他所有用户的登录密码。

之后,user4通过sudo以root用户身份即可成功修改user1的密码(而不需要知道root的密码,只需要输入自己的密码即可),同时无法修改root的密码,如下图:

实例3:设置组Administrators内所有成员都可以通过sudo以root用户身份执行所有命令,且不需要验证本身的账户密码。
通过visudo命令编辑sudoers文件,添加如下一行,即完成配置。

之后,成员一user1,即可通过sudo以root用户执行所有命令,且不需要验证本身账户密码。如下图:

附:man文档中su和sudo的解释:
su - run a shell with substitute user andgroup IDs
以替代的用户运行shell。(即su之后,在当前shell上的用户身份已转变)
sudo - excute a command as another user.
sudo allows a permitted user to execute acommand as the superuser or another user, as specified by security policy.
以其他用户身份执行命令。sudo依照安全策略中指定,允许授权用户以超级用户或是其他用户身份执行命令。(即sudo,只是临时以其他用户身份执行命令,并不会切换身份)
su -c
当然,su也可以在不切换用户身份的情况下,临时以其他用户执行命令。
通过选项-c,即可使用root身份临时执行命令,如下图:

/bin/su -
同时,也可以通过配置sudoers文件,授权其他普通用户,可以切换成其他用户身份去执行命令,而不必每次都加上sudo。如下图,只需在sudoers文件中定义普通用户user4

之后,用户user4只需执行一次sudo su - 即可切换成root身份了

另外也可以进入 /etc/sudoers.d/ 编辑里面的文件,进行分文件管理
如 vi dongjj
%dong ALL=(ALL) NOPASSWD: /bin/su data_user
%dong ALL=(ALL) NOPASSWD: /bin/su - data_user
注:实例环境为Vmware Workstation 9、CentOS 6.4
原文出自:http://zebralinux.blog.51cto.com/8627088/1369301
还可以参考 http://blog.csdn.net/babyfish13/article/details/51219784
Linux系统中切换用户身份su与sudo的用法与实例的更多相关文章
- 切换用户身份su与sudo
普通用户切换到root用户的方式有:su和sudo. 1,su - (su为switch user,即切换用户的简写) 格式:su -l USERNAME(-l为login,即登陆的简写) -l可以将 ...
- linux系统(centos)下su和sudo命令的区别
linux系统(centos)下su和sudo命令的区别 区别 我们在日常使用过程中,这2个命令很多时候能达到相同的效果,对细节区别十分模糊,这里进行简单的解释和区分.希望大家能够正确使用这2个命令, ...
- linux中切换用户方式su和su -的区别
Using su The su command allows users to open a terminal window, and from that terminal start a sub ...
- Linux 下以其他用户身份运行程序—— su、sudo、runuser
本文综合分析了Linux系统下,如何使用runuser命令.su命令和sudo命令以其他用户身份来运行程序,以及这三个命令的运行效率比较. 一.su 命令临时切换用户身份 SU:( Switch ...
- (转)linux 系统下虚拟用户的作用
原文:http://blog.csdn.net/luoshao20120430/article/details/16900653 http://blog.csdn.net/u01 ...
- Linux 系统中用户切换(su user与 su - user 的区别)
1. Linux系统中用户切换的命令为su,语法为: su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]] 参 ...
- Linux 系统中用户切换
1. Linux系统中用户切换的命令为su,语法为: su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]] 参 ...
- linux系统中用户切换
1. Linux系统中用户切换的命令为su,语法为: su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]] 参 ...
- 用户管理 之 Linux 系统中的超级权限的控制
在Linux操作系统中,root的权限是最高的,也被称为超级权限的拥有者.普通用户无法执行的操作,root用户都能完成,所以也被称之为超级管理用户. 在系统中,每个文件.目录和进程,都归属于某一个用户 ...
随机推荐
- 远程登录 dos命令
1.桌面连接命令 mstsc /v: 192.168.1.250 /console 2.若需要远程启动所有Internet服务,可以使用iisreset命令来实现. 进入“命令提示符”窗口.在提示符后 ...
- .NET,ASP.NET,ASP.NET MVC 之间的区别
https://www.cnblogs.com/wwym/p/5555772.html
- Python Web学习笔记之socket编程
Python 提供了两个基本的 socket 模块. 第一个是 Socket,它提供了标准的 BSD Sockets API. 第二个是 SocketServer, 它提供了服务器中心类,可以简化网络 ...
- Android 拖动条 和 Handle
- 20145306 逆向与Bof基础
逆向与Bof基础 实践 一 直接修改机器指令,改变程序执行流程 本次实践的对象是一个名为pwn1的linux可执行文件. 显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShell,会返 ...
- 20145315《网络对抗》——注入shellcode以及 Return-to-libc攻击实验
shellcode 准备一段Shellcode 我用的老师的shellcode:\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3 ...
- 使用CSP防止XSS攻击
转载自阮一峰博客:http://www.ruanyifeng.com/blog/2016/09/csp.html 跨域脚本攻击 XSS 是最常见.危害最大的网页安全漏洞. 为了防止它们,要采取很多编程 ...
- goole机器学习视频链接【学习笔记】
作者:庄泽彬 说明:在youtu上观看的google的机器学习相关的视频,如何fangqiang请自己解决 机器学习简介:https://www.youtube.com/watch?time_cont ...
- luogu4473 BZOJ2143 2011[国家集训队]飞飞侠
题目戳这里 有问题可以在博客@ 应该还会有人来看吧,嘻嘻 正题: 题目大意: 题目很清楚,就是一个点有一定的范围,会有一定的花费 求三个点中的任意两个点到另一个点的最小花费 (麻麻教育我千万读好题目( ...
- 导出数据库表为world文档说明,以及PowerDesigner导出表结构pdm设计文档
如何使用“mysql导出数据库结构为world工具”以及如何使用powerdesigner映射数据库模型 一.通过powerdesigner配置ojdbc 1.安装并打开powerdesigner,新 ...