Linux sudo与/etc/sudoers

sudo介绍

  1. sudo命令可以让普通用户在执行需要超级用户权限的命令时,临时提升为超级用户。例如,普通用户可以使用sudo执行系统管理任务,如安装软件、修改系统配置等。
  2. 访问控制:sudo命令通过sudoers文件中的配置,可以对用户和用户组进行细粒度的访问控制。管理员可以指定哪些用户可以使用sudo以及可以执行哪些命令。
  3. 审计和日志记录:sudo命令可以记录用户执行的每个sudo命令,包括命令的时间、执行者和执行的命令本身。这对于安全审计和故障排除非常有用。
  4. 环境变量控制:sudo命令可以通过Defaults行中的配置,控制sudo命令执行时的环境变量。这有助于确保以root权限执行命令时,环境变量不会被滥用或篡改。
  5. 密码验证:sudo命令通常需要用户输入自己的密码来验证身份。这增加了安全性,确保只有授权的用户可以执行特权命令。
sudo apt install net-tools
sudo dmesg
sudo lshw

/etc/sudoers文件介绍

root@bsp-PowerEdge-R6525:~# cat /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d

  1. Defaults env_reset: 这个行指定了默认的环境变量重置规则,当用户使用sudo命令时,环境变量将被重置为默认值。
  2. Defaults mail_badpass: 这个行指定了当用户输入错误密码时,系统会发送邮件通知。
  3. Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin": 这个行指定了sudo命令的安全路径,即sudo命令可以在这些路径下执行。
  4. root ALL=(ALL:ALL) ALL: 这个行指定了用户root可以在任何主机上以任何用户身份执行任何命令。
  5. %admin ALL=(ALL) ALL: 这个行指定了admin组的成员可以在任何主机上以任何用户身份执行任何命令。
  6. %sudo ALL=(ALL:ALL) ALL: 这个行指定了sudo组的成员可以在任何主机上以任何用户身份执行任何命令。
  7. #includedir /etc/sudoers.d: 这个行是一个注释,指示可以使用#include指令来包含其他sudoers文件的路径。在这个例子中,它指定了/etc/sudoers.d目录下的文件将被包含进来。

visudo修改/etc/sudoers文件

如何给用户添加sudo权限

修改/etc/sudoers
在下面添加
# User privilege specification
root ALL=(ALL:ALL) ALL+++
arron ALL=(ALL:ALL) ALL
arron ALL=(ALL:ALL) ALL: 这个行指定了用户arron可以在任何主机上以任何用户身份执行任何命令。

添加输出密码提示

修改/etc/sudoers
+++
Defaults  badpass_message="Password is wrong, please try again"

添加重试次数

修改/etc/sudoers
+++
Defaults   passwd_tries=5 

sudo生效持续时间(默认5分钟)

timestamp_timeout Number of minutes that can elapse before sudo will ask for a passwd again. The timeout may include a fractional component if minute granularity is insufficient, for example 2.5. The default is 15. Set this to 0 to always prompt for a password. If set to a value less than 0 the user's time stamp will not expire until the system is rebooted. This can be used to allow users to create or delete their own time stamps via “sudo -v” and “sudo -k” respectively.

修改/etc/sudoers
+++
Defaults timestamp_timeout =10

等待用户输入时间

passwd_timeout Number of minutes before the sudo password prompt times out, or 0 for no timeout. The timeout may include a fractional component if minute granularity is insufficient, for example 2.5. The default is 0.

修改/etc/sudoers
+++
Defaults   passwd_timeout=2

sudo log设置

Logging

sudoers can log both successful and unsuccessful attempts (as well as errors) to syslog(3), a log file, or both. By

default, sudoers will log via syslog(3) but this is changeable via the syslog and logfile Defaults settings. See LOG

FORMAT for a description of the log file format.

Defaults@SERVERS log_year, logfile=/var/log/sudo.log

修改/etc/rsyslog.conf文件
+++
local2.debug                           /var/log/sudo.log修改/etc/sudoers
+++
Defaults logfile=/var/log/sudo.log
Defaults loglinelen=0
Defaults !syslog创建日志文件
touch /var/log/sudo.log
systemctl restart rsyslog

su介绍

su命令是在Unix和类Unix系统上使用的命令,用于切换用户身份。下面是su命令的一些常见用法和功能:

1. 切换用户:su命令可以让当前用户切换到另一个用户的身份,例如从普通用户切换到root用户。默认情况下,su命令会切换到root用户,但也可以指定其他用户。

2. 执行命令:su命令可以在切换用户后,直接执行命令。例如,可以使用su命令切换到root用户,然后执行需要root权限的命令。

3. 环境变量:su命令可以在切换用户时,保留原用户的环境变量。这对于需要在新用户身份下执行命令,但需要使用原用户的环境变量的情况非常有用。

4. 密码验证:su命令通常需要用户输入目标用户的密码来验证身份。这增加了安全性,确保只有授权的用户可以切换到目标用户的身份。

su命令用法:

1. 切换到root用户:

```

su

```

执行上述命令后,系统会提示输入root用户的密码。输入密码后,即可切换到root用户身份。

2. 切换到其他用户:

```

su username

```

执行上述命令后,系统会提示输入目标用户的密码。输入密码后,即可切换到目标用户身份。

3. 切换并执行命令:

```

su -c "command"

```

执行上述命令后,系统会提示输入root用户的密码。输入密码后,系统会以root用户身份执行指定的命令。

4. 切换并保留原用户的环境变量:

```

su -m username

```

执行上述命令后,系统会提示输入目标用户的密码。输入密码后,系统会切换到目标用户身份,并保留原用户的环境变量。

5. 切换并指定shell:

```

su -s /bin/bash username

```

执行上述命令后,系统会提示输入目标用户的密码。输入密码后,系统会切换到目标用户身份,并使用/bin/bash作为shell。

root@admin:/home# adduser arron-build
Adding user `arron-build' ...
Adding new group `arron-build' (1010) ...
Adding new user `arron-build' (1010) with group `arron-build' ...
Creating home directory `/home/arron-build' ...
Copying files from `/etc/skel' ...
New password: 
Retype new password: 
passwd: password updated successfully
Changing the user information for arron-build
Enter the new value, or press ENTER for the defaultFull Name []: Room Number []: Work Phone []: Home Phone []: Other []: 
Is the information correct? [Y/n] 
root@admin:/home# 
root@admin:/home# 
root@admin:/home# 
root@admin:/home# 
root@admin:/home# visudo 
root@admin:/home# 
root@admin:/home# su arron-build
arron-build@admin:/home$

su和sudo区别

1. su命令需要目标用户的密码,而sudo命令需要当前用户的密码。使用su命令切换到目标用户身份时,需要输入目标用户的密码。而使用sudo命令执行需要root权限的命令时,需要输入当前用户的密码。

2. su命令切换到目标用户身份后,会保留原用户的环境变量。而sudo命令执行命令时,默认情况下会清除原用户的环境变量,只保留少量的安全环境变量。

3. su命令切换到目标用户身份后,会一直保持该身份,直到使用exit命令退出。而sudo命令执行完命令后,会自动返回原用户身份。

4. su命令需要使用root用户或具有sudo权限的用户才能使用。而sudo命令只需要当前用户具有sudo权限即可使用。

总的来说,sudo命令更加灵活和安全,因为它只需要输入当前用户的密码,而且执行命令时会清除大部分环境变量,从而减少了潜在的安全风险。但是,在需要长时间使用root权限的情况下,su命令更加方便,因为它可以一直保持目标用户身份,而不需要反复输入密码。

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

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

相关文章

【AI绘画】Stable Diffusion使用入门教程!!!!

手把手教你入门绘图超强的AI绘画,用户只需要输入一段图片的文字描述,即可生成精美的绘画。给大家带来了全新保姆级教程资料包 (文末可获取) 首先提几个好玩的名词: 炼丹:训练AI学习图片生成模型 咒语&…

CES 2024的亮点仅仅聚焦AI深度赋能和产业创新吗?| DALL-E 3、Stable Diffusion等20+ 图像生成模型综述

随着科技飞速发展,CES(国际消费电子展)已然成为全球科技产业的风向标,每年的CES大会都是业界瞩目的盛事。回顾2024年CES大会,不难发现其亮点纷呈,其中以人工智能的深度赋能为最引人注目之处。AI技术的深入应…

如何在Linux环境下安装Redis呢?

第一步:创建存放redis存放的文件夹 mkdir /usr/local/redis使用cd切换到上述创建的目录 第二步:从官网下载redis压缩包 wget https://download.redis.io/releases/redis-6.0.5.tar.gz下图为下载成功示例 第三步:解压下载的压缩包 tar -zv…

TA百人计划学习笔记 3.1.2深度测试

资料 源视频 【技术美术百人计划】图形 3.1 深度与模板测试 传送门效果示例_哔哩哔哩_bilibili ppt 3100-模板测试与深度测试(1) 参考 Unity Shader: 理解Stencil buffer并将它用于一些实战案例(描边,多边形填充,反射区域限定,阴影…

文字转语音在线合成掩码系统 让你的文字自动转为语音 带完整的安装部署教程

互联网的快速发展,人们对文字转语音(TTS)的需求日益增长。无论是需要为视障人士提供语音阅读的内容,还是想要为视频内容添加语音旁白,都需要一个高效、准确的文字转语音系统。然而,市面上的许多TTS工具都存…

是用原生js创建红包雨效果

需求: 创建红包雨 答案: // 红包雨代码 开始 // 添加遮罩层 const addOverlay () > {const overlay document.createElement(div);overlay.className overlay;overlay.style.position fixed;overlay.style.top 0;overlay.style.left 0;overlay.style.width 100%;o…

Unity_使用Image和脚本生成虚线段

生成如图样式的虚线段 原理:使用Image做一条线段,这个方法的原理就是给固定的片元长度,对Image进行分割,把片元添加到一个列表中,然后循环对列表中的偶数位进行隐藏,也可以调整线段的宽度 缺陷&#xff1…

无公网IP实现远程访问MongoDB文件数据库【内网穿透】

最近,我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念,而且内容风趣幽默。我觉得它对大家可能会有所帮助,所以我在此分享。点击这里跳转到网站。 文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2…

支持向量机(SVM)详解

支持向量机(support vector machines,SVM)是一种二分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机。 1、线性可分支持向量机与硬间隔最大化 1.1、线性可分支持向量机 考虑一个二分…

Disruptor挖坑MemoryAnalyzer来填

Disruptor挖坑MemoryAnalyzer来填 1、起因背景2、初步定位3、细化定位3.1、内存文件导出命令3.2、MemoryAnalyzer分析xxx.hprof文件 4、思考5、花絮 1、起因背景 博主练手写的并发项目订单服务出现了程序一直处于加载未完成的状态,电脑温度升高,CPU使用…

springboot125汽车资讯网站

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的125汽车资讯网站 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获…

springboot家乡特色推荐系统源码和论文

在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括家乡特色推荐的网络应用,在外国家乡特色推荐系统已经是很普遍的方式,不过国内的管理网站可能还处于起步阶段。家乡特色推荐系统采用java技术&#xff0…

UDS Flash刷写用例简单介绍

文章目录 1.Boot的功能1.1 目的1.2 功能 2.测试用例设计2.1 设计框架2.2 正向测试2.1.1 刷写流程2.1.2 重复刷写2.1.3压力刷写 2.3 逆向测试2.2.1 断电后刷写2.2.2 中断通讯后刷写2.2.3 篡改刷写数据2.2.4 修改软件校验数据2.2.5 修改刷写流程2.2.6 高负载刷写2.2.7 高低压刷写…

JuiceSSH结合内网穿透实现移动端设备公网远程访问Linux虚拟机

文章目录 1. Linux安装cpolar2. 创建公网SSH连接地址3. JuiceSSH公网远程连接4. 固定连接SSH公网地址5. SSH固定地址连接测试 处于内网的虚拟机如何被外网访问呢?如何手机就能访问虚拟机呢? cpolarJuiceSSH 实现手机端远程连接Linux虚拟机(内网穿透,手机端连接Linux虚拟机) …

Linux下安装 Redis7

Linux下安装 Redis7 三、Linux下安装 Redis7【redis-7.2.4.tar.gz】3.1.下载redis的安装包3.1.1.手动下载Redis压缩包并上传【redis-7.2.4.tar.gz】3.1.2.wget工具下载redis-7.2.4.tar.gz 3.2.将安装包进行解压缩3.3.进入redis的安装包3.4.检查是否有gcc 环境3.5.编译和安装并指…

VS Code C++ 开发:入门和 IntelliSense 配置

你是否在满天星空下琢磨如何在 VS Code 中配置用于 C 开发的智能感知功能(IntelliSense)? 你是否想知道,有没有一种最简单的方法来运行你的 C 代码? 好消息是:我们在 C 扩展中添加了一些新功能,有了这些好东西&#xf…

Redis——关于它为什么快?使用场景?以及使用方式?为何引入多线程?

目录 1.既然redis那么快,为什么不用它做主数据库,只用它做缓存? 2.Redis 一般在什么场合下使用? 3.redis为什么这么快? 4.Redis为什么要引入了多线程? 1.既然redis那么快,为什么不用它做主数据…

解决Sublime Text V3.2.2中文乱码问题

目录 中文乱码出现情形通过安装插件来解决乱码问题 中文乱码出现情形 打开一个中文txt文件,显示乱码,在File->Reopen With Encoding里面找不到支持简体中文正常显示的编码选项。 通过安装插件来解决乱码问题 安装Package Control插件 打开Tool->…

Windows本地如何部署Jupyter+Notebook并结合内网穿透实现远程访问?

文章目录 1.前言2.Jupyter Notebook的安装2.1 Jupyter Notebook下载安装2.2 Jupyter Notebook的配置2.3 Cpolar下载安装 3.Cpolar端口设置3.1 Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 在数据分析工作中,使用最多的无疑就是各种函数、图表、…

2024全网超全的测试类型详解,再也不怕面试答不出来了!

在软件测试工作过程中或者在面试过程中经常会被问到一些看起来简单但是总是有些回答不上的问题,比如你说说“黑盒测试和白盒测试的区别?”,“你们公司做灰度测试么?", ”α测试和β测试有什么不一样?“&#xff0…