su

改换用户身份


语法格式

su [-flmp] [-c cmd] [-s shell] [--session-command=cmd] [-] [user [args]]
su [--help] [--version]

命令简介

su命令用于临时改换用户身份,以指定用户的身份(有效用户ID与用户组ID)访问系统。其中,选用的命令参数user是目标用户。如果未指定用户参数,默认的目标用户是超级用户。使用的Shell取自用户账号的Shell字段。如果未指定,使用/bin/sh。如果指定的目标用户有密码,su命令将会提示用户输入目标用户的密码,除非当前的用户是超级用户。args是传递给Shell的参数,通常很少使用。

通常,su命令并不改变当前的工作目录,只是根据目标用户的账号信息,设置HOME与SHELL环境变量。如果目标用户不是超级用户,还要使用指定的参数user设置USER与LOGNAME两个环境变量。

su命令支持PAM认证,必要时可以编辑/etc/pam.d/su文件,定制su命令。

命令选项

-, -l, --login  调用目标用户的注册Shell,建立相应的运行环境(除修改前述的HOME、SHELL、USER与LOGNAME变量外,还要设置PATH环境变量),最终转入目标用户的主目录。

-c cmd, --command=cmd  把“-c”选项与指定的命令一起提交Shell执行。指定的命令可以包含选项和参数,在此情况下,整个命令行前后要加双引号。

-f, --fast  把“-f”选项传递给Shell。对于csh或tcsh,“-f”选项表示禁止执行启动文件,从而能够快速启动Shell。但对于Bourne系列的bash而言,“-f”选项仅仅意味着禁止执行文件名模式的匹配与替换。

-m, -p, --preserve-environment  禁止修改HOME、USER、LOGNAME以及SHELL等环境变量。使用当前的Shell取代目标用户的注册Shell访问系统,除非运行su命令的用户是普通用户,且目标用户的注册Shell是限制的Shell。

-s shell, --shell=shell  运行指定的Shell取代目标用户的注册Shell,除非运行su命令的用户是普通用户,且目标用户的注册Shell是限制的Shell。

--session-command=cmd  把“-c”选项与指定的命令一起提交Shell执行,但不创建新的交互会话。

应用实例

1. 使用su命令获取超级用户的访问权限,输入超级用户密码之后即可在不改变运行环境的情况下运行特权命令,执行系统维护任务,直至在运行exit命令或按下Ctrl-D组合键之后返回。

$ su
Password:
#

2. 以超级用户的身份运行指定的命令,然后立即返回。

$ kill -s 9 1619
-bash: kill: (1619) - Operation not permitted
$ su -c "kill -s 15 1619"
Password:
$

3. 切换到另外一个用户,以目标用户的身份访问系统。

$ su – cathy
Password:
$ id
uid=501(cathy) gid=501(cathy) groups=501(cathy) …
$

索引:A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z