【摘要】

生产环境中为了系统的安全性,Linux主机的root权限是只能管理器使用,普通用户不具有root权限,但是可以通过sudo获取root权限执行一些操作。

一、知识要点

  1. wheel组

在Linux中wheel组就类似于一个管理员的组。

通常在LUNIX下,即使我们有系统管理员root的权限,也不推荐用root用户登录。一般情况下用普通用户登录就可以了,在需要root权限执行一些操作时,再su登录成为root用户。

但是,任何人只要知道了root的密码,就都可以通过su命令来登录为root用户--这无疑为系统带来了安全隐患。所以,将普通用户加入到wheel组,被加入的这个普通用户就成了管理员组内的用户,但如果不对一些相关的配置文件进行配置,这个管理员组内的用户与普通用户也没什么区别--就像警察下班后,没有带枪、穿这便衣和普通人(用户)一样,虽然他的的确确是警察。根据应用的实例不同应用wheel组的方法也不同。这里对于服务器来说,我们希望的是剥夺被加入到wheel组用户以外的普通用户通过su命令来登录为root的机会(只有属于wheel组的用户才可以用su登录为root)。这样就进一步增强了系统的安全性。具体步骤如下:

1)修改 /etc/pam.d/su 文件

找到“#auth required /lib/security/$ISA/pam_wheel.so use_uid ”这一行,将行首的“#”去掉。

2)修改 /etc/login.defs 文件,

在最后一行增加“SU_WHEEL_ONLY yes”语句。

然后,用“usermod -G wheel 用户名”将一个用户添加到wheel组中。

然后,用刚刚被添加到wheel组的用户登录,并执行su命令登录为root用户…这时,输入了正确的root密码可以正常的登录为root用户。但是,如果换成一个不属于wheel组的用户时,执行了su命令后,即使输入了

正确的root密码,也无法登录为root用户--普通用户登录为root用户的权限被完全剥夺了(会收到“密码错误”的提示)。这样无疑提高了系统的安全性

(以上步骤基于CentOS,并适用于Fedora Core和RHEL。。。而且,我试着回忆以前的操作,印象中FreeBSD好像也一样。)

  1. sudo提权原理

在Linux中,有时为了让普通用户获得root的执行权限,除了之前讲过的su -永久提权方法,还有一种常用的方法,就是sudo。因为普通用户每次使用su -方法,都需要输入root的密码,不是非常方便,而sudo的好处是可以通过组的方式批量赋予普通用户权限。

sudo的工作过程如下:

(1)当用户执行sudo时,系统会主动寻找/etc/sudoers文件,判断该用户是否有执行sudo的权限

(2)确认用户具有可执行sudo的权限后,让用户输入用户自己的密码确认

(3)若密码输入成功,则开始执行sudo后续的命令

二、配置sudo提权

  • 配置方式
visudo 	            编辑sudo配置文件
vi /etc/sudoers 授权文件

1、为sudo机制启用日志记录,以便跟踪sudo执行操作

#visudo
%wheel ALL=(ALL) ALL,!/bin/su ,!/usr/bin/passwd #不包含/bin/su
Defaults logfile="/var/log/sudo"

2.实现test用户sudo授权

#visudo
User_Alias USERADMINS=test
Runas_Alias OP=root
Cmnd_Alias USERCMD=/usr/bin/cat,/usr/sbin/useradd,/usr/bin/more
USERADMINS ALL=(OP) USERCMD
Defaults logfile=/var/log/sudo.log

注意:

配置文件中可以通过定义别名的方式定义主机别名、用户别名、命令别名以及目的用户别名。

Host_Alias  定义主机别名;

User_Alias  用户别名,别名成员可以是用户,用户组(前面要加%号)

Runas_Alias  用来定义runas别名,这个别名指定的是“目的用户”,即sudo 允许切换至的用户;

Cmnd_Alias  定义命令别名;

  1. yunwei用户sudo授权
#visudo
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
yunwei ALL=(root) NOPASSWD:ALL,!/sbin/shutdown,!/sbin/init,!/bin/rm -rf /

解释说明:

1)第一个字段yunwei指定的是用户:可以是用户名,也可以是别名。每个用户设置一行,多个用户设置多行,也可以将多个用户设置成一个别名后再进行设置。

2)第二个字段ALL指定的是用户所在的主机:可以是ip,也可以是主机名,表示该sudo设置只在该主机上生效,ALL表示在所有主机上都生效!限制的一般都是本机,也就是限制使用这个文件的主机;一般都指定为"ALL"表示所有的主机,不管文件拷到那里都可以用。比如:10.1.1.1=...则表示只在当前主机生效。

3)第三个字段(root)括号里指定的也是用户:指定以什么用户身份执行sudo,即使用sudo后可以享有所有root账号下的权限。如果要排除个别用户,可以在括号内设置,比如ALL=(ALL,!oracle,!pos)。

4)第四个字段ALL指定的是执行的命令:即使用sudo后可以执行所有的命令。除了关机和删除根内容以外;也可以设置别名。NOPASSWD: ALL表示使用sudo的不需要输入密码。

5)也可以授权给一个用户组

%admin ALL=(ALL) ALL 表示admin组里的所有成员可以在任何主机上以任何用户身份执行任何命令

三、普通用户加入wheel,有sudo权限

1、创建用户并加入wheel组

useradd  opsadmin
usermod -aG wheel opsadmin
grep wheel /etc/group

2、授权普通用户登录ssh权限

vim /etc/ssh/sshd_config

AllowGroups wheel
Allowusers opsadmin systemctl restart sshd
echo 123 | passwd --stdin opsadmin

3、sudo配置

# visudo

%wheel  ALL=(ALL)       ALL,!/usr/bin/chattr,!/usr/bin/passwd,!/usr/sbin/visudo,!/usr/sbin/useradd,!/usr/sbin/adduser,!/usr/sbin/userdel,!/usr/sbin/deluser

Defaults     logfile=/var/log/sudo.log

四、参考

https://blog.csdn.net/cyx1834265118/article/details/107618223

https://blog.csdn.net/cbbbc/article/details/51712797

https://blog.csdn.net/besidemyself/article/details/7382780

Linux之sudo的更多相关文章

  1. Linux中sudo配置

    Linux下的sudo及其配置文件/etc/sudoers的详细配置. 1.sudo介绍 sudo是linux下常用的允许普通用户使用超级用户权限的工具,允许系统管理员让普通用户执行一些或者全部的ro ...

  2. linux 使用sudo开放普通用户权限

    整理一下以前写的东东,刚才又忘了- ---------------------------------------------------------------------------------- ...

  3. linux su,sudo命令

    linux su 命令 建议大家切换用户的时候 使用 su - root 这样,否则可能发现某些命令执行不了 关于su .su - 及 sudo的区别 请往下看 1.命令作用 su的作用是变更为其它使 ...

  4. Linux 中 sudo、su命令

    sudo : 暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码.不过有时间限制,Ubuntu默认为一次时长15分钟.su : 切换到某某用户模式,提 ...

  5. Linux scp sudo

    command line - scp to remote server with sudo - Super Userhttps://superuser.com/questions/138893/scp ...

  6. linux 创建sudo账号.md

    内容来源自网络 方案一 root登录 ssh root@server_ip_address 新增用户 adduser username 设置密码 passwd username 输入两次密码 修改帐户 ...

  7. linux下sudo命令

    [userld@redhat2 root]$ sudo ls We trust you have received the usual lecture from the local System Ad ...

  8. Linux 系统sudo命令

    Linux系统中有许多的系统命令和服务为了安全性考虑,因此只有root超级用户才可以去使用.如果普通用户需要做此类操作,则可以使用su - 命令(减号(-)指完全切换到新的用户,即把环境变量信息也变更 ...

  9. 【Linux】sudo用户权限管理

    权力下放 一.权力分配- sudo Sudo是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的"权力",让 他们执行一些只有超级用户或其他特 ...

  10. linux设置sudo不要密码

    linux下,普通用户,sudo时需要密码 改成没密码, vi /etc/sudoers 在 root ALL=(ALL) ALL后加一行 sysusr ALL=(ALL) NOPASSWD: ALL ...

随机推荐

  1. 【代码更新】SPI时序——AD数模数转换

    [代码更新]SPI时序--AD数模数转换 AD芯片手册:https://www.ti.com.cn/cn/lit/ds/symlink/ads8558.pdf?ts=1709473143911& ...

  2. 详解Python中sys模块的功能与应用

    本文分享自华为云社区<深入Python:sys模块的功能与应用详解>,作者: 柠檬味拥抱. 在Python的标准库中,sys 模块是一个常用而强大的工具,它提供了与Python解释器交互的 ...

  3. Java 常用类 String的使用

    1 package com.bytezero.stringclass; 2 3 import com.sun.tools.javac.Main; 4 import jdk.jfr.StackTrace ...

  4. 专访实在智能孙林君:颠覆传统RPA的实在IPA模式如何做到真正人人可用?

      王吉伟对话实在智能孙林君:颠覆传统引领RPA行业的实在IPA模式是如何炼成的? 王吉伟对话实在智能孙林君:为什么第一款颠覆行业的RPA诞生在实在智能? 专访实在智能孙林君:打造出真正人人可用的实在 ...

  5. Vue3音乐播放器组件,可显示歌词

    在线体验地址 音乐播放器 1,安装 npm install apple-music-player 或 yarn add apple-music-player 2,在main.ts中引入 import ...

  6. python 生成虚拟环境requirement.txt

    # 在项目根目录中,打开终端执行以下命令 # 生成 requirements.txt 文件 pip3 freeze > requirements.txt # 安装依赖文件 pip3 instal ...

  7. notion database 必知必会

    notion database 必知必会 用过 mysql 的同学一定很容易上手 notion .在 notion 中,掌握好 database,基本上就掌握了 notion 最核心的概念. noti ...

  8. 【图算法】构建消息传递网络教程 Creating Message Passing Networks by Pytorch-geometric

    一.背景 将卷积运算推广到不规则域通常表示为邻局聚合(neighborhood aggregation)或消息传递(neighborhood aggregation)模式. \(\mathbf{x}^ ...

  9. day32-JQuery05

    jQuery05 9.作业 9.1homework01 对多选框进行操作,输出选中的多选框的个数,并且把选中爱好的名称显示. <!DOCTYPE html> <html lang=& ...

  10. KTL 最新版

    K,K线,Candle蜡烛图. T,技术分析,工具平台 L,公式Language语言使用c++14,Lite小巧简易. 项目仓库:https://github.com/bbqz007/KTL Core ...