首页 > 系统相关 >0063. shell命令--su

0063. shell命令--su

时间:2024-12-31 10:01:50浏览次数:3  
标签:shell -- 用户 su etc 0063 MineGi root

目录

63. shell命令--su

功能说明

语法格式

选项说明

实践操作

注意事项

其它事项


63. shell命令--su

功能说明

        su 命令在 Linux 和 Unix 系统中用于切换当前用户到另一个用户,通常是切换到超级用户(root)。这个命令允许用户以另一个用户的身份执行命令,这对于执行需要更高权限的任务非常有用。

        su 命令来自英文单词 switch use r的缩写,其功能是切换用户身份。将管理员切换至任意用户身份时无须密码验证,而将普通用户切换至任意用户身份时均需密码验证。另外,添加单个减号(-)参数表示完全的身份变更,不保留之前用户的任何环境变量信‍息。

语法格式

su [选项] [用户名]

SYNOPSIS
       su [options...] [-] [user [args...]]

选项说明

- 或 -l 或 --login:以登录 shell 的方式启动目标用户的 shell 环境。这意味着会加载目标用户的 shell 配置文件(如 .bash_profile、.bashrc 等),并且环境变量也会切换到目标用户的配置。
-c <指令>或--command=<指令>:以指定用户的身份执行一个命令,然后退出。这对于执行需要更高权限的单次命令很有用。
--preserve-environment:尽量保持当前的环境变量不变,但在切换到 root 用户时,出于安全考虑,某些环境变量(如 PATH)可能会被覆盖。
-f 或 --fast:适用于csh与tsch,使shell不用去读取启动文件;

-m,-p或--preserve-environment:变更身份时,不要变更环境变量;
-s<shell>或--shell=<shell>:指定要执行的shell;
--help:显示帮助;
--version;显示版本信息。

实践操作

0. 环境准备
# 创建两个用户并设置密码为123456
seq 2|sed -r 's#(.*)#useradd MineGi-\1;echo '123456'|passwd --stdin MineGi-\1#g'|bash
tail -2 /etc/passwd

1. 由 root 用户切换到普通用户
whoami
pwd
env |grep "^PWD"
su - MineGi-1    #由 root 用户切换到普通用户不需要输入密码
env |grep "^PWD"    #家目录改变了
pwd

2. 由普通用户切换至普通用户
whoami
env |grep "^PWD"
su MineGi-2    #由普通用户切换至普通用户需要输入密码
env |grep "^PWD"    #家目录没改变,是因为没加选项 - 
pwd
ls
whoami

3. 普通用户使用 root 身份执行命令
ls -la /root    #没有权限查看
su -c 'ls -la /root'    #需要输入root密码

4. 由普通用户切换至 root 用户
su -    # root 可以省略,输入 root 密码
whoami
env |grep "^PWD"

5. 让系统开机时自动以普通用户启动指定的服务脚本
cp /etc/rc.local{,.bak}    #先备份一下
ll /etc/rc.local{,.bak}
echo "hostname -I" >/tmp/test.sh    #写个测试脚本
cat /tmp/test.sh    #看一下内容
sh /tmp/test.sh    #执行一下测试
echo "su - MineGi-1 -c '/bin/sh /tmp/test.sh' >/home/MineGi-1/file.txt" >>/etc/rc.local    #写到文件中
cat /etc/rc.local    #看一下内容
source /etc/rc.local    #直接加载该文件
ll /home/MineGi-1/file.txt
cat /home/MineGi-1/file.txt
cat /etc/rc.local.bak >/etc/rc.local    #还原文件内容
cat /etc/rc.local

6. 企业面试案例
使用用户登录到 Linux系统后,发现提示符为 "-bash-4.2$" 异常情况,请问该如何恢复到正常的 Linux 命令行提示符情况?

6.1 模拟故障
ls -la /home/MineGi-1/
rm -rf /home/MineGi-1/.bash*
ls -la /home/MineGi-1/
su - MineGi-1
exit 或 ctrl + D

6.2 解决方案
cp -ar /etc/skel/.bash* /home/MineGi-1/
su - MineGi-1
rm -rf .bash*
bash
cp -ar /etc/skel/.bash* ~
bash
# source ./.bash_profile ./.bashrc    #还未生效,则执行此命令  

# 若是没有权限复制文件,则切换到 root 用户下再复制
# su - root 
# cp -ar /etc/skel/.bash* /home/MineGi-1

注意事项

  • 使用 su 命令时,如果你已经以 root 身份登录,则可以直接切换到其他用户而无需输入密码。
  • 在生产环境中,由于 su 命令要求输入目标用户的密码,这可能会在某些自动化脚本中造成不便。为此,可以考虑使用 sudo 命令,它允许通过配置文件(/etc/sudoers)精细控制哪些用户能以哪些用户的身份执行哪些命令。
  • 出于安全考虑,建议仅在必要时才切换到 root 用户,并尽量使用 sudo 来执行需要更高权限的命令。
  • 使用 su 切换到 root 用户时,应特别小心,因为 root 用户拥有对系统的完全访问权限,可以执行任何操作,包括删除重要文件或修改系统配置。
  • 最小权限原则:总是尝试以最小必要的权限运行应用程序和用户账户。只有在确实需要时才提升权限。
  • 定期审计:定期检查和审计系统中su和sudo的使用情况,确保没有未经授权的访问或不当的配置。
  • 教育用户:培训用户了解su和sudo的正确使用方法,以及它们潜在的安全风险。
  • 使用强密码和两因素认证:为root账户和其他重要账户设置强密码,并考虑使用两因素认证来增加安全性。
  • 更新和维护:保持系统和所有已安装软件的更新,以修补已知的安全漏洞。

其它事项

记录会话

        在切换到 root 用户或其他用户时,可能希望记录会话以供审计或回溯。这可以通过在 su 命令中使用 script 命令实现。例如:

script -a /path/to/logfile.txt su -

        这将记录整个su会话到指定的日志文件中。-a 选项用于追加内容到现有文件,如果不希望覆盖原有日志。

避免使用 su 切换到 root 进行日常任务

        如前所述,由于 root 用户的权限过大,频繁使用它进行日常任务会增加误操作的风险。建议只在确实需要 root 权限时才使用,并通过 sudo 进行更细粒度的权限控制。

使用环境变量管理不同用户的配置

        虽然 su --preserve-environment 选项旨在保留环境变量,但在实践中,出于安全考虑,它可能不会保留所有变量。可以考虑在用户的shell配置文件中(如.bashrc或.bash_profile)设置需要的环境变量,以便在通过su切换到该用户时自动加载。

限制root登录

        对于大多数服务器环境,最好完全禁用 root 用户的直接登录,而是通过 sudo 从普通用户账户提权。这可以通过修改 SSH 配置文件(通常是 /etc/ssh/sshd_config )并设置 PermitRootLogin no 来实现。

审计su命令的使用

        大多数Linux发行版都配备了审计工具(如 auditd ),可以用来监控对关键文件和命令的访问,包括 su 命令。配置适当的审计规则可以帮助识别潜在的滥用或安全漏洞。

标签:shell,--,用户,su,etc,0063,MineGi,root
From: https://blog.csdn.net/linuxxiaocaizi/article/details/144772265

相关文章

  • 0064. shell命令--visudo
    目录64.shell命令--visudo功能说明语法格式选项说明实践操作授权格式64.shell命令--visudo功能说明        visudo是Linux系统中用于安全地编辑sudoers文件的命令。sudoers文件是sudo的主要配置文件,它决定了哪些用户和组可以以什么方式执行哪些......
  • 0062. shell命令--id
    目录62.shell命令--id功能说明语法格式选项说明实践操作注意事项62.shell命令--id功能说明        id命令在Linux和类Unix系统中非常有用,它主要用于显示当前用户或指定用户的用户ID(UID)、所属群组ID(GID)以及所属的其他群组ID。这个命令对于系统管理和......
  • 【Rust自学】8.6. HashMap Pt.2:更新HashMap
    8.6.0.本章内容第八章主要讲的是Rust中常见的集合。Rust中提供了很多集合类型的数据结构,这些集合可以包含很多值。但是第八章所讲的集合与数组和元组有所不同。第八章中的集合是存储在堆内存上而非栈内存上的,这也意味着这些集合的数据大小无需在编译时就确定,在运行时它们......
  • 步进电机驱动器A4988SETTR-T应用原理图设计
    一、A4988SETTR-T简介:        A4988SETTR-T是一款完整的微步进电机驱动器与内置的转换器,易于操作。它被设计用于在全步、半步、八步和十六步模式中操作双极步进电机,输出驱动容量高达35V和±2A。                A4988SETTR-T包括一个固定的断时电流......
  • MOTS-c 线粒体衍生肽
    MOTS-c(human)是一种有生物活性的肽。(高分辨率测序的最新进展导致发现了源自线粒体基因组的独特肽。目前已鉴定出8种肽:护脑素、12StRNA-c(MOTS-c)的线粒体开放阅读框和6种小肽。护脑素样肽(SHLP1-6)。所有这些肽均从线粒体释放到细胞质中,并与延长寿命和细胞活力、减......
  • 界面控件DevExpress v24.2新版亮点 - 人工智能(AI)
    DevExpress拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpressDashboardeXpressApp框架、适用于VisualStudio的CodeRush等一系列辅助工具。屡获大奖的软件开发平台DevExpress今年第一个重要版本v23.1正式发布,该版本拥有众多新产品和数十个具有高影......
  • AI技术在药品说明书的应用,开启精准用药的新时代
    药品说明书,作为指导患者安全用药的重要指南,长期以来却因其专业性强、信息量大、更新滞后等问题,难以被普通大众充分理解和利用。如今,人工智能(AI)的崛起为药品说明书的革新带来了曙光。AI正以其强大的数据处理和学习能力,深度赋能药品说明书的各个环节,从生成、更新到解读、应用,全......
  • 一、安装Node.js
    文章目录一、Node.js详解二、下载Node.js三、安装Node.js四、设置node_global和node_cache五、设置环境变量六、常用npm命令一、Node.js详解  Node.js是当下编程领域极具影响力的工具,官方定义其为“anopen-source,cross-platformJavaScriptruntime......
  • 傅里叶变换的乘法性质&卷积定理
    傅里叶变换是将一个信号从时域转换到频域的工具。傅里叶变换有许多重要的性质,其中乘法性质和卷积定理是两个非常重要的概念。乘法性质:时域中的乘法对应于频域中的卷积。卷积定理:时域中的卷积对应于频域中的乘法。乘法性质傅里叶变换的乘法性质表明,如果两个函数......
  • 【国内SEO优化指南】
    国内SEO优化指南国内SEO(搜索引擎优化)是指针对中国主要搜索引擎,如百度,进行的一系列优化措施,旨在提高网站在自然搜索结果中的可见性。以下是国内SEO优化的一些关键点和指南:一、基础准备1.明确目标与受众设定清晰的目标:确定你希望通过SEO实现的具体业务目标,如增加流量、提......