(转)Linux: su sudo sudoer

http://zebralinux.blog.51cto.com/8627088/1369301

日常操作中为了避免一些误操作,更加安全的管理系统,通常使用的用户身份都为普通用户,而非root。当需要执行一些管理员命令操作时,再切换成root用户身份去执行。

普通用户切换到root用户的方式有:su和sudo。

1su -

(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即可返回原用户身份。

2su - su

通过su切换用户还可以直接使用命令su USERNAME,与su - USERNAME的不同之处如下:

su - USERNAME切换用户后,同时切换到新用户的工作环境中

su USERNAME切换用户后,不改变原用户的工作目录,及其他环境变量目录

如下图,显示两个命令的执行结果:

3sudo

使用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   从标准输入流替代终端来获取密码

4sudoers

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文档中susudo的解释:

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身份了

注:实例环境为Vmware Workstation 9、CentOS 6.4

 

时间: 2024-08-05 00:20:07

(转)Linux: su sudo sudoer的相关文章

linux su,sudo命令

linux su 命令 建议大家切换用户的时候 使用 su - root 这样,否则可能发现某些命令执行不了 关于su .su - 及 sudo的区别 请往下看 1.命令作用 su的作用是变更为其它使用者的身份,超级用户除外,需要键入该使用者的密码. 2.使用方式 su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]] 3.参数说明 -f , –fast:不必读启动文件(如 csh.cshrc 等),仅用于c

Linux su sudo(切换用户)

命令su 语法 : su [-] username 后面可以跟 '-' 也可以不跟,普通用户su不加username时就是切换到root用户,当然root用户同样可以su到普通用户. '-' 这个字符的作用是,加上后会初始化当前用户的各种环境变量,关于环境变量这部分内容阿铭放在后面的章节中讲解. 下面阿铭做个简单的实验来说明加与不加 '-' 的区别: [[email protected] ~]$ pwd /home/test [[email protected] ~]$ su 密码: [[ema

linux su sudo命令详解

#su [OPTION] USERNAME 切换用户 [OPTION] - 变更当前的工作环境PWD 空 默认切换为root用户 默认情况下使用su只是将PAHT和用户切换为USERNAME的,并不变更PWD.使用-则和用USERNAME登陆在实质上是一样的. #sudo [OPTION] COMMAND 某用户在不切换用户的情况下以另一个用户的权限通过某个主机执行某个命令. [OPTION] -l 列出当前用户可以使用的所有sudo类命令. -k 清除认证,下次使用需输入密码.默认第一次输入密

《linux下sudo服务的使用》RHEL6

/bin/ 下放的二进制文件命令都是普通用户可以使用的 Sbin 下放的二进制文件命令都是超级用户root可以使用的   普通用户也想使用Sbin下的文件可以通过sudo来实现: 默认普通用户是不可以使用的: 提示:没有足够大的权限   配置单个用户对某个命令或服务具有使用权 系统默认速冻软件包已经安装可以查看下: 执行 [[email protected] ~]# visudo来生成sudo配置文件.   在文件中添加: 注:赋予redhat用户在本地用户可以使用chkconfig命令,可以写

Linux之sudo

Linux之sudo 一.sudo简介 sudo是unix/linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的权力,让他们执行一些只有超级用户或其他特许用户才能完成的任务,比如:运行一些像restart,reboot,passwd之类的命令,或者编辑一些系统配置文件,这样不仅减少了用户登录次数和管理时间,也提高了系统安全性. sudo的特点:限制用户只在某台主机上运行某些命令.详细地记录了每个用户干了什么,能够将日志传到中心主机或者日志服务器.管理员提供配置文件,允许

su&sudo

su - run a shell with substitute user and group IDs su -l USERNAME su命令和su - 命令有本质的区别,前者只是切换了root身份,但shell仍然是普通用户的shell:而后者连同用户和shell环境都切换成root了.只有切换了shell环境才不会导致环境变量引用错误. sudo: sudo这个命令设计初的主要目的是为了使某些用户具有特定的权限,从而完成其他普通用户无法实现的功能. 1.授权指定用户在指定主机上运行指定的管理

su ,sudo,TCP_Wrappers的相关命令用法及PAM认证机构

su,sudo,TCP_Wrappers的相关命令用法及PAM认证机构 su 切换身份:su –l  username –c  'command' sudo 来自sudo包 man 5 sudoers sudo能够授权指定用户在指定主机上运行某些命令.如果 未授权用户尝试使用 sudo,会提示联系管理员 sudo可以提供日志,记录每个用户使用sudo操作 sudo为系统管理员提供配置文件,允许系统管理员集中地 管理用户的使用权限和使用的主机 sudo使用时间戳文件来完成类似"检票"的系

② su;su -;sudo;sudo -i;sudo su;sudo su - 之间的区别

今天我们来聊聊su;su -;sudo;sudo -i;sudo su;sudo su -他们之间的区别. su :su 在不加任何参数,默认为切换到root用户,但没有转到root用户家目录下,也就是说这时虽然是切换为root用户了,但并没有改变工作目录和环境变量: su 加参数 -(-实际上是–login的缩写,等同于su --login) ,表示默认切换到root用户,并且改变到root用户的环境: 虽然su命令是非常方便的用户切换工具,但是切换时都需要使用root这个无所不能的超级用户密

文件ACL&amp;su&amp;sudo

一.ACL(文件的访问控制列表)普通.特殊.隐藏权限都是针对某一类用户(个人.组.other),ACL个别对待(类似于"绿卡"的功能)setfacl设置getfacl查看二.su&sudosu 切换用户sudo 把特定的命令执行权限给指定用户:作用:保证普通用户可以完成特殊任务,避免root密码泄漏配置文件(/etc/sudoers)提供集中的用户管理.权限.主机参数等谁可以用(用户) :允许使用的主机=(ALL):可以执行的命令列表(绝对路径) 原文地址:https://bl