Manpages

名 称

su − 更 改 用 户 ID 或 成 为 超 级 用 户

大 纲

su [选 项 ] [用 户 名 ]

描 述

su 用 于 让 用 户 在 登 录 期 间 变 成 另 外 一 个 用 户 。 后 边 不 带 username 使 用 时 , su 默 认 会 变 成 超 级 用 户 。 可 选 的 选 项 , 可 以 用 于 提 供 一 个 类 似 于 用 户 直 接 登 录 的 环 境 , 用 户 可 能 期 望 是 这 样 的 。

附 加 参 数 可 以 在 用 户 名 之 后 提 供 , 这 时 , 将 会 把 他 们 提 供 给 用 户 的 登 录 shell。 特 别 地 , 参 数 −c 将 会 使 下 一 个 参 数 被 多 数 命 令 解 释 器 视 为 命 令 。 这 个 命 令 会 被 /etc/passwd 中 为 目 标 用 户 指 定 的 shell 执 行 。

您 可 以 使 用 −− 参 数 将 su 选 项 和 提 供 给 shell 的 参 数 分 隔 开 来 。

如 果 合 适 , 将 提 示 用 户 输 入 一 个 密 码 。 输 入 无 效 的 密 码 会 产 生 一 个 错 误 消 息 。 所 有 的 尝 试 , 无 论 成 功 还 是 失 败 , 都 会 被 记 录 , 以 检 测 对 系 统 的 滥 用 。

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

在 登 录 shell 中 以 第 一 个 字 符 是 “*”标 注 的 是 子 系 统 登 录 。 给 定 的 主 目 录 将 被 用 于 用 户 实 际 登 录 的 新 文 件 系 统 的 根 。

选 项

su 命 令 可 以 接 受 的 选 项 有 :

−c, −−command COMMAND

通 过 使 用 其 −c 选 项 , 指 定 一 个 由 shell 运 行 的 命 令 。

The executed command will have no controlling terminal. This option cannot be used to execute interactive programs which need a controlling TTY.

, −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.

−s, −−shell SHELL

将 使 用 的 shell。

使 用 的 shell 在 如 下 中 选 择 (高 优 先 级 在 前 ): .PP

通 过 −−shell 指 定 的 shell。

如 果 使 用 了 −−preserve−environment, shell 将 由 $SHELL 环 境 变 量 指 定 。

在 /etc/passwd 的 相 应 项 中 为 目 标 用 户 指 定 的 shell。

如 果 无 法 通 过 以 上 办 法 找 到 一 个 shell, 则 使 用 /bin/sh。

如 果 目 标 用 户 的 shell 是 有 限 制 的 (即 , /etc/passwd 中 用 户 项 中 的 shell 字 段 没 有 在 /etc/shells 中 列 出 ), 那 么 −−shell 选 项 或 $SHELL 环 境 变 量 不 会 带 入 账 户 , 除 非 su 是 被 root 调 用 的 。

−m, −p, −−preserve−environment

保 留 当 前 环 境 , 除 非 : .PP $PATH

根 据 /etc/login.defs 中 的 ENV_PATH or ENV_SUPATH 选 项 重 设 (请 往 下 看 )

$IFS

如 果 已 经 设 置 了 , 重 设 “<space><tab><newline>”。

如 果 用 户 的 shell 受 限 , 此 选 项 无 效 (除 非 是 root 调 用 的 su)。

注 意 , 环 境 的 默 认 行 为 如 下 : .PP

The $HOME, $SHELL, $USER, $LOGNAME, $PATH, 和 $IFS 这 些 环 境 变 量 会 被 重 置 。

如 果 没 有 使 用 −−login, 复 制 环 境 , 上 述 几 个 变 量 除 外 。

如 果 使 用 了 −−login, 如 果 设 置 了 $TERM, $COLORTERM, $DISPLAY$XAUTHORITY, 这 些 环 境 变 量 也 会 被 重 置 。

其 它 环 境 可 能 由 PAM 模 块 设 置 。

CAVEATS

此 版 本 的 su 有 很 多 编 译 选 项 , 在 某 些 机 器 上 , 可 能 只 使 用 了 其 中 的 一 部 分 。

配 置 文 件

在 /etc/login.defs 中 有 如 下 配 置 变 量 , 可 以 用 来 更 改 此 工 具 的 行 为 :

CONSOLE_GROUPS (string)

在 控 制 台 登 录 时 , 添 加 到 用 户 附 加 组 集 中 的 组 列 表 (就 如 CONSOLE 所 确 定 的 )。 默 认 是 无 。 使 用 时 需 要 注 意 : 这 可 能 使 用 户 获 取 这 些 组 的 永 久 权 限 , 甚 至 登 录 到 的 不 是 此 控 制 台 时 。

DEFAULT_HOME (boolean)

如 果 不 能 cd 到 主 目 录 时 , 说 明 是 否 允 许 登 录 。 默 认 是 否 。

如 果 设 置 为 yes, 如 果 不 能 cd 到 主 目 录 时 , 用 户 将 会 登 录 到 根 目 录 (/)。

ENV_PATH (string)

If set, it will be used to define the PATH environment variable when a regular user login. The value is a colon separated list of paths (for example /bin:/usr/bin) and can be preceded by PATH=. The default value is PATH=/bin:/usr/bin.

ENV_SUPATH (string)

If set, it will be used to define the PATH environment variable when the superuser login. The value is a colon separated list of paths (for example /sbin:/bin:/usr/sbin:/usr/bin) and can be preceded by PATH=. The default value is PATH=/sbin:/bin:/usr/sbin:/usr/bin.

SULOG_FILE (string)

如 果 定 义 了 , 所 有 的 su 活 动 都 会 记 录 到 此 文 件 。

SU_NAME (string)

如 果 定 义 了 , 就 是 运 行 “su −”时 显 示 的 命 令 名 称 。 例 如 , 如 果 定 义 为 “su”, 那 么 “ps”会 显 示 此 命 令 为 “−su”。 如 果 没 有 定 义 , “ps”将 会 显 示 实 际 执 行 的 shell, 例 如 类 似 于 “−sh”。

SYSLOG_SU_ENAB (boolean)

除 了 sulog 文 件 日 志 , 也 为 su 活 动 启 用 “syslog”日 志 。

文 件

/etc/passwd

用 户 账 户 信 息 。

/etc/shadow

安 全 用 户 账 户 信 息 。

/etc/login.defs

Shadow 密 码 套 件 配 置 。

退 出 值

成 功 时 , su 返 回 执 行 的 命 令 的 退 出 值 。

如 果 命 令 被 信 号 结 束 , su 返 回 此 信 号 的 编 号 加 128。

如 果 su 必 须 要 杀 死 此 命 令 (因 为 已 经 要 求 它 结 束 , 可 是 却 没 有 及 时 结 束 ), su 返 回 255。

su 中 的 某 些 退 出 值 与 执 行 的 命 令 无 关 :

0

成 功 (只 有 −−help)

1

系 统 或 者 认 证 失 败

126

要 求 的 命 令 不 存 在

127

请 求 的 命 令 不 能 执 行

参 见

login(1), login.defs(5), sg(1), sh(1).