Linux运维基础之su命令详解

Linux运维基础之su命令详解

su 命令通常与其他命令一起使用,如用于临时提升访问权限的 sudo、用于更改密码的 passwd,以及用于检查当前登录用户的 whoami。了解 su 对于系统管理任务和需要在多用户环境中运行的用户来说至关重要。

因此,让我们开始学习如何有效使用 su 命令来切换用户账户和提升权限。

su 命令的一般语法:

$ su [OPTIONS] [USER [ARGUMENT...]]

1. 使用不同的用户账户登录

su [username]

将用户名传递给 su 命令,密码验证通过后,它将提供一个登录会话。

例 1:切换到根用户

如果运行 su 命令时没有输入用户名,则默认为根用户。系统会提示你输入 root 密码。

$ su
Password: [Enter root password here]
# [You are now in a shell as the root user]

例 2:切换到特定用户

要切换到特定用户,可以指定用户名作为参数。例如,要切换到名为 john 的用户,可以这样做:

$ su john
Password: [Enter john's password here]
$ [You are now in a shell as john]

例 3:以其他用户身份运行命令

你也可以以其他用户的身份运行一条命令,而无需进入他们的 shell。例如,以 john 的身份运行 whoami

$ su -c "whoami" john
Password: [Enter john's password here]
john

2. 使用不同的用户账户登录 + 运行命令

su [username] -c [command]

使用 -c 选项可以在不同的用户账户下运行特定命令,并在当前登录会话中显示结果。

例 1:以根用户身份运行命令

假设你想运行 ls /root 命令来列出 /root 目录的内容,通常只有 root 用户才能访问该目录。你可以使用:

su root -c "ls /root"

执行该命令后,系统会提示你输入 root 密码。通过身份验证后,将执行 ls /root 命令,并查看 /root 目录的内容。

例 2:以其他用户身份运行命令

假设系统中有另一个名为 john 的用户,你想以该用户身份运行位于 /home/john/script.py 的 Python 脚本:

su john -c "python3 /home/john/script.py"

同样,系统会提示你输入 john 账户的密码。通过身份验证后,Python 脚本将以 john 的身份执行。

例 3:运行多条命令

您还可以依次运行多条命令。例如,要切换到一个目录,然后以用户 john 的身份列出目录内容,可以执行以下命令:

su john -c "cd /home/john/documents && ls"

这将切换到 john 用户,导航到 /home/john/documents ,然后列出该目录的内容。

3. 指定 shell

su -s /bin/[shell]

使用 -s 选项将现有默认 shell 更改为其他 shell。

示例:

假设你当前以用户 john 登录,而你想切换到使用 bash shell 的用户 alice 。你可以执行以下命令:

su -s /bin/bash alice

运行此命令后,系统会提示你输入 alice 的密码。如果密码正确,就会切换到 alice 的用户账户,shell 将是 bash

4. 保留用户账户环境

su –p [another_user]

使用 -p 选项可以保留当前用户账户的环境。

示例:

举例说明假设你当前以用户 john 登录,你想切换到用户 alice,但保留 john 的环境变量。

输入以下命令:

su -p alice

系统会提示你输入 alice 的密码。

成功输入密码后,您将切换到用户 alice,但您的环境仍将包含 john 的设置。

更多 Linux 命令

下面罗列了最常见的一些 Linux 命令,您可以根据自己的需要查阅对应命令的详细解析:

目录操作 rmdir · cd · pwd · exa · ls
文件操作 cat · cp · dd · less · touch · ln · rename · more · head
文件系统操作 chown · mkfs · locate
网络 ping · curl · wget · iptables · mtr
搜索和文本处理 find · grep · sed · whatis · ripgrep · fd · tldr
系统信息和管理 env · history · top · who · htop · glances · lsof
用户和会话管理 screen · su · sudo · open

此外,我们还整理 Linux 命令行大全,以帮助大家全面深入地学习 Linux。

评论留言