linux基本功系列之su命令

news2025/1/13 11:45:36

在这里插入图片描述

文章目录

  • 一. su命令介绍
  • 二. 语法格式及常用选项
  • 三. 参考案例
    • 3.1 切换到root用户
    • 3.2 切换到指定用户
    • 3.3 不切换成root,但执行root才能执行的命令
  • 总结

前言🚀🚀🚀
想要学好Linux,命令是基本功,企业中常用的命令大约200多个,不管是写shell脚本还是管理操作系统,最常用的命令必须要牢牢掌握,像我们以前学乘法口诀一样,烂熟于心,唯有如此,才能打牢基础。
💓 知识最重要的是记忆
💓 入门须知: 想要人生从容,必须全力以赴,努力才是你最终的入场券🚀🚀🚀
💕 最后: 努力成长自己,愿我们都能在看不到的地方闪闪发光 ,一起加油进步🍺🍺🍺

一. su命令介绍

su命令来自于英文单词“switch user”的缩写,其功能是用于切换用户身份。

管理员切换至任意用户身份而无需密码验证,而普通用户切换至任意用户身份均需密码验证。

另外添加单个减号(-)参数为完全的身份变更,不保留任何之前用户的环境变量信息。

特别说明的是:
切换用户分为login-shell方式与non-login shell方式,区别在于是否在su后面加上-,主要涉及到PATH/USER/MAIL等环境变量读取方法。使用root用户切换至任何用户,都不需要输入用户密码。

二. 语法格式及常用选项

依照惯例,我们还是要查看一下帮助文档


[root@mufenggrow test]# su -help

用法:
 su [选项] [-] [USER [参数]...]

将有效用户 id 和组 id 更改为 USER 的 id。
单个 - 视为 -l。如果未指定 USER,将假定为 root。

选项:
 -m, -p, --preserve-environment  不重置环境变量
 -g, --group <>             指定主组
 -G, --supp-group <>        指定一个辅助组

 -, -l, --login                  使 shell 成为登录 shell
 -c, --command <命令>            使用 -c 向 shell 传递一条命令
 --session-command <命令>        使用 -c 向 shell 传递一条命令
                                 而不创建新会话
 -f, --fast                      向shell 传递 -f 选项(csh 或 tcsh)
 -s, --shell <shell>             若 /etc/shells 允许,则运行 shell

 -h, --help     显示此帮助并退出
 -V, --version  输出版本信息并退出

通过帮助文档,我们整理出几个常用的参数:
在这里插入图片描述

三. 参考案例

3.1 切换到root用户

案例一: 切换root,但是不切换环境
我们需要创建一个普通用户mufeng,然后使用su命令切换到root用户, 但是shell环境依然是普通用户的shell

## 创建用户
[root@mufenggrow test]# useradd mufeng
[root@mufenggrow test]# echo 12345678 |passwd --stdin mufeng
更改用户 mufeng 的密码 。
passwd:所有的身份验证令牌已经成功更新。
## 登录普通用户
[root@mufenggrow test]# ssh mufeng@192.168.1.101
The authenticity of host '192.168.1.101 (192.168.1.101)' can't be established.
ECDSA key fingerprint is SHA256:9uJW2mOqzhYy5gtMsTHmt4V584na0LFqEGYXxA4rUM8.
ECDSA key fingerprint is MD5:42:35:b0:99:2c:04:c5:94:e6:f4:74:6d:af:ec:07:29.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.101' (ECDSA) to the list of known hosts.
mufeng@192.168.1.101's password: 

## 切换root
[mufeng@mufenggrow ~]$ su
密码:
[root@mufenggrow mufeng]# whoami
root
## 切换完之后,还是在mufeng的家目录下
[root@mufenggrow mufeng]# pwd
/home/mufeng
[root@mufenggrow mufeng]# 


案例二: 切换root用户,同时切换环境

这时候就需要一个在root前面加上 - 来切换,切换完成后,用户和shell环境都切换为root

[root@mufenggrow mufeng]# ssh mufeng@192.168.1.101
mufeng@192.168.1.101's password: 
Last login: Wed Jan 25 17:10:32 2023 from mufenggrow
[mufeng@mufenggrow ~]$ pwd
/home/mufeng
[mufeng@mufenggrow ~]$ su - root
密码:
上一次登录:三 125 17:11:50 CST 2023pts/1 上
[root@mufenggrow ~]# pwd
/root
[root@mufenggrow ~]# 

3.2 切换到指定用户

从root用户切换到普通用户,无需输入密码:

[root@mufenggrow ~]# su - mufeng
上一次登录:三 125 17:16:59 CST 2023从 mufenggrowpts/2 上
[mufeng@mufenggrow ~]$ exit
登出
[root@mufenggrow ~]# su mufeng
[mufeng@mufenggrow root]$ 

可以看到不加横线的时候,切换过去之后,还是在root目录上。

也就是说,使用- 表示连同shell环境一同切换。

3.3 不切换成root,但执行root才能执行的命令

案例一: 不切换成root,执行head -n 3 /etc/passwd

此时会用到 -c参数
-c, --command <命令> 使用 -c 向 shell 传递一条命令

[mufeng@mufenggrow ~]$ whoami
mufeng
[mufeng@mufenggrow ~]$ head -n 3 /etc/shadow
head: 无法打开"/etc/shadow" 读取数据: 权限不够

[mufeng@mufenggrow ~]$ su - root -c "head -n 3 /etc/passwd"
密码:
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

需要注意的是: -c后面的命令一定要加上 双引号。

案例二:不切换root,执行lastb, 执行后返回原用户

[mufeng@mufenggrow ~]$ whoami
mufeng
## 不切换成root用户,但执行lastb命令
[mufeng@mufenggrow ~]$ su - root -c lastb
密码:

btmp begins Thu Dec  8 19:36:40 2022

## 切换用户执行命令,执行玩之后返回原用户
[mufeng@mufenggrow ~]$ su -c ls  root
密码:
anaconda-ks.cfg  initial-setup-ks.cfg  test  公共  模板  视频  图片  文档  下载  音乐  桌面

su命令的缺憾

su命令的局限在于,如果主机是多人管理的环境,如果大家都用su命令切换至root身份,每个人都需要知道root密码,非常不安全。

su 和su- 的区别

su命令和su -命令最大的本质区别就是:

  • 前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;
  • 而后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误

总结

💕💕💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!✨ ✨ ✨
🍻🍻🍻如果你喜欢的话,就不要吝惜你的一键三连了~

请添加图片描述
在这里插入图片描述

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

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

相关文章

【MySQL】第十部分 常用的聚合函数

【MySQL】第十部分 常用的聚合函数 文章目录【MySQL】第十部分 常用的聚合函数10. 常用的聚合函数10.1 MIN和MAX函数10.2 COUNT函数10.3 AVG和SUM函数10.4 GROUP BY10.5 HAVING总结10. 常用的聚合函数 定义: 对一组数据进行汇总的函数&#xff0c;输入的是一组数据的集合&…

英语学习打卡day5

2023.1.25 1.aqua n.水;溶液;浅绿色 The construction of underground aqua storage tank 地下水储罐的建设 2.do sth for dear life 拼命做某事 If you do something for dear life, you do it with as much effort as possible, usually to avoid danger. 3. 4.swoop …

vue-grid-layout数据可视化图表面板优化过程所遇问题汇总

对于drag事件不熟悉的&#xff0c;请先阅读&#xff1a;《drag事件详解&#xff1a;html5鼠标拖动排序及resize实现方案分析及实践》之前老项目grafana面板&#xff0c;如下图所示&#xff08;GEM添加图表是直接到图表编辑&#xff0c;编辑完成后自动插入到面板最后&#xff09…

Flume集群安装部署、Kafka集群安装部署以及Maxwell安装部署实战

1、Flume集群安装部署 1.1、安装地址 Flume官网地址&#xff1a;http://flume.apache.org/文档查看地址&#xff1a;http://flume.apache.org/FlumeUserGuide.html下载地址&#xff1a;http://archive.apache.org/dist/flume/ 1.2、安装部署 将apache-flume-1.9.0-bin.tar.…

Redis实现笔记点赞排行榜 | 黑马点评-达人探店

一、发布探店笔记 探店笔记类似点评网站的评价&#xff0c;往往是图文结合。对应的表有两个 探店笔记表&#xff08;主键、商户id、用户id、标题、文字、图片、探店文字描述、点赞数量、评论数量&#xff09;评价表&#xff08;笔记的评价&#xff09;先上传图片请求一次保存…

【Java基础】--Java排序

【Java基础】--Java排序1、选择排序(Select Sort)2、冒泡排序(Bubble Sort)3、插入排序(Insert Sort)4、希尔排序(Shell Sort)5、归并排序(Merge Sort)6、快速排序(Quick Sort)7、堆排序(Heap Sort)小结待排序的元素需要实现 Java 的 Comparable 接口&#xff0c;该接口有 com…

Facebook SEO中参与度的重要性

参与度&#xff0c;也就是大家所说的浏览量&#xff0c;在 Facebook SEO中也叫做页面访问者参与度。一般来说&#xff0c; Facebook的用户在上面停留的时间越长代表着它在用户心目中的形象越好&#xff0c;这也是为什么 Facebook上的访客愿意打开自己的 Facebook页面让好友帮忙…

使用vite构建vue3项目详细介绍(ts+pinia+sass+vue-router+axios+element-plus)

使用vite构建vue3项目详细介绍(tspiniasassvue-routeraxioselement-plus) 1. 创建项目 npm init vitelatest 2. 配置 vite.config.ts path需要安装--npm install types/node --save-dev import vue from vitejs/plugin-vue; import { resolve } from path; import { defineC…

Jupyter的安装与默认目录的切换

下载与安装 清华大学开源软件镜像站 使用国内镜像下载更快&#xff0c;官网下载很慢 下载msi镜像文件&#xff0c;打开安装&#xff1a; 安装完成后得到4个文件 Reset Spyder...和Anaconda Powershell....都是相应的配置&#xff0c;其中后者是Jupyter和anaconda的dos命令窗口…

Coolify系列02-从0到1超详细手把手教你上手Coolify

重启 如果由于某种原因&#xff0c;你的实例崩溃了&#xff0c;你可以用下面的命令重新启动它: wget -q https://get.coollabs.io/coolify/install.sh \ -O install.sh; sudo bash ./install.sh -r防火墙设置 您需要在防火墙中允许以下端口 Coolify: 3000 (required)Revers…

【Mysql】Mysql的存储引擎

【Mysql】Mysql的存储引擎 文章目录【Mysql】Mysql的存储引擎1.概述2. 特点2.1 InnoDB2.2 MyISAM2.3 Memory2.4 区别3. 选择1.概述 **存储引擎&#xff1a;存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。**存储引擎是基于表的&#xff0c;而不是 基于库的&…

HTTPS工作原理详解加密(TLS握手)过程

HTTPS概念 HTTPS就是一个有安全保障的HTTP通信&#xff0c;我们都知道&#xff0c;http是明文传输的&#xff0c;http报文是人肉眼就可识别的ASCII码&#xff0c;在通信过程中&#xff0c;http报文很容易被黑客窃听、篡改、伪造&#xff0c;而在互联网交易中&#xff0c;我们必…

【1】初识Linux

学习笔记目录 学习教程&#xff1a;B站 “黑马程序员” 初识Linux--入门Linux基础命令--会用Linux权限管控--懂权限Linux实用操作--熟练实战软件部署--深入掌握脚本&自动化--用的更强项目实战--学到经验云平台技术--紧跟潮流 操作系统概述 1.计算机由硬件和软件两个主要…

AcWing 12. 背包问题求具体方案

AcWing 12. 背包问题求具体方案AcWing 12. 背包问题求具体方案&#xff08;1&#xff09;问题&#xff08;2&#xff09;分析&#xff08;3&#xff09;代码AcWing 12. 背包问题求具体方案 &#xff08;1&#xff09;问题 &#xff08;2&#xff09;分析 我们先看一下这道题中…

tomcat更改默认端口

如下图把conf目录下的server.xml的下图所示处由原来的8080改为需要的即可&#xff1b;当前改为8087&#xff1b;保存之后重启tomcat&#xff1b; 网上一个资料说如果要运行2个tomcat&#xff0c;把下图的8009改为自己的&#xff0c;例如18009&#xff0c; 把下图的8005改为自己…

pythpon基础:创建文件索引升级版

需求环境 这是公司的一个需求&#xff0c;有一份很庞大的数据由好多视频文件组成&#xff0c;总共有12T左右&#xff0c;视频来源是一些下载的视频素材。每隔一段时间就要将一部分筛选好的视频文件剪切到server02服务器进行转码&#xff0c;筛选没被选中的文件将被删除。从下载…

5. 蒙特卡洛方法

蒙特卡洛方法5. 离轨策略5.1 策略评估&#xff08;基于重要度采样&#xff09;5.1.1 计算目标策略下的状态值5.1.2 蒙特卡洛算法&#xff08;状态值估计&#xff09;5.1.3 增量式的实现5.2 策略迭代5.3 减少重要性采样方差的方法5.3.1 折扣敏感的重要性采样5.3.2 每决策重要性抽…

go 语言 string 类型思考

string 作为 go 语言中的基础类型&#xff0c;其实有一些需要反复揣摩的&#xff0c;可能是我们使用的场景太简单&#xff0c;也可能是我们不需要那可怜的一点优化来提高性能&#xff0c;对它也就没那么上心了。 文章运行环境&#xff1a;go version go1.16.6 darwin/amd64 并…

浅析Java中的final关键字

一.final关键字的基本用法 在Java中&#xff0c;final关键字可以用来修饰类、方法和变量&#xff08;包括成员变量和局部变量&#xff09;。下面就从这三个方面来了解一下final关键字的基本用法。 1.修饰类 当用final修饰一个类时&#xff0c;表明这个类不能被继承。也就是说&a…

ACL访问控制的基本实例

典型案例&#xff1a; 配置需求∶ 在Router上部署基本ACL后&#xff0c;ACL将试图穿越Router的源地址为192.168.1.0/24网段的数据包过滤掉&#xff0c;并放行其他流量&#xff0c;从而禁止192.168.1.0/24网段的用户访问Router右侧的服务器网络。 配置&#xff1a; 1、Router已…