侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux su命令:如何轻松地切换用户和执行高级操作(附实例)

Linux su命令介绍

Linux su(英文全拼:switch user)命令用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码¹。su命令可以让普通用户临时获得超级用户的权限,执行一些需要高级权限的操作²。su命令也可以切换到其他非root用户,只要知道该用户的密码²。

适用的Linux版本

su命令是一个标准的Linux命令,适用于大多数的Linux发行版,如Ubuntu, Debian, Fedora, CentOS等。如果某些Linux系统没有安装su命令,可以使用以下命令进行安装:

  • 对于使用apt-get的系统(如Ubuntu, Debian),可以执行sudo apt-get install util-linux³。
  • 对于使用yum的系统(如CentOS 7),可以执行sudo yum install util-linux³。
  • 对于使用dnf的系统(如CentOS 8),可以执行sudo dnf install util-linux³。

Linux su命令的基本用法

su命令的语法格式如下:

su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]

其中,各个参数的含义如下:

  • -f--fast:不必读启动档(如 csh.cshrc 等),仅用于 csh 或 tcsh。
  • -m -p--preserve-environment:执行 su 时不改变环境变数。
  • -c command--command=command:变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者。
  • -s shell--shell=shell:指定要执行的 shell (bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell。
  • --help:显示说明文件。
  • --version:显示版本资讯。
  • - -l--login:这个参数加了之后,就好像是重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 root。
  • USER:欲变更的使用者帐号。
  • ARG:传入新的 shell 参数。

Linux su命令的常用选项说明

su命令有很多选项,但是最常用的有以下几个:

选项说明
-c command在切换用户后执行指定的命令,然后退出。
-l切换用户并改变环境变数和工作目录。
-s shell指定要执行的shell。
-u user指定要切换到的用户。

Linux su命令的实例

以下是一些su命令的实例:

  • 变更帐号为 root 并在执行 ls 指令后退出变回原来使用者
su -c ls root
  • 变更帐号为 root 并传入 -f 参数给新执行的 shell
su root -f
  • 变更帐号为 clsung 并改变工作目录至 clsung 的家目录(home dir)
su - clsung
  • 切换用户
hnlinux@bashcommandnotfound.cn:~$ whoami #显示当前用户
hnlinux
hnlinux@bashcommandnotfound.cn:~$ pwd #显示当前目录
/home/hnlinux
hnlinux@bashcommandnotfound.cn:~$ su root #切换到root用户
密码:
root@bashcommandnotfound.cn:/home/hnlinux# whoami
root
root@bashcommandnotfound.cn:/home/hnlinux# pwd
/home/hnlinux
  • 切换用户,改变环境变数
hnlinux@bashcommandnotfound.cn:~$ whoami #显示当前用户
hnlinux
hnlinux@bashcommandnotfound.cn:~$ pwd #显示当前目录
/home/hnlinux
hnlinux@bashcommandnotfound.cn:~$ su - root #切换到root用户
密码:
root@bashcommandnotfound.cn:/home/hnlinux# whoami
root
root@bashcommandnotfound.cn:/home/hnlinux# pwd #显示当前目录
/root
  • 使用 sudo 命令执行 su 命令,不需要输入 root 密码
hnlinux@bashcommandnotfound.cn:~$ sudo su #切换到root用户
[sudo] hnlinux 的密码:
root@bashcommandnotfound.cn:/home/hnlinux#
  • 使用 sudo -i 命令切换到 root 用户,不需要输入 root 密码
hnlinux@bashcommandnotfound.cn:~$ sudo -i #切换到root用户
[sudo] hnlinux 的密码:
root@bashcommandnotfound.cn:~#
  • 使用 su 命令切换到其他非 root 用户,需要输入该用户的密码
hnlinux@bashcommandnotfound.cn:~$ su bob #切换到bob用户
密码:
bob@bashcommandnotfound.cn:/home/hnlinux$
  • 使用 su 命令切换到其他非 root 用户,并执行指定的命令
hnlinux@bashcommandnotfound.cn:~$ su -c 'echo $HOME' bob #切换到bob用户并打印其家目录
密码:
/home/bob
  • 使用 su 命令切换到其他非 root 用户,并指定要执行的 shell
hnlinux@bashcommandnotfound.cn:~$ su -s /bin/zsh bob #切换到bob用户并使用zsh作为shell
密码:
bob@bashcommandnotfound.cn ~ %

Linux su命令的注意事项

  • 使用 su 命令时,如果不加 - 参数,只是切换身份,但是环境变数依然是普通用户的。如果要完全切换到新用户的环境,建议使用 - 参数。
  • 使用 su 命令时,如果不指定要切换的用户,默认是 root 用户。如果要切换到其他用户,需要知道该用户的密码。
  • 使用 sudo 命令时,需要输入当前用户的密码,而且当前用户必须在 sudoers 文件中有相应的权限。使用 sudo 命令可以避免输入 root 密码或其他用户的密码。
  • 使用 sudo -i 命令可以直接切换到 root 用户,并且不改变工作目录。这个命令相当于执行 sudo su -
0

评论区