LINUX常用工具之sudo权限控制

news2024/11/16 12:48:51

一、Sudo基本介绍

sudo是Linux 中用于允许特定用户以超级用户或其他特权用户的身份执行特定的命令或任务。sudo 提供了一种安全的方法,使用户能够临时获取额外的权限,而不需要以完全超级用户的身份登录系统。sudo也可以用了设置黑名单命令清单,控制用户不允许执行一些命令。

默认情况下/etc/sudoers 是不能被任何人直接编辑的,因为它的权限是 440,虽然也可以对其赋予写权限后再编辑,但推荐使用 visudo 命令编辑该文件。

sudo的执行过程:

1、sudo 会读取和解析 /etc/sudoers 文件,查找调用命令的用户及其权限

2、然后提示调用该命令的用户输入密码(通常是用户密码,但也可能是目标用户的密码,或者也可以通过 NOPASSWD 标志来跳过密码验证)

3、 之后,sudo 创建一个子进程,调用 setuid() 来切换到目标用户

4、接着,它会在上述子进程中执行参数给定的shell 或命令

二、sudo基本用法

1、授权配置格式

USER/GROUP HOST=(USER[:GROUP]) [NOPASSWD:] COMMANDS

• USER/GROUP 表示需要被授权的用户或者组,如果是组则,需要以 % 开头

• HOST 表示允许从哪些主机登录的用户运行 sudo 命令,ALL 表示允许从任何终端、机器访问

• (USER[:GROUP]) 表示使用 sudo 可切换的用户或者组,组可以不指定,ALL 表示可以切换到系统的所有用户

• NOPASSWD 如果指定,则该用户或组使用 sudo 时不必输入密码

• COMMANDS 表示运行指定的命令,ALL 表示允许执行所有命令

配置示例:

# 允许 sudo 组执行所有命令

%sudo ALL=(ALL:ALL) ALL

# 允许用户执行所有命令,且无需输入密码

huoty ALL =(ALL) NOPASSWD: ALL

# 仅允许用户执行 echo, ls 命令

huoty ALL =(ALL) NOPASSWD: /bin/echo /bin/ls

# 运行本机的用户执行关机命令

huoty localhost=/sbin/shutdown -h now

# 允许 users 用户组中的用户像 root 用户一样使用 mount、unmount、chrom 命令

%users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom


2、使用Defaults 配置,可以改变 sudo 命令的行为

# 指定用户尝试输入密码的次数,默认值为3

Defaults passwd_tries=5

# 设置密码超时时间,默认为 5 分钟

Defaults passwd_timeout=2

默认sudo 询问用户自己的密码,添加 targetpw 或 rootpw 配置可以让 sudo 询问 root 密码

Defaults targetpw

# 指定自定义日志文件

Defaults logfile="/var/log/sudo.log"

# 要在自定义日志文件中记录主机名和四位数年份,可以加上 log_host 和 log_year 参数

Defaults log_host, log_year, logfile="/var/log/sudo.log"

# 保持当前用户的环境变量

Defaults env_keep += "LANG LC_ADDRESS LC_CTYPE COLORS DISPLAY HOSTNAME EDITOR"

Defaults env_keep += "ftp_proxy http_proxy https_proxy no_proxy"

# 安置一个安全的 PATH 环境变量

Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"


3、别名设置

• Host_Alias 主机别名

• Cmnd_Alias 命令别名

• User_Alias 用户别名,可以是用户,用户组

• Runas_Alias 目的用户别名

配置示例:

# 主机别名

Host_Alias FILESERVERS = fs1, fs2

Host_Alias MAILSERVERS = smtp, smtp2

# 用户别名

User_Alias ADMINS = huoty, kong

# 命令别名

Cmnd_Alias SHUTDOWN = /sbin/reboot, /sbin/poweroff

Cmnd_Alias PKGMGMT = /usr/bin/dpkg, /usr/bin/apt-get, /usr/bin/aptitude

Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig

Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/iptables

Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /bin/mount, /bin/umount

Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp

Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall

# 允许 ADMINS 用户执行包管理和关机命令

ADMINS ALL = PKGMGMT, SHUTDOWN

# 允许 sys 用户组中的用户使用 NETWORKING 等所有别名中配置的命令

%sys ALL = NETWORKING, PKGMGMT, SERVICES, STORAGE, DELEGATING, PROCESSES


4、sudo 常用参数

• -l 列出当前用户所拥有的权限

• -E 保持当前用户的环境变量

• -H 设置 HOME 环境变量为目标用户的主目录

• -u 以指定用户运行命令

• -k 结束密码有效期限,即下次再执行时需要重新输入密码

• -- 停止解析命令行参数,即之后命令不再作为其控制餐宿


查看sudo 命令文件的信息如下:

$ ls -l /usr/bin/sudo

-rwsr-xr-x 1 root root 155008 Mar 13 2015 /usr/bin/sudo

可以发现sudo 上启用了 setuid 位,即当任何用户运行这个二进制文件时,其将以 root 用户的权限运行。

sudo 存在一个曲线是,其无法使用 Shell 的内置命令。如 history 等:

$ sudo history

sudo: history: command not found

解决这个问题的办法是,临时切换到root shell,并在那里执行任何命令,包括 Shell 的内置命令:

$ sudo bash

当前用户的命令别名不会被应用到sudo。如果需要这样,可以在 ~/.bashrc 或者 /etc/bash.bashrc 中加入:

alias sudo='sudo '

如果希望使用sudo 一次执行多个命令,可以使用 bash -c,如:

$ sudo -- bash -c 'pwd; hostname; whoami'

 

三、Sudo黑名单配置

1、sudo的用户权限配置

a) /etc/sudoers文件:

默认的配置用户操作sudo命令权限的文件、也就是说可以在这个文件中通过配置来制定用户是否具有sudo权限、和哪些命令可以使用sudo权限。如果要通过编辑这个文件来实现用户的sudo赋权操作必须使用命令:visudo 来修改sudoers文件。

b) /etc/sudoers.d文件夹:

通过cat /etc/sudoers查看sudoers文件内容,你会发现有一行说明:最好不要修改此文件、通过操作sudoers.d文件夹来实现普通用户的sudo命令赋权过程。


2、黑名单配置步骤

1) 在/etc/sudoers.d 文件夹下新建一个文件,名称无所谓,如:user1

visudo -f /etc/sudoers.d/user1

2) 编辑user1文件:添加


可以先将/sbin、/usr/sbin/ 中的命令先全部做策略限制。


3)修改策略文件权限为400

chmod 400 /etc/sudoers.d/user1

4)策略文件配置完成后,测试是否有语法错误。


5) 用user1账户登录,执行sudo命令来验证是否生效

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1402677.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实战 | SQL注入思路扩展

本文由掌控安全学院 - sbhglqy 投稿 一、资产搜集 我们都知道sql注入的传参有些是明文的,有些是经过编码或者加密的,所以我们搜索的时候不要仅限于inurl:.php?id1,可以额外的尝试搜搜1的base64编码值MQ,即可以搜索inurl:.php?…

万界星空科技MES系统的生产管理流程

对于生产型工厂来说,车间生产流程无疑是最重要的管理环节,繁琐的生产细节让企业很难找到合理的生产管理方法,导致人工效率低、错误多、成本高。如果想要解决这些问题,工厂就必须要有一套自己的生产管理系统,这样才能提…

(2021|ICLR,扩散先验,VE-SDE,逼真和忠实的权衡)SDEdit:使用随机微分方程引导图像合成和编辑

SDEdit: Guided Image Synthesis and Editing with Stochastic Differential Equations 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 2. 背景:使用随机微分方程…

【HarmonyOS】体验鸿蒙电商平台的未来之旅!

从今天开始,博主将开设一门新的专栏用来讲解市面上比较热门的技术 “鸿蒙开发”,对于刚接触这项技术的小伙伴在学习鸿蒙开发之前,有必要先了解一下鸿蒙,从你的角度来讲,你认为什么是鸿蒙呢?它出现的意义又是…

点燃航天热情,莞港澳青少年航天研学冬令营收获满满

为进一步促进港澳青少年深度了解祖国的最新发展,通过亲身体验增加对祖国的认识,增强对祖国的向心力。“筑梦航天,行进湾区”莞港澳青少年交流实践活动收官之作“航天研学冬令营”于1月20日在东莞成功举办。来自香港、澳门、广州、深圳、东莞各…

AI 欺诈事件频出,如何重塑身份认证的安全性?

据报告表示,生成式人工智能每年可为世界经济注入相当于 4.4 万亿美元的资金。预计到 2030 年,人工智能对全球财政的潜在贡献将达到 15.7 万亿美元。人们惊叹于 AI 强大工作效率,期待能帮忙节省不必要的劳动力,但事实上 AI 出现之后…

216. 组合总和 III - 力扣(LeetCode)

题目描述 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。 输入示例 k 3, n 7输出示例 [[1,2,…

Allegro如何导入芯片的Pin Delay?

Allegro在做等长时,需要导入芯片的Pin Delay才能做真正的等长。因为有些芯片内部的引脚本身就是不等长的,例如海思的部分芯片。 那么如何导入芯片的Pin Delay呢? 1、打开约束管理器,点击Properties(属性)→Component(器件)→Pin Properties→General。 在右栏找到芯片U1,…

【Linux】第三十二站:命名管道

文章目录 一、命名管道介绍二、编码1.mkfifo2.unlink3.一个简单的例子4.修改 一、命名管道介绍 管道应用的一个限制就是只能在具有共同祖先(具有亲缘关系)的进程间通信。 如果我们想在不相关的进程之间交换数据,可以使用FIFO文件来做这项工作…

opencv009 滤波器01(卷积)

图像卷积操作(convolution),或称为核操作(kernel),是进行图像处理的一种常用手段, 图像卷积操作的目的是利用像素点和其邻域像素之前的空间关系,通过加权求和的操作,实现…

【服务器】Xshell与Xftp软件的使用指南

目录 【Xshell软件】 1.1 Xshell软件的功能 1.2 Xshell软件的使用 【Xftp软件】 2.1 Xftp软件的功能 2.2 Xftp软件的使用 可替代产品【FinalShell】 3.1 FinalShell软件的使用 3.2 FinalShell连接服务器失败解决方法 可替代产品【FileZilla】

VSCode无法下载插件,提示 Error while fetching extensions : XHR failed

解决方案: 打开vscode,依次点击File->Preferences->settings,中文就是文件->首选项->设置,打开如下图: 我们去搜索:Proxy , 然后回车 最重要的一步:将Http Prox…

关于 open ai,你了解多少?

OpenAI 的历史 第一阶段:2015-2018 年 2015 年,埃隆马斯克、山姆阿尔特曼、彼得蒂尔和杰西卡利文斯顿联合创立了 OpenAI。OpenAI 的目标是开发安全、有益的 AGI,并确保其造福全人类。在这一阶段,OpenAI 主要专注于基础研究&…

微信公众号怎么申请超过2个

一般可以申请多少个公众号?目前公众号申请数量的规定是从2018年底开始实施的,至今没有变化。规定如下:1、个人可以申请1个个人主体的公众号;2、企业(有限公司)可以申请2个公众号;3、个体户可以申…

中仕教育:2024年国考面试题型有哪些?

国考面试是选拔公务员的重要环节,通常涉及以下几个方面: 1. 自我介绍:考官通常会要求考生做一个简短的自我介绍。内容可以包括自己的基本情况、学历、工作经历等。 2. 专业知识:根据应聘者所应聘的职位和部门的不同,…

猛玛LARK M1无线麦克风采用 思远半导体 其实就是蓝牙话筒

自上世纪无线电技术开始发展起来,到了几十年后的今天,无线通讯技术已经成熟,开始追求更好的音质以及用户使用体验,优秀的产品也如雨后春笋般的出现,技术革新,极致音质,竞争也越来越激烈。这时候…

VC++中使用OpenCV进行人脸检测

VC中使用OpenCV进行人脸检测 对于上面的图像,如何使用OpenCV进行人脸检测呢? 使用OpenCV进行人脸检测十分简单,OpenCV官网给了一个Python人脸检测的示例程序, objectDetection.py代码如下: from __future__ import p…

【架构师视角系列】Apollo配置中心之Client端(二)

原创文章,转载请标注。https://blog.csdn.net/leeboyce/article/details/135733075 文章目录 声明配置中心系列文章一、客户端架构1、Config Service职责(1)配置管理(2)配置发布(3)配置读取 2、…

【Linux】Linux开发工具 - vim的基本操作

IDE例子 Linux编辑器-vim使用 vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行&#xff…

暴力破解常见的服务器

目录 使用 pydictor 生成自己的字典工具liunx下载使用常用的参数说明插件型字典 (可自己根据 API 文档开发) 使用 hydra 工具在线破解系统用户密码使用 hydra 破解 windows 7 远程桌面密码使用 hydra 工具破解 ssh 服务 root 用户密码 使用 Medusa 工具在线破解medusa参数说明M…