sudo 命令

1、sudo 简介

sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的。(百度百科)

su 命令

su是最简单的身份切换命令,一般都是su - username,然后输入password就ok了,root用su至其他用户无须密码;但非root用户切换时需要密码。切换到root可以使用su -和su - root。

  • 切换用户的方式:
    su UserName:非登录式切换,即不会读取目标用户的配置文件
    su - UserName:登录式切换,会读取目标用户的配置文件;完全切换
  • 换个身份执行命令:
    su [-] UserName -c ‘COMMAND’
    选项:
    -l:“su -l UserName”相当于“su - UserName”
    -c: 仅执行一次命令,而不切换用户身份

2、sudo的特性

  • sudo 能够授权指定用户在指定主机上运行某些命令。 如果未授权用户尝试使用 sudo,会提示联系管理员
  • sudo 可以提供日志,记录每个用户使用sudo操作,以便于日后审计
  • sudo 为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机
  • sudo 默认存活期为5分钟

编辑配置文件的方式

  • # sudoedit /etc/sudoers
  • # vim /etc/sudoers
  • # visudo
    visudo –c 命令具有语法检查功能,和crontab -e编辑后退出检查语言功能类似。

3、sudo相关文件

配置文件: /etc/sudoers, /etc/sudoers.d/
时间戳文件: /var/db/sudo
日志文件: /var/log/secure
配置文件支持使用通配符glob:

? :任意单一字符
* :匹配任意长度字符
[wxc]:匹配其中一个字符
[!wxc]:除了这三个字符的其它字符
\x : 转义
[[alpha]] :字母 示例: /bin/ls [[alpha]]*

配置文件规则有两类

  • 别名定义:不是必须的,别名必须全部而且只能使用大写英文字母的组合
  • 授权规则:必须的
  • 用户别名

4、sudo语法

  • who which_hosts=(runas) command
    被管理主机地址【访问主机】
    允许哪一个用户,执行某一条命令在哪一台主机上
    谁(who)能够以哪个用户(runas)的身份通过什么主机(which host)执行什么命令(command)

user: 运行命令者的身份
host: 通过哪些主机
(runas): 以哪个用户的身份
command: 运行哪些命令

  • sudo授权示例

    user1 ALL=(root) NOPASSWD: /usr/sbin/useradd, /usr/sbin/usermod
  • 常用的标签
    PASSWD:执行被授权的命令之前,必须输入密码进行身份验证
    NOPASSWD:执行被授权的命令之前,无需输入密码进行身份验证
    注意:PASSWD、NOPASSWD等标签只能在授权项中使用,不能在别名中使用

5、sudo命令

sudo -u centos 切换身份
-V 显示版本信息等配置信息
-u user 默认为root
-l 列出当前用户可以使用的所有sudo命令
-v 再延长密码有效期限5分钟,更新时间戳
-k 认证信息失效,清除时间戳(1970-01-01),下次需要重新输密码
-b 在后台执行指令

6、总结

  • su方式切换是须要输入目标用户的password。而sudo仅仅须要输入自己的password,所以sudo能够保护目标用户的password不对外泄漏。
  • sudo授权时passwd,su,sudo,sudoedit,visudo等具有特殊意义的命令时,务必要考虑全面(例如禁止修改root用户的密码等操作)。
  • 仔细看了sudo的配置文件发现sudo的which_hosts表示允许哪一个IP地址或网络访问当前主机,这种说法不对。通常能用到这个参数的场景不多,一般在有NIS服务或集中管理的时候,其实就是管理所有主机的管理策略在一台主机上编辑sudoers这个文件,然后将它推到所有主机。

man帮助文件显示该参数的正确含义:
#jack可以运行任何命令在定义地CSNET(128.138.243.0, 128.138.242.0和128.138.204.0/24的子网)中,不过注意前两个不需要匹配子网掩码因为是本地主机地址,而最后一个必须匹配掩码因为是网络地址。
jack CSNETS = ALL
#lisa可以运行任何命令在定义为CUNETS(128.138.0.0)的子网中主机上。
lisa CUNETS = ALL

su、sudo、sudo su、sudo -i的用法和区别

sudo : 暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码。不过有时间限制,Ubuntu默认为一次时长15分钟。
su : 切换到某某用户模式,提示输入密码时该密码为切换后账户的密码,用法为“su 账户名称”。如果后面不加账户时系统默认为root账户,密码也为超级账户的密码。没有时间限制。
sudo -i: 为了频繁的执行某些只有超级用户才能执行的权限,而不用每次输入密码,可以使用该命令。提示输入密码时该密码为当前账户的密码。没有时间限制。执行该命令后提示符变为“#”而不是“$”。想退回普通账户时可以执行“exit”或“logout” 。

sudo -i 直接运行sudo命令加-i参数
sudo su 运行sudo命令给su命令提权,运行su命令。
sudo -i 运行结果 PWD=/root
sudo su 运行结果 PWD=/home/用户名(当前用户主目录)


su root 输入root密码后切换之root用户但是pwd目录不变

su - root 输入root密码后切换之root用户但是pwd目录/root

sudo 一般加的是命令

sudo -i root与sudo - root、sudo -i ,sudo - ,sudo root效果相同 提示输入密码时该密码为当前账户的密码 要求执行该命令的用户必须在sudoers中才可以 su需要的是切换后账户的密 用法为“su 账户名称”

sudo : 暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码。不过有时间限制,Ubuntu默认为一次时长15分钟。
su : 切换到某某用户模式,提示输入密码时该密码为切换后账户的密码,用法为“su 账户名称”。如果后面不加账户时系统默认为root账户,密码也为超级账户的密码。没有时间限制。
sudo -i: 为了频繁的执行某些只有超级用户才能执行的权限,而不用每次输入密码,可以使用该命令。提示输入密码时该密码为当前账户的密码。没有时间限制。执行该命令后提示符变为“#”而不是“$”。想退回普通账户时可以执行“exit”或“logout” 。 要求执行该命令的用户必须在sudoers中才可以

sudo -i 直接运行sudo命令加-i参数    要求执行该命令的用户必须在sudoers中才可以
sudo su 运行sudo命令给su命令提权,运行su命令。 要求执行该命令的用户必须在sudoers中才可以
sudo -i 运行结果 PWD=/root
sudo su 运行结果 PWD=/home/用户名(当前用户主目录)

文章知识点与官方知识档案匹配,可进一步学习相关知识
云原生入门技能树首页概览10622 人正在系统学习中

[转帖]sudo 命令_su、sudo、sudo su、sudo -i的用法和区别的更多相关文章

  1. su命令,sudo命令,visudo命令

    一.命令su 语法 : su [-] username后面可以跟 ‘-‘ 也可以不跟,普通用户su不加username时就是切换到root用户,当然root用户同样可以su到普通用户. ‘-‘ 这个字 ...

  2. linux系统(centos)下su和sudo命令的区别

    linux系统(centos)下su和sudo命令的区别 区别 我们在日常使用过程中,这2个命令很多时候能达到相同的效果,对细节区别十分模糊,这里进行简单的解释和区分.希望大家能够正确使用这2个命令, ...

  3. Linux中新建用户用不了sudo命令问题:rootr is not in the sudoers file.This incident will be reported解决

    参考:https://blog.csdn.net/lichangzai/article/details/39501025 如果执行sudo命令的用户没有执行sudo的权限,执行sudo命令时会报下面的 ...

  4. sudo 命令详解

    在linux系统中,由于root的权限过大,一般情况都不使用它.只有在一些特殊情况下才采用登录root执行管理任务,一般情况下临时使用root权限多采用su和sudo命令. 一.su和sudo命令对比 ...

  5. linux su和sudo命令的区别

    一. 使用 su 命令临时切换用户身份 1.su 的适用条件和威力 su命令就是切换用户的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要添加用户任务,执行useradd ,beinan用 ...

  6. Linux su和sudo命令的区别,并获得root权限

    su(superuser) su表示切换用户,如: 输入:su命令后回车表示切换当前的用户到root用户,或者: 输入:su - root(或者其他用户名)这里加了"-"后表示也切 ...

  7. 07 Linux su和sudo命令的区别

    一. 使用 su 命令临时切换用户身份 1.su 的适用条件和威力 su命令就是切换用户的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要添加用户任务,执行useradd ,beinan用 ...

  8. linux su和sudo命令的区别(转)

    一. 使用 su 命令临时切换用户身份 1.su 的适用条件和威力 su命令就是切换用户的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要添加用户任务,执行useradd ,beinan用 ...

  9. linux su,sudo命令

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

  10. su与sudo命令的区别

    由于su 对切换到超级权限用户root后,权限的无限制性,所以su并不能担任多个管理员所管理的系统. 如果用su 来切换到超级用户来管理系统,也不能明确哪些工作是由哪个管理员进行的操作. 特别是对于服 ...

随机推荐

  1. MySQL思维导图:MySQL的架构介绍

    MySQL的架构介绍(思维导图形式) MySQL简介 概述 MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性. ...

  2. KubeFlow-Pipeline及Argo实现原理速析

    Argo是一个开源原生容器工作流引擎用于在Kubernetes上开发和运行应用程序.Argo Workflow流程引擎,可以编排容器流程来执行业务逻辑,在20年4月8日进入CNCF孵化器组. 而Kub ...

  3. 从大数据到AI,华为云存储加速企业大模型快速应用

    摘要:AI与大数据算法不断发展,在生产中的应用也越来越广,而应用的场景除了对算法,软件架构要求越来越高外,也对底层IaaS(基础设施即服务)提出了新的挑战. AI与大数据算法不断发展,在生产中的应用也 ...

  4. 高效联调,可靠发布!华为云推出CodeArts Release发布管理服务

    摘要:华为云全新推出CodeArts Release发布管理服务,旨在将华为多年形成的发布实践外溢,帮助企业提升软件发布质量和效率,降低生产环境的发布风险. 本文分享自华为云社区<高效联调,可靠 ...

  5. Rust太难?那是你没看到这套Rust语言学习万字指南!

    摘要:从开发环境.语法.属性.内存管理和Unicode等五部分,为你带来一份详细的Rust语言学习的精华总结内容. 一.Rust开发环境指南 1.1 Rust代码执行 根据编译原理知识,编译器不是直接 ...

  6. 一文带你了解华为云GaussDB的五大黑科技

    摘要:在华为开发者大会2021(HDC·Cloud)中,华为云数据库多位技术专家分享了GaussDB系列数据库全新5大黑科技. 4月24-26日,华为开发者大会2021(HDC·Cloud)在深圳隆重 ...

  7. 1ms的时延,10Gbps速率…5G通信技术解读

    摘要:5G通信的关键技术有哪些呢?5G对于移动互联网场景和物联网场景又带来了哪些新的技术和变革? 本文分享自华为云社区<5G通信关键技术解读>,作者:Super.雯 . 5G作为目前最新一 ...

  8. 重磅!Github宣布面向团队免费

    GitHub CEO Nat Friedman 宣布已面向全体 GitHub 用户和团队提供不限制协作人数的私有仓库,并宣称 GitHub 的全部核心功能现已对所有人免费提供. 公告称: 到目前为止, ...

  9. 火山引擎数智平台协助洞察美图类APP新增长,付费用户转化超过 124%

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 美图类 APP 的下一个增长点在哪里? 目前,国内市场上的美图类 APP 大多都遵循着基础功能免费使用.个性化热门 ...

  10. Java 模拟数据库连接池的实现

    前面学习过等待 - 通知机制,现在我们在其基础上添加一个超时机制,模拟从连接池中获取.使用和释放连接的过程.客户端获取连接的过程被设定为等待超时模式,即如果在 1000 毫秒内无法获取到可用连接,将会 ...