Linux 系统切换用户命令 su

Linux 系统切换用户命令 su

su - change user ID or become superuser (更改用户 ID 或成为超级用户)

The su command is used to become another user during a login session. Invoked without a username, su defaults to becoming the superuser. The optional argument - may be used to provide an environment similar to what the user would expect had the user logged in directly.
su 用于让用户在登录期间变成另外一个用户。后边不带 username 使用时,su 默认会变成超级用户。可选的选项 -,可以用于提供一个类似于用户直接登录的环境,用户可能期望是这样的。

The Unix command su, which stands for substitute user is used by a computer user to execute commands with the privileges of another user account. When executed it invokes a shell without changing the current working directory or the user environment.
Unix 命令 su (代表替代用户) 由计算机用户用来执行具有另一个用户帐户特权的命令。执行时,它将调用 shell 程序,而不更改当前的工作目录或用户环境。

When the command is used without specifying the new user id as a command line argument, it defaults to using the superuser account (user id 0) of the system.
如果在未指定新用户 ID 的情况下使用该命令,则默认使用系统的超级用户帐户 (用户 ID 0)。

Unlike su, sudo authenticates users against their own password rather than that of the target user (to allow the delegation of specific commands to specific users on specific hosts without sharing passwords among them and while mitigating the risk of any unattended terminals).
sudo 与 su 不同,sudo 验证的是用户自己的密码,而不是目标用户的 (允许特定主机上的特定用户执行特定命令,而不用共享密码,同时减轻无人值守终端的风险)。

substitute ['sʌbstɪtjuːt]:n. 代用品,代替者 vi. 替代 vt. 代替
privilege [ˈprɪvəlɪdʒ]:n. 特权,优待 vt. 给予...特权,特免
invoke [ɪn'vəʊk]:vt. 调用,祈求,引起,恳求

切换用户的命令是 su (switch user)。

-, -l, --login
提供一个类似于用户直接登录的环境,用户可能会希望这样。

When - is used, it must be specified before any username. For portability it is recommended to use it as last option, before any username. The other forms (-l and --login) do not have this restriction.
当使用 - 时,必须在任何用户名之前指定它。为了便于移植,建议在使用任何用户名之前将其用作最后一个选项。其他形式 (-l--login) 没有此限制。

当前环境会传递给新 shell。对于普通用户,$PATH 的值重置为 /bin:/usr/bin,而对于超级用户则是 /sbin:/bin:/usr/sbin:/usr/bin。这会随 /etc/login.defs 中的 ENV_PATH 和 ENV_SUPATH 值改变。

1. 普通用户切换到 root 用户

普通用户切换到 root 用户需要密码 (root 用户的密码)。
$:普通用户
#:root 用户
yongqiang:当前用户用户名
famu-sys:主机名称

1.1 su

yongqiang@famu-sys:~$ pwd
/home/yongqiang
yongqiang@famu-sys:~$
yongqiang@famu-sys:~$ su
密码:
root@famu-sys:/home/yongqiang#
root@famu-sys:/home/yongqiang# exit
exit
yongqiang@famu-sys:~$

1.2 su root

yongqiang@famu-sys:~$ su root
密码:
root@famu-sys:/home/yongqiang#
root@famu-sys:/home/yongqiang# exit
exit
yongqiang@famu-sys:~$

1.3 su - root

yongqiang@famu-sys:~$ su - root
密码:
root@famu-sys:~#
root@famu-sys:~# exit
注销
yongqiang@famu-sys:~$

su 后面不加用户默认切换到 root。
su 不改变当前变量。
su - 改变为切换到用户的变量。
su 只能获得 root 的执行权限,不能获得环境变量。su - 是切换到 root 并获得 root 的环境变量及执行权限。
su 只能切换到管理员用户权限,不使用管理员的登陆脚本和搜索路径。
su - 切换到管理员权限而且使用管理员登陆脚本和搜索路径。

yongqiang@famu-sys:~$ su - root
密码:
root@famu-sys:~#
root@famu-sys:~# logout
yongqiang@famu-sys:~$
yongqiang@famu-sys:~$ su - root
密码:
root@famu-sys:~#
root@famu-sys:~# 注销
yongqiang@famu-sys:~$

终端输入 exit 或 logout 或使用快捷方式 Ctrl + D,可以退回到原来用户。

2. 普通用户切换到普通用户

2.1 切换用户命令 su username

yongqiang@famu-sys:~$ su famu
密码:
famu@famu-sys:/home/yongqiang$
famu@famu-sys:/home/yongqiang$ exit
exit
yongqiang@famu-sys:~$

2.2 切换用户命令 su - username

尽量使用 su - username,否则可能会出现环境变量不对的问题。

yongqiang@famu-sys:~$ su - famu
密码:
famu@famu-sys:~$
famu@famu-sys:~$ exit
注销
yongqiang@famu-sys:~$

3. 文件

/etc/passwd
User account information. (用户账户信息。)

/etc/shadow
Secure user account information. (安全用户账户信息。)

/etc/login.defs
Shadow password suite configuration. (Shadow 密码套件配置。)

4. whoami

yongqiang@famu-sys:~$ whoami
yongqiang
yongqiang@famu-sys:~$
yongqiang@famu-sys:~$ su -
密码:
root@famu-sys:~#
root@famu-sys:~# whoami
root
root@famu-sys:~#
root@famu-sys:~# exit
注销
yongqiang@famu-sys:~$

你可能感兴趣的:(UNIX,-,Linux)