SU(1) | 用户命令 | SU(1) |
名称¶
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, --commandCOMMAND通过使用其
-c 选项,指定一个由
shell 运行的命令。
执行的命令将不会拥有控制终端。此选项不能用于执行需要控制
TTY 的交互程序。
-, -l, --login
提供一个类似于用户直接登录的环境,用户可能会希望这样。
使用了 -
时,它必须是 su
的最后一个参数。其它形式(
-l 和 --login)
没有这个限制。
-s, --shellSHELL
将使用的 shell。
使用的 shell
在如下中选择(高优先级在前):.PP
如果目标用户的 shell
是有限制的(即,/etc/passwd
中用户项中的 shell
字段没有在 /etc/shells
中列出),那么 --shell
选项或 $SHELL
环境变量不会带入账户,除非
su 是被 root 调用的。
-m, -p, --preserve-environment
通过 --shell
指定的 shell。
如果使用了
--preserve-environment,shell 将由 $SHELL
环境变量指定。
在 /etc/passwd
的相应项中为目标用户指定的
shell。
如果无法通过以上办法找到一个
shell,则使用 /bin/sh。
保留当前环境,除非:.PP
$PATH
如果用户的 shell
受限,此选项无效
(除非是 root 调用的 su)。
注意,环境的默认行为如下:.PP
根据 /etc/login.defs
中的 ENV_PATH or ENV_SUPATH
选项重设 (请往下看)
$IFS
如果已经设置了,重设
“<space><tab><newline>”。
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 中的某些退出值与执行的命令无关:.PP 0成功 (只有
--help)
1
系统或者认证失败
126
要求的命令不存在
127
请求的命令不能执行
参见¶
login(1), login.defs(5), sg(1), sh(1).2012-05-25 | shadow-utils 4.1.5.1 |