手册页部分 1M: 系统管理命令

退出打印视图

更新时间: 2014 年 7 月
 
 

su(1M)

名称

su - 成为超级用户或其他用户

用法概要

su [-] [username [arg...]]

描述

su 命令允许用户在不注销的情况下成为另一个用户或者承担某个角色。缺省情况下 usernameroot(超级用户)。

要使用 su,必须提供相应的口令(除非调用者已经是 root)。如果口令不正确,su 将创建一个新的 shell 进程,该进程将真实有效的用户 ID、组 ID 和补充组列表设置为指定的 username 的相应内容。此外,新的 shell 的项目 ID 会设置为指定用户的缺省项目 ID。请参见 getprojent(3PROJECT)setproject(3PROJECT)。新 shell 将是在 username 的口令文件条目的 shell 字段中指定的 shell(请参见 passwd(4))。如果未指定任何 shell,将使用 /usr/bin/sh(请参见 sh(1))。如果请求了超级用户特权,并且不能使用 exec(2) 调用超级用户的 shell,则使用 /sbin/sh 作为回退。要返回到正常用户 ID 特权,请键入 EOF 字符 (CTRL-D) 退出新的 shell。

在命令行上提供的其他任何参数都将传递给新 shell。在使用 sh 之类的程序时,–c string 形式的 arg 将使用 shell 执行 string–rarg 为用户提供受限 shell。

要创建登录环境,命令 “su –” 将执行以下操作:

  • 除了已经传播的内容外,还会传播指定用户的环境中的 LC* 和 LANG 环境变量。

  • 传播用户环境中的 TZ。如果在用户的环境中没有 TZ,su 将使用 /etc/default/login 中的 TIMEZONE 参数的 TZ 值。

  • 将 MAIL 设置为 /var/mail/new_user

如果 su 的第一个参数是连字符 (-),则将环境更改为用户以指定用户身份实际登录时应有的环境。否则将继承环境,但 $PATH 除外,它由 /etc/default/su 中的 PATH 和 SUPATH 控制。

所有使用 su 成为其他用户的尝试都记录在日志文件 /var/adm/sulog 中(请参见 sulog(4))。

安全

su 使用 pam(3PAM) 和服务名称 su 进行验证、帐户管理和凭证建立。

示例

示例 1 成为用户 bin,同时保留以前导出的环境

要在成为用户 bin 的同时保留您以前导出的环境,请执行:

example% su bin
示例 2 成为用户 bin,并更改为 bin 的登录环境

要成为用户 bin 但将环境更改为 bin 最初登录时的环境,请执行:

example% su - bin
示例 3 使用用户 bin 的环境和权限执行命令

要使用用户 bin 的临时环境和权限执行命令,请键入:

example% su - bin -c "command args"

环境变量

出于安全考虑,删除了带 LD_ 前缀的变量。因此,在成为用户 bin 时,su bin 将不会获取以前导出的带 LD_ 前缀的变量。

如果未在环境中设置任何 LC_* 变量(LC_CTYPE、LC_MESSAGES、LC_TIME、LC_COLLATE、LC_NUMERIC 和 LC_MONETARY)(请参见 environ(5)),则每个相应语言环境类别的 su 运行行为由 LANG 环境变量的值确定。如果设置了 LC_ALL,则会使用其内容覆盖 LANG 和其他 LC_* 变量。如果在环境中未设以上任何变量,su 的行为方式取决于 “C”(美国样式)语言环境。

LC_CTYPE

确定 su 如何处理字符。LC_CTYPE 设置为有效值时,su 可以显示和处理包含适用于该语言环境的有效字符的文本和文件名。su 可以显示和处理扩展 Unix 代码(Extended Unix Code, EUC)字符,其中任何一个单独的字符都可以为 123 字节宽。su 也可以处理 12 或更多列宽度的 EUC 字符。在 “C” 语言环境中,只有 ISO 8859-1 中的字符有效。

LC_MESSAGES

确定如何显示诊断和信息性消息。这包括消息的语言和风格,以及肯定性和否定性响应的正确形式。在 "C" 语言环境中,消息以程序自身中的缺省形式显示(大多数情况下,为美式英文)。

文件

$HOME/.profile

shksh 的用户登录命令

/etc/passwd

系统的口令文件

/etc/profile

系统范围的 shksh 登录命令

/var/adm/sulog

日志文件

/etc/default/su

此文件中的缺省参数包括的:

SULOG

如果已定义,则所有对其他用户的 su 尝试都会记录在指示的文件中。

CONSOLE

如果已定义,则所有为了 rootsu 的尝试都会记录在控制台上。

PATH

缺省路径 (/usr/bin:)

SUPATH

调用 su 的用户到 root 的缺省路径。 (/usr/sbin:/usr/bin)

SYSLOG

确定是否应使用 syslog(3C) LOG_AUTH 工具记录所有 su 尝试。LOG_NOTICE 消息是为 su 向 root 生成的,LOG_INFO 消息是为 su 向其他用户生成的,LOG_CRIT 消息是为失败的 su 尝试生成的。

/etc/default/login

此文件中的缺省参数包括的:

SLEEPTIME

如果存在,则设置要等待的秒数,达到此秒数后会将登录失败消息输出到屏幕并允许另一次登录尝试。缺省值为 4 秒。最小值为 0 秒。最大值为 5 秒。

sulogin(1) 都受 SLEEPTIME 的值影响。

TIMEZONE

设置 shell 的 TZ 环境变量。

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/core-os

另请参见

csh(1)env(1)ksh(1)login(1)roles(1)sh(1)syslogd(1M)exec(2)getprojent(3PROJECT)setproject(3PROJECT)pam(3PAM)pam_authenticate(3PAM)pam_acct_mgmt(3PAM)pam_setcred(3PAM)pam.conf(4)passwd(4)profile(4)sulog(4)syslog(3C)attributes(5)environ(5)