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, --command COMMAND
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 在如下中选择(高优先级在前):.PP
如果目标用户的 shell 是有限制的(即,/etc/passwd 中用户项中的 shell 字段没有在 /etc/shells 中列出),那么 --shell 选项或 $SHELL 环境变量不会带入账户,除非 su 是被 root 调用的。
-m, -p, --preserve-environment
$IFS
如果用户的 shell 受限,此选项无效 (除非是 root 调用的 su)。
注意,环境的默认行为如下:.PP
CAVEATS¶
此版本的 su 有很多编译选项,在某些机器上,可能只使用了其中的一部分。
配置文件¶
在 /etc/login.defs 中有如下配置变量,可以用来更改此工具的行为:
CONSOLE_GROUPS (string)
DEFAULT_HOME (boolean)
如果设置为 yes,如果不能 cd 到主目录时,用户将会登录到根目录(/)。
ENV_PATH (string)
ENV_SUPATH (string)
SULOG_FILE (string)
SU_NAME (string)
SYSLOG_SU_ENAB (boolean)
文件¶
/etc/passwd
/etc/shadow
/etc/login.defs
退出值¶
成功时,su 返回执行的命令的退出值。
如果命令被信号结束,su 返回此信号的编号加 128。
如果 su 必须要杀死此命令(因为已经要求它结束,可是却没有及时结束),su 返回 255。
su 中的某些退出值与执行的命令无关:
0
1
126
127
参见¶
2017-09-27 | shadow-utils 4.5 |