名 称
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_PATH 和 ENV_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
请 求 的 命 令 不 能 执 行