linux基本功系列之su命令

linux基本功系列之su命令linux 基本功系列之 su 命令 linuxsu

大家好,欢迎来到IT知识分享网。

在这里插入图片描述

一. su命令介绍

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

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

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

二. 语法格式及常用选项

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

 [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 |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

[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环境变量错误

总结

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

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/125907.html

(0)
上一篇 2025-09-23 14:00
下一篇 2025-09-23 14:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信