su 命令

用途

更改与会话关联的用户标识。

语法

su [ - ] [ 名称 [ 参数 ... ]]

描述

su 命令将用户凭证更改为 root 用户或由 Name 参数指定的用户,然后开始一个新的会话。 用户名可能包括分布式计算环境 (DCE) 单元规范。
注: 切换到 DCE 用户时,不需要 root 用户来满足 DCE 认证。 在这种情况下,该用户不会获得 DCE 凭证。
任何由 Arguments 参数指定的变量(例如标志或参数),必须与 Name 参数指定的用户所定义的登录 shell 程序相关联。 将这些变量传递到指定用户的登录 shell。 例如,如果用户的登录 shell 程序Fred/usr/bin/csh,可以包括 csh 命令的任何标志,例如 -f 标志。 当 su 命令运行时,它将 -f 标志传递到 csh 命令。 当 csh 命令运行时,-f 标志省略 .cshrc 启动脚本。
注: 如果在 /etc/secvars.cfg 文件中设置了 domainlessgroups 属性,并且用户属于轻量级目录访问协议 (LDAP) 域或文件域, 将从 LDAP 域和文件域访存所有组标识。

以下功能是由 su 命令执行的:

描述
帐户检查 验证用户帐户以确定:该用户帐户存在,已经为 su 命令启用,当前用户是属于被允许使用 su 命令以切换至这个帐户的组,且可以从当前控制终端使用它。
用户认证 使用系统定义的主要用户认证方法确认用户身份。 如果密码过期,那么用户必须提供新密码。
凭证建立 使用用户数据库中的值建立初始用户凭证。 这些凭证定义用户对系统的访问权和可计帐性。
会话启动 如果指定 - 标志,那么 su 命令使用用户数据库和 /etc/environment 文件中的值来初始化用户环境。 如果未使用 - 标志,那么 su 命令不更改目录。

这些功能按照显示的顺序执行。 如果某个功能失败,将不执行以后的功能。 要获取这些功能的语义,请参阅 ckuseracctckuserIDauthenticatesetpcredsetpenv 子例程。

要复原先前会话,请输入exit或按 Ctrl-D 键序列。 这项操作结束由 su 命令调用的 shell,并使您返回以前的 shell、用户标识和环境。

如果 su 命令是从 /usr/bin/tsh shell(可信 shell)运行的,您将从那个 shell 退出。 su 命令不更改控制终端的安全性特征。

每次执行 su 命令时,将在 /var/adm/sulog 文件中产生一个条目。 /var/adm/sulog 文件记录以下信息:日期、时间、系统名称以及登录名。 /var/adm/sulog 文件也记录登录尝试是否成功:+(加号)表示登录成功,-(减号)表示登录失败。

注: 仅当用户的 rlogin登录 属性都设置为 /etc/security/user中的 时,成功使用 命令才会重置 /etc/security/lastlog 文件中的 unsuccessful_login_count 属性。 否则,su 命令不会复位 unsuccessful_login_count,因为管理员经常使用 su 命令来修订用户帐户问题。 用户能通过本地或远程登录来复位属性。

标志

描述
- 指定要设置的进程环境,就好像用户已经使用 login 命令登录系统。 当前环境中无任何东西传播到新的 shell 中。
注: 此行为旨在与备用 UNIX shell 环境兼容,在这些环境中,在 Name 参数之前允许标志选项。

安全性

su 命令是支持 PAM 的带有服务名称 su 的应用程序。 在 /etc/security/login.cfgusw 节中,通过修改 auth_type 属性值来将要使用 PAM 进行认证的系统范围配置设置为作为 root 用户的 PAM_AUTH

启用 PAM 时使用的认证机制取决于 /etc/pam.confsu 服务的配置。 su 命令需要 authaccountpasswordsession 模块类型的 /etc/pam.conf 条目。 为了使su命令在 PAM 身份验证中表现出与标准AIX中类似的行为,必须充分使用 "pam_allowroot模块,并在 "auth和 "accountsu 服务栈中的pam_aix之前调用该模块。 以下列出了在 /etc/pam.confsu 服务的建议配置:
#
# AIX su configuration
#
su auth sufficient /usr/lib/security/pam_allowroot
su auth required /usr/lib/security/pam_aix

su account sufficient /usr/lib/security/pam_allowroot
su account required /usr/lib/security/pam_aix

su session required /usr/lib/security/pam_aix

su password required /usr/lib/security/pam_aix
RBAC 用户注意: 此命令可以执行特权操作。 只有特权用户才能执行特权限定的操作。 有关授权和权限的更多信息,请参阅安全中的特权命令数据库。 有关该命令的权限和授权列表,请参阅 "lssecattr命令或 "getcmdattr子命令。
要获取该命令的完整功能,该角色不仅应该具有 accessauths 权限,还应该具有 aix.security.su 权限。

示例

  1. 要获取 root 用户权限,请输入下列其中一个命令:
    su
    该命令使用有效用户标识和 root 用户特权来运行子 shell 程序。 将要求您输入 root 用户密码。 按下 End-of-File(文件结束符)、Ctrl+D 按键顺序来结束子 shell 程序,并且返回到原始 shell 会话和特权。
    su --
    此命令运行具有有效用户标识和特权的子 shell。root用户。 输入root密码,提示时。 按下 End-of-File(文件结束符)、Ctrl+D 按键顺序来结束子 shell 程序,并且返回到原始 shell 会话和特权。
  2. 获取jim用户,请输入以下命令:
    su jim
    此命令运行具有有效用户标识和特权的子 shelljim.
  3. 要设置环境,就像您已作为以下对象登录一样:jim用户,请输入:
    su  - jim
    这将使用以下命令启动子 shell:jim登录环境。
  4. 要以 root 用户权限运行 backup 命令,然后返回到原始 shell ,请输入:
    su root "-c /usr/sbin/backup -9 -u"
    此命令将在 root 用户的缺省 shell 程序内使用 root 用户权限来运行 backup 命令。 在查询要执行的命令时,必须给出正确的 root 用户密码。
  5. 输入以下其中一条命令来将当前会话的用户凭证更改为 root 用户:

    su -

    su - root

    su - --

    上述命令使用以下命令启动子 shell:root用户的登录环境。

文件

描述
/usr/bin/su 包含 su 命令。
/etc/environment 包含用户环境值。
/etc/group 包含组的基本属性。
/etc/passwd 包含基本用户属性。
/etc/security/user 包含用户的扩展属性。
/etc/security/environ 包含用户的环境属性。
/etc/security/limits 包含用户进程资源限制。
/etc/security/passwd 包含密码信息。
/var/adm/sulog 包含登录尝试的信息。