Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >统信服务器操作系统 [su sudo 用户权限控制]

统信服务器操作系统 [su sudo 用户权限控制]

作者头像
Kevin song
发布于 2024-05-20 06:46:22
发布于 2024-05-20 06:46:22
77500
代码可运行
举报
运行总次数:0
代码可运行

sudo和su之间的区别

  • su用于用户之间的切换
  • sudo用于普通用户可以使用root权限来执行命令

su命令是当前用户用来切换到另外一个用户的命令,参数为用户名。执行时会要求输入密码,这个密码是你要切换到的用户的密码。

sudo 表示 “superuser do”。它允许已验证的用户以其他用户的身份来运行命令。其他用户可以是普通用户或者超级用户。然而,绝大部分时候我们用它来以提升的权限来运行命令。

sudo命令工作流程

  1. sudo会读取和解析/etc/sudoers文件,查找调用的用户及权限
  2. 提示调用该命令用户的密码,如果有NOPASSWD标志则跳过密码验证.
  3. sudo会创建一个子进程,调用setuid来切换到目标用户
  4. 最后在子进程中执行给定的shell命令

sudoers配置文件格式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
USER/GROUP HOST=(USER[:GROUP]) [NOPASSWD:] COMMANDS
  • USER/GROUP: 表示要被授权的用户或组,如果是组要以%开头
  • HOST: 表示允许从哪些主机登录的用户运行sudo,ALL表示允许任何终端机器访问.
  • (USER[:GROUP]): 表示使用 sudo 可切换的用户或者组,组可以不指定;ALL 表示可以切换到系统的所有用户.
  • NOPASSWD:如果指定,则该用户或者组使用sudo时就不用输入密码
  • COMMANDS:表示运行指定的命令,ALL表示允许指定任何命令,可配置命令1,命令2,...

用户执行sudo命令(需要输入用户密码)

vi /etc/sudoers

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
指定执行命令
ytzmdz    ALL=(ALL)    /bin/less,/bin/ls
执行所有命令
ytzmdz    ALL=(ALL)    ALL

用户执行sudo命令(不需要输入用户密码)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ytzmdz  ALL=(ALL)      NOPASSWD: ALL

%wheel 组中用户执行sudo命令(需要输入密码)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
%wheel   ALL=(ALL)       ALL

%wheel 组中用户执行sudo命令(不需要输入密码)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
%wheel   ALL=(ALL)       NOPASSWD: ALL

查看sudo操作记录

进入visudo文件输入Defaults logfile = “/var/log/sudo”命令保存并退出

查看sudo 命令日志

将用户添加wheel组

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
usermod  -G wheel ytzmdz

查看用户组

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
id ytzmdz
groups ytzmdz

撤销用户附加wheel组

方法一:gpasswd

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo gpasswd -d ytzmdz wheel

方法二:修改/etc/group文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@localhost ~]# cat  /etc/group |grep wheel               
wheel:x:10:ytzmdz
[root@localhost ~]# sed -i 's#wheel:x:10:ytzmdz#wheel:x:10:#g' /etc/group
[root@localhost ~]# groups ytzmdz
ytzmdz : ytzmdz
[root@localhost ~]#

sudo的原理

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@localhost ~]# ls -l /usr/bin/sudo
---s--x--x 1 root root 178264 Apr 13  2023 /usr/bin/sudo

sudo 执行程序上启用了setuid位。当任何用户运行这个二进制文件时,它将以拥有该文件的用户(root用户)权限运行。

当使用sudo执行 id 命令时,将显示用户 ytzmdz的 id

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[ytzmdz@localhost ~]$ id
uid=1001(ytzmdz) gid=1001(ytzmdz) groups=1001(ytzmdz)

使用sudo id时,将显示用户root的id

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[ytzmdz@localhost ~]$ sudo id
uid=0(root) gid=0(root) groups=0(root)

不切换用户终端,sudo 指定用户执行命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo -u ytzmdz  whoami

su

`su` 命令用于切换用户。如果不加任何参数,它会要求输入目标用户的密码,然后提供一个该用户的登录shell(不切换环境变量)。

- 如果使用 `su -`(注意有一个短横线),它会尝试模拟一个完整的登录过程,包括加载用户的profile文件和环境变量,更像是一个完整的用户切换(切换环境变量)。

su命令使每个用户都具有反复尝试其他用户的登陆密码的能力,具有安全隐患,若是su -root用户,则风险更大。所以需要加强su命令的使用控制,可以借助PAM认证模块,仅允许特定用户可使用su命令进行切换,授权wheel组中用户使用使用su命令,修改/etc/pam.d/su认证配置以启用pam wheel 认证。

启用pam_wheel认证模块

vim /etc/pam.d/su

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
取消auth required pam_wheel.so use_uid注释
auth required pam_wheel.so use_uid

在/etc/ pam.d/su文件账户su控制介绍

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
auth sufficient pam_ rootok.so
#auth required pam_ wheel.so use__uid

以上两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换的

两行都注释也是运行所有用户都能使用su命令,但root下使用su切换到其他普通用户需要输入密码;如果第一行不注释,则root使用su切换普通用户就不需要输入密码

(pam_rootok)so模块的主要作用是使uid为0的用户,即root用户能够直接通过认证而不用输入密码如果开启第二行,表示只有root用户和wheel组内的用户才可以使用su命令

如果注释第一行,开启第二行,表示只有wheel组内的用户才能使用su命令,root用户也被禁用su命令

su命令继承用户环境变量禁止引入提权

如果通过su切换用户后系统会自动初始化环境变量PATH,则可以有效防范由于继承环境变量PATH而导致的提权问题。

检查/etc/login.defs中是否配置了自动初始化环境变量PATH,即ALWAYS_SET_PATH=yes

cat /etc/login.defs | grep ALWAYS_SET_PATH

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ALWAYS_SET_PATH=yes

sudo

`sudo` 命令允许授权的用户以root用户的权限来执行命令。它会保留当前用户的环境变量和工作目录。`sudo` 默认会询问密码,密码是执行命令的用户的密码,可在sudoer 配置文件设置用户执行sudo命令免密。

sudo -i

`sudo -i` 命令会启动一个新的 shell,并且提供 root 用户登录的环境。它会将用户放置在 root 用户的 home 目录中,并加载 root 用户的 shell 配置文件。

sudo su

`sudo su` 命令实际上是先使用 `sudo` 以root用户的权限执行 `su` 命令。用于获取一个 root 用户的 shell,但不会加载 root 用户的完整环境。使用 `sudo su -`,它将更接近于 `sudo -i` 的效果,提供一个完整的 root 用户环境。

sudo -s

`sudo -s` 命令启动一个新的 shell,但允许用户指定一个 shell 提示符。它不会改变用户的 home 目录,但会提供一个 root 用户的 shell 环境。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源搬运工宋师傅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
sudo和su的用法
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
dogfei
2020/07/31
9360
centos su sudo wheel
为加强系统账户安全性,对系统及账户权限进行加固。修改ssh 服务端口号,禁止root账户远程登录,普通用户使用秘钥文件登录服务器后使用sudo 赋予完全的 root 权限。
Kevin song
2020/09/22
1.3K0
保证 Linux 服务器安全基本措施
作为一种开放源代码的操作系统,Linux服务器以其安全,高效和稳定的显著优势而得以广泛应用,但是,若不加以控制,也不见得安全到哪里,这篇博文主要从账号安全控制、系统引导和登录控制的角度,来进行Linux系统安全优化。并且使用辅助工具来查找安全隐患,以便我们及时采取相应的措施。 基本安全措施: 1、 系统各种冗余账号,如“games”等,可直接删除,包括一些程序账号,若卸载程序后,账号没能被删除,则需要我们手动进行删除。
小手冰凉
2019/09/10
1.3K0
保证 Linux 服务器安全基本措施
用户查询操作权限命令
/etc/gshadow 存储当前系统中用户组的密码信息 Tips:原先只有group和passwd两个文件,但后来考虑到安全性问题就又演变出shadow和gshadow两个文件
全栈工程师修炼指南
2022/09/28
3.4K0
用户查询操作权限命令
Linux用户权限管理
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管 理员申请一个账号,然后以这个账号的身份进入系统。
星陨1357
2023/03/14
16K0
Linux用户权限管理
linux系统下的权限知识梳理
下面对linux系统下的有关权限操作命令进行了梳理总结,并配合简单实例进行说明。 linux中除了常见的读(r)、写(w)、执行(x)权限以外,还有其他的一些特殊或隐藏权限,熟练掌握这些权限知识的使用,可以大大提高我们运维工作的效率。 (0)umask是权限码,默认是022--------------------------------------------------                   使用命令“umask”就能查询出来 文件默认的权限是666,目录默认的权限是777 新建文件和目录的
洗尽了浮华
2018/01/22
2K0
linux系统下的权限知识梳理
su 与sudo
  (1)root用户切换到普通用户是不需要输入密码确认。普通用户切换至root需要输入root密码确认,普通用户相互切换需要对方的密码
用户4877748
2020/07/22
6990
linux之sudo使用技巧汇总
原文链接:https://rumenz.com/rumenbiji/linux-sudo-skills.html
入门笔记
2021/10/13
1.6K0
限制用户使用su切换身份
如果不想任何人都可以用su命令成为root或只让某些用户有权使用su命令,那么只需要修改/etc/pam.d/su文件中配置即可实现.建议尽量限制用户通过su命令成为root。 1.对/etc/pam.d/su进行如下修改。 [root@svr5 shell]# vim /etc/pam.d/su #%PAM-1.0 auth            sufficient      pam_rootok.so # Uncomment the following line to implicitly tr
行 者
2018/03/26
3.3K0
限制用户使用su切换身份
Linux禁止非WHEEL用户使用SU命令 原
        通常情况下,一般用户通过执行“su -”命令、输入正确的root密码,可以登录为root用户来对系统进行管理员级别的配置。
拓荒者
2019/03/11
5.9K0
linux下su和sudo命令如何使用?
  su命令就是切换用户的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要添加用户任务,执行useradd ,beinan用户没有这个权限,而这个权限恰恰由root所拥有。解决办法无法有两个,一是退出beinan用户,重新以root用户登录,但这种办法并不是最好的;二是我们没有必要退出beinan用户,可以用su来切换到root下进行添加用户的工作,等任务完成后再退出root。我们可以看到当然通过su 切换是一种比较好的办法;
会长君
2023/04/25
3.2K0
权限管理su、sudo、限制root远程登录 原
语法: su [-] username “-”可有可无,加上“-”的作用是在切换用户时初始化当前用户的各种环境变量。普通用户su不加username时就是直接切换到root用户。 eg:
阿dai学长
2019/04/03
3K0
用户切换问题:用户切换命令(如 su 和 sudo)使用不当,导致权限问题
是山河呀
2025/02/04
2310
搞它!!!Linux系统安全及应用以弱口令检测
作为一种开放源代码的操作系统,Linux服务器以其安全,高效和稳定的显著优势得以广泛应用 可以从账号安全控制,系统引导和登录控制的角度控制Linux系统的安全优化
不吃小白菜
2020/09/03
3.3K0
搞它!!!Linux系统安全及应用以弱口令检测
【CentOS7操作系统安全加固系列】第(3)篇
规则描述:在给定时间段内已停用的用户帐户可以自动禁用。建议在密码到期后 30 天内处于非活动状态的帐户被禁用。
yuanfan2012
2020/11/10
2.3K0
【CentOS7操作系统安全加固系列】第(3)篇
sudo、su、su – 之间的区别以及wheel组
文章转自:https://www.howtoforge.com/tutorial/sudo-vs-su/,非常好的一篇文章,我就不总结了,最后只补充一下轮子组wheel。
好派笔记
2021/09/14
3.1K0
第七章·Linux用户管理-用户的基本操作
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/09/26
2.3K0
第七章·Linux用户管理-用户的基本操作
疑问易答 | su与 sudo 命令你真的会用?
在 Linux 中有多个用户,比如 root、master、worker 等,那我想从一个用户切换到另一个用户如何切换呢?比如登录 master 用户后,突然想去切换到 worker 用户执行一个命令,操作一个 worker 用户下的文件。这个时候切换用户有多个方法
读懂原理
2023/02/28
5940
疑问易答 | su与 sudo 命令你真的会用?
Linux系统如何在不知道账号密码的情况下切换用户?
例如,我们有一个名为postgres的用户帐户(默认的PostgreSQL超级用户系统帐户),我们希望名为postgres的组中的每个用户(通常是我们的PostgreSQL数据库和系统管理员)使用命令切换到postgres帐户,而无需输入密码su
网络技术联盟站
2021/11/08
2.3K0
Linux系统如何在不知道账号密码的情况下切换用户?
linux中没有密码的情况下切换到另一个用户帐户
如何在不需要密码的情况下切换到另一个或特定的用户帐户。例如,我们有一个名为postgres的用户帐户(PostgreSQL默认超级用户系统帐户),我们希望名为postgres的组中的每个用户(通常是我们的PostgreSQL数据库和系统管理员)使用su命令切换到postgres帐户,而不需要输入密码。 默认情况下,只有root用户可以在不输入密码的情况下切换到另一个用户帐户。任何其他用户将被提示输入他们要切换到的用户帐户的密码(或者如果他们使用sudo 命令,他们将被提示输入他们的密码),如果没有提供正确的
入门笔记
2022/06/02
1.9K0
相关推荐
sudo和su的用法
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验