`
desert3
  • 浏览: 2160734 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

linux 切换用户身份、su、sudo、/etc/sudoers

 
阅读更多
Linux系统中,有时候普通用户有些事情是不能做的,除非是root用户才能做到。这时就需要用su命令临时切换到root身份来做事了。

su:substitute['sʌbstɪtjuːt]代替 user
su 的语法为:
su [OPTION选项参数] [用户]
-, -l, --login 登录并改变到所切换的用户环境
-c, --commmand=COMMAND 执行一个命令,然后退出所切换到的用户环境;

用su命令切换用户后,可以用 exit 命令或快捷键[Ctrl+D]可返回原登录用户。

例子:
su 在不加任何参数,默认为切换到root用户,但没有转到root用户家目录下,也就是说这时虽然是切换为root用户了,但并没有改变root登录环境;用户默认的登录环境,可以在/etc/passwd 中查得到,包括家目录,SHELL定义等;
su 加参数 - ,表示默认切换到root用户,并且改变到root用户的环境;


用su是可以切换用户身份,如果每个普通用户都能切换到root身份,如果某个用户不小心泄漏了root的密码,那岂不是系统非常的不安全?没有错,为了改进这个问题,产生了sudo这个命令。使用sudo执行一个root才能执行的命令是可以办到的,但是需要输入密码,这个密码并不是root的密码而是用户自己的密码。默认只有root用户能使用sudo命令,普通用户想要使用sudo,是需要root预先设定的,即,使用visudo命令去编辑相关的配置文件/etc/sudoers。如果没有visudo这个命令,请使用 "yum install -y sudo" 安装。

默认root能够sudo是因为这个文件中有一行” root ALL=(ALL) ALL”

sudo 的适用条件:
由于su对切换到超级权限用户root后,权限的无限制性,所以su并不能担任多个管理员所管理的系统。如果用su来切换到超级用户来管理系统,也不能明 确哪些工作是由哪个管理员进行的操作。特别是对于服务器的管理有多人参与管理时,最好是针对每个管理员的技术特长和管理范围,并且有针对性的下放给权限, 并且约定其使用哪些工具来完成与其相关的工作,这时我们就有必要用到 sudo。
通过sudo,我们能把某些超级权限有针对性的下放,并且不需要普通用户知道root密码,所以sudo 相对于权限无限制性的su来说,还是比较安全的,所以sudo 也能被称为受限制的su ;另外sudo 是需要授权许可的,所以也被称为授权许可的su;
sudo 执行命令的流程:是当前用户切换到root(或其它指定切换到的用户),然后以root(或其它指定的切换到的用户)身份执行命令,执行完成后,直接退回到当前用户;而这些的前提是要通过sudo的配置文件/etc/sudoers来进行授权;

从编写 sudo 配置文件/etc/sudoers开始
sudo的配置文件是/etc/sudoers ,我们可以用他的专用编辑工具visodu ,此工具的好处是在添加规则不太准确时,保存退出时会提示给我们错误信息;配置好后,可以用切换到您授权的用户下,通过sudo -l 来查看哪些命令是可以执行或禁止的;
/etc/sudoers 文件中每行算一个规则,前面带有#号可以当作是说明的内容,并不执行;如果规则很长,一行列不下时,可以用\号来续行,这样看来一个规则也可以拥有多个行;
/etc/sudoers 的规则可分为两类;一类是别名定义,另一类是授权规则;别名定义并不是必须的,但授权规则是必须的;

sudo授权规则(sudoers配置):
授权用户 主机=命令动作
这三个要素缺一不可,但在动作之前也可以指定切换到特定用户下,在这里指定切换的用户要用( )号括起来,如果不需要密码直接运行命令的,应该加NOPASSWD:参数,但这些可以省略;举例说明;

sudoers的缺省配置:
############################################################# 
# sudoers file. 
# 
# This file MUST be edited with the 'visudo' command as root. 
# 
# See the sudoers man page for the details on how to write a sudoers file. 
# 
# Host alias specification 
# User alias specification 
# Cmnd alias specification 
# Defaults specification 
# User privilege specification 
root    ALL=(ALL) ALL 
# Uncomment to allow people in group wheel to run all commands 
# %wheel        ALL=(ALL)       ALL 
# Same thing without a password 
# %wheel        ALL=(ALL)       NOPASSWD: ALL 
# Samples 
# %users  ALL=/sbin/mount /cdrom,/sbin/umount /cdrom 
# %users  localhost=/sbin/shutdown -h now 
################################################################## 

1. 最简单的配置,让普通用户support具有root的所有权限
执行visudo之后,可以看见缺省只有一条配置:
root    ALL=(ALL) ALL
那么你就在下边再加一条配置:
support ALL=(ALL) ALL
这样,普通用户support就能够执行root权限的所有命令
以support用户登录之后,执行:
sudo su -
然后输入support用户自己的密码,就可以切换成root用户了
2. 让普通用户support只能在某几台服务器上,执行root能执行的某些命令
首先需要配置一些Alias,这样在下面配置权限时,会方便一些,不用写大段大段的配置。Alias主要分成4种
Host_Alias
Cmnd_Alias
User_Alias
Runas_Alias
1) 配置Host_Alias:就是主机的列表
Host_Alias      HOST_FLAG = hostname1, hostname2, hostname3
2) 配置Cmnd_Alias:就是允许执行的命令的列表,命令前加上!表示不能执行此命令.
命令一定要使用绝对路径,避免其他目录的同名命令被执行,造成安全隐患 ,因此使用的时候也是使用绝对路径!
Cmnd_Alias      COMMAND_FLAG = command1, command2, command3 ,!command4
3) 配置User_Alias:就是具有sudo权限的用户的列表
User_Alias USER_FLAG = user1, user2, user3
4) 配置Runas_Alias:就是用户以什么身份执行(例如root,或者oracle)的列表
Runas_Alias RUNAS_FLAG = operator1, operator2, operator3
5) 配置权限
配置权限的格式如下:
USER_FLAG HOST_FLAG=(RUNAS_FLAG) COMMAND_FLAG
如果不需要密码验证的话,则按照这样的格式来配置
USER_FLAG HOST_FLAG=(RUNAS_FLAG) NOPASSWD: COMMAND_FLAG
配置示例:
############################################################################ 
# sudoers file. 
# 
# This file MUST be edited with the 'visudo' command as root. 
# 
# See the sudoers man page for the details on how to write a sudoers file. 
# 
# Host alias specification 
Host_Alias      EPG = 192.168.1.1, 192.168.1.2 
# User alias specification 
# Cmnd alias specification 
Cmnd_Alias      SQUID = /opt/vtbin/squid_refresh, !/sbin/service, /bin/rm

Cmnd_Alias      ADMPW = /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd, !/usr/bin/passwd root 
# Defaults specification 
# User privilege specification 
root    ALL=(ALL) ALL 
support EPG=(ALL) NOPASSWD: SQUID 
support EPG=(ALL) NOPASSWD: ADMPW
# Uncomment to allow people in group wheel to run all commands 
# %wheel        ALL=(ALL)       ALL 
# Same thing without a password 
# %wheel        ALL=(ALL)       NOPASSWD: ALL 
# Samples 
# %users  ALL=/sbin/mount /cdrom,/sbin/umount /cdrom 
# %users  localhost=/sbin/shutdown -h now 
###############################################################

参考:su sudo sudoers
分享到:
评论

相关推荐

    redhat以root身份运行命令.docx

    SU 命令是Linux系统中的一种命令,用于切换用户身份。SU 命令可以将当前用户身份切换到 Root 用户或其他用户。SU 命令的基本语法为:su [-] [username]。 * SU 命令的作用: + 切换用户身份 + 获得 Root 权限 * ...

    030101配置用户使用sudo无需密码

    三、/etc/sudoers文件解释 [root@test ~]# cat /etc/sudoers ## Sudoers allows particular users to run various commands as ## the root user, without needing the root password. ##该文件允许特定用户像root...

    Linux用户配置sudo权限(visudo)的方法

    要使用`visudo`配置`sudo`权限,首先需要以root身份登录或使用`su`或`sudo -i`切换到root用户。然后,运行`visudo`命令,这将打开`/etc/sudoers`文件进行编辑。在这个文件中,可以添加或修改规则来指定哪些用户或...

    普通用户不能su切换到其它用户提示killed,或者无法登录系统

    3. **su命令失败**:使用su命令切换用户时,如果收到“Cannot set process environment”、“killed”或“Authentication is denied”的错误,检查用户权限、环境变量设置和认证机制。确保su命令的执行权限正确,并...

    sudo提权和普通用户免密切换到root详细笔记

    总结一下,`sudo` 提权和普通用户免密切换到root是通过编辑`/etc/sudoers`文件实现的,这包括为用户添加相应的权限行,如`shi ALL=(ALL) NOPASSWD: ALL`。在使用这种权限时,应考虑到安全性,只授予必要的权限,并...

    Su以及Sudo文件下载

    在Linux系统中,`su` 和 `sudo` 是两个非常重要的命令行工具,它们与系统的权限管理和用户身份切换紧密相关。这两个工具对于系统的管理和维护至关重要,尤其在Kali Linux这样的渗透测试和安全研究环境中更是不可或缺...

    Linux禁止普通用户su至root的解决-禁止普通用户su到root,简洁可靠

    `su`是"switch user"的缩写,它允许用户切换到其他用户身份,包括root。通过输入`su -`或者`sudo -i`,普通用户可以获取root权限进行系统管理。然而,这种机制也带来了安全隐患,因为一旦普通用户的账户被攻击者控制...

    作业5 Su和sudo用户设置 实践任务.docx

    首先,`su`命令用于切换用户身份,特别是从普通用户切换到root用户,root用户具有系统最高权限,可以执行任何操作。在任务中,你需要先用`su`命令切换到root,然后创建新用户。例如,创建名为ztg、ztg1和ztguang的三...

    Linux中应用su和sudo.pdf

    `su`命令,全称“switch user”,允许用户切换到另一个用户的身份,特别是切换到具有最高权限的`root`用户。默认情况下,任何知道`root`用户密码的用户都可以执行`su - root`切换到`root`。然而,为了提高系统的安全...

    Linux系统常用的2种切换用户命令

    在Linux系统中,有两种主要的命令用于...`su`主要用于完全切换用户身份,而`sudo`则允许临时提升权限执行特定命令,同时提供了更细粒度的安全控制。了解和熟练使用这两个命令对于Linux系统的日常管理和维护至关重要。

    Linux给普通用户加超级用户权限的方法

    问题假设用户名为:ali如果用户名没有超级用户权限,当输入 sudo + 命令 时, 系统提示: 代码如下:ali is not in the sudoers file. This incident will be reported.解决1. 进入超级用户模式。即输入”su”,系统...

    Linux基础课件用户身份切换su命令共11页.pdf.z

    总结来说,`su`命令是Linux系统中用于切换用户身份的重要工具,它涉及到权限管理、系统安全和日常维护等多个方面。理解并熟练掌握`su`命令的使用,对于提升Linux操作技能和系统管理能力具有很大的帮助。这个11页的...

    面试:说说Linux 命令 su 和 sudo 的区别?.zip

    `su`命令,全称为“switch user”,它的主要功能是切换到另一个用户的身份。当你运行`su`命令后,你需要提供目标用户的密码,一旦密码验证成功,你就会获得该用户的shell环境。例如,要切换到root用户,你可以输入`...

    Linux中sudo和su之间的差别1

    su(switch user)命令允许用户从当前登录的身份切换到另一个用户身份。它主要适用于需要临时获取其他用户权限的情况,尤其是当需要以root权限执行某些操作时。 - **基本用法:** `su [选项] [用户]` - 不带任何...

    linux su命令参数及用法详解-linux切换用户命令.docx

    因此,建议大家切换用户的时候,尽量使用 su - linux,否则可能发现某些命令执行不了。 扩展阅读二:su 和 sudo 的区别 由于 su 对切换到超级权限用户 root 后,权限的无限制性,所以 su 并不能担任多个管理员所...

    4-8su命令与sudo服务.pdf

    在Linux中,我们可以使用`su`命令来切换用户身份,使得当前用户在不退出登录的情况下,顺畅地切换到其他用户。 su命令 `su`命令可以解决切换用户身份的需求,使得当前用户在不退出登录的情况下,顺畅地切换到其他...

    linux系统使用sudo命令报xxx is not in the sudoers file.This incident will be reported.的解决方法.pdf

    在Linux系统中,`sudo`命令是一个非常重要的工具,它允许非特权用户以管理员或root权限执行特定的命令。当你尝试使用`sudo`时遇到"xxx is not in the sudoers file. This incident will be reported."的错误信息,这...

    su和sudo的区别

    `sudo`的主要特点是,它通常配置在`/etc/sudoers`文件中,管理员可以定义哪些用户可以执行哪些特定命令。使用`sudo`时,用户通常需要输入自己的密码,而不是root的密码。此外,`sudo`还提供了日志记录功能,便于跟踪...

    操作系统安全:su及sudo权限配置及控制.pptx

    首先,su命令是切换用户身份的工具,允许用户从一个账户切换到另一个账户,尤其是从普通用户切换到root用户。例如,当普通用户test试图执行需要管理员权限的任务,如`useradd`,su可以帮助他们临时获得root权限。su...

    su和sudo的区别与使用

    在Linux和Unix-like操作系统中,`...`su`提供了直接切换用户并获得其全部权限的能力,而`sudo`则提供了一种更安全、更可控的方式来临时提升权限。根据具体需求和环境,选择合适的命令是确保系统安全和有效管理的关键。

Global site tag (gtag.js) - Google Analytics