Linux基础:su命令使用方法介绍

Linux基础:su命令使用方法介绍这篇文章通过具体的示例来介绍 Linux 下 su 命令的常见用法

在这里插入图片描述
这篇文章通过具体的示例来介绍Linux下su命令的常见用法。

事前准备

  • 准备如下用户
用户名 密码
liumiao liumiaocn
liumiaocn liumiaocn
  • 操作系统:CentOS 7
[root@liumiaocn ~]# useradd liumiao [root@liumiaocn ~]# useradd liumiaocn [root@liumiaocn ~]# passwd liumiao Changing password for user liumiao. New password: BAD PASSWORD: The password contains the user name in some form Retype new password: passwd: all authentication tokens updated successfully. [root@liumiaocn ~]# [root@liumiaocn ~]# passwd liumiaocn Changing password for user liumiaocn. New password: BAD PASSWORD: The password contains the user name in some form Retype new password: passwd: all authentication tokens updated successfully. [root@liumiaocn ~]# [root@liumiaocn ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@liumiaocn ~]# 

用法1: 切换用户

su是switch user的缩写,自然就是完成切换用户之用,比如:

[root@liumiaocn ~]# id uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [root@liumiaocn ~]# su liumiao [liumiao@liumiaocn root]$ id uid=1000(liumiao) gid=1000(liumiao) groups=1000(liumiao) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [liumiao@liumiaocn root]$ 

注意事项:

  • 从root切换为其他用户,不需密码输入,否则需要输入密码
  • su 用户名 和 su – 用户名方式的区别在于是否读入用户配置信息
[liumiao@liumiaocn root]$ id uid=1000(liumiao) gid=1000(liumiao) groups=1000(liumiao) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [liumiao@liumiaocn root]$ [liumiao@liumiaocn root]$ su liumiaocn Password: [liumiaocn@liumiaocn root]$ id uid=1001(liumiaocn) gid=1001(liumiaocn) groups=1001(liumiaocn) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [liumiaocn@liumiaocn root]$ 

用法2: 非交互式输入密码

如果希望嵌在脚本中,则往往需要使用非交互方式输入密码,可考虑使用如下方式:

[liumiaocn@liumiaocn root]$ id uid=1001(liumiaocn) gid=1001(liumiaocn) groups=1001(liumiaocn) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [liumiaocn@liumiaocn root]$ su liumiao < 
   liumiaocn > id > ! Password: uid=1000(liumiao) gid=1000(liumiao) groups=1000(liumiao) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [liumiaocn@liumiaocn root]$ [liumiaocn@liumiaocn root]$ id uid=1001(liumiaocn) gid=1001(liumiaocn) groups=1001(liumiaocn) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [liumiaocn@liumiaocn root]$ [liumiaocn@liumiaocn root]$ id uid=1001(liumiaocn) gid=1001(liumiaocn) groups=1001(liumiaocn) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [liumiaocn@liumiaocn root]$ su - liumiao < 
   liumiaocn > id > ! Password: Last login: Fri Aug 21 08:49:21 EDT 2020 uid=1000(liumiao) gid=1000(liumiao) groups=1000(liumiao) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [liumiaocn@liumiaocn root]$ id uid=1001(liumiaocn) gid=1001(liumiaocn) groups=1001(liumiaocn) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [liumiaocn@liumiaocn root]$ 

用法3: 指定用户执行指定命令

[liumiaocn@liumiaocn root]$ id uid=1001(liumiaocn) gid=1001(liumiaocn) groups=1001(liumiaocn) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [liumiaocn@liumiaocn root]$ su -l liumiao -c id Password: uid=1000(liumiao) gid=1000(liumiao) groups=1000(liumiao) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [liumiaocn@liumiaocn root]$ 

或者

[liumiaocn@liumiaocn root]$ id uid=1001(liumiaocn) gid=1001(liumiaocn) groups=1001(liumiaocn) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [liumiaocn@liumiaocn root]$ su -c id liumiao Password: uid=1000(liumiao) gid=1000(liumiao) groups=1000(liumiao) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [liumiaocn@liumiaocn root]$ 

用法4: su -切换为root用户

[liumiaocn@liumiaocn root]$ su - Password: Last login: Fri Aug 21 08:38:34 EDT 2020 from gateway on pts/0 Last failed login: Fri Aug 21 08:47:59 EDT 2020 on pts/0 There was 1 failed login attempt since the last successful login. [root@liumiaocn ~]# 

用法5: 使用当前环境变量切换用户su -p

[liumiaocn@liumiaocn root]$ id uid=1001(liumiaocn) gid=1001(liumiaocn) groups=1001(liumiaocn) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [liumiaocn@liumiaocn root]$ echo $HOME /home/liumiaocn [liumiaocn@liumiaocn root]$ su -p liumiao Password: bash: /home/liumiaocn/.bashrc: Permission denied bash-4.2$ echo $HOME /home/liumiaocn bash-4.2$ id uid=1000(liumiao) gid=1000(liumiao) groups=1000(liumiao) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 bash-4.2$ 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/220282.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午8:50
下一篇 2026年3月17日 下午8:50


相关推荐

  • Debian命令行安装全指南,从零开始部署你的系统,Debian命令行安装全指南

    Debian命令行安装全指南,从零开始部署你的系统,Debian命令行安装全指南

    2026年3月16日
    2
  • Java 数组转list_java定义list数组

    Java 数组转list_java定义list数组方式一String[]array={“111″,”222″,”333”};Listlist=Arrays.asList(array);//list.add(“444”);list.remove(0);如上图所示,不可进行新增或删除元素的操作。Arrays.asList(array),返回的List是具有固定长度的私有静态内部类java.util.Arrays.ArrayList,所以…

    2022年8月23日
    8
  • dlopen Linux 动态库失败原因与解决办法总结

    dlopen Linux 动态库失败原因与解决办法总结1 dlopen 动态库失败原因 我碰到主要是以下几点 碰到新问题之后再完善 先打个点 动态库位置没有放对地方 dlopen 时候找不到你想操作的动态库解决办法 放到指定目录 头文件没有包全 有不能识别的函数或者标识符解决办法 加一条打印信息 程序运行到这里 会输出不能识别标识符 if handle dlopen myso RTLD NOW NULL

    2026年3月20日
    2
  • 移动硬盘出现参数错误,无法访问的问题

    移动硬盘出现参数错误,无法访问的问题win7连接移动硬盘,使用过程中出现死机,强制重启电脑,开机后移动硬盘出现参数错误无法访问,百度后,尝试用win+r打开运行窗口,输入CHKDSKE:/F/R,其中E换成参数错误的盘符嗲,点击确

    2022年7月2日
    52
  • DNS服务器的配置「建议收藏」

    DNS服务器的配置「建议收藏」DNS(DomainNameServer,域名服务器)是进行域名(domainname)和与之相对应的IP地址(IPaddress)转换的服务器。DNS中保存了一张域名(domainname)和与之相对应的IP地址(IPaddress)的表,以解析消息的域名。域名是Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。1、安装…

    2022年6月4日
    44
  • python中的eval函数的使用详解

    python中的eval函数的使用详解eval 是 Python 的一个内置函数 功能十分强大 这个函数的作用是 返回传入字符串的表达式的结果 就是说 将字符串当成有效的表达式来求值并返回计算结果 eval 函数就是实现 list dict tuple 与 str 之间的转化 同样 str 函数把 list dict tuple 转为为字符串 1 eval 的语法 eval expression globals loc

    2026年3月20日
    2

发表回复

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

关注全栈程序员社区公众号