使用较大的用户 ID 和组 ID
可以为 UID 和组 ID (group ID, GID) 指定带符号整数的最大值,即 2147483647。
但是,大于 60000 的 UID 和 GID 只具有部分功能且与许多 Oracle Solaris 功能不兼容。因此,应避免使用大于 60000 的 UID 或 GID。
下表介绍了与 Oracle Solaris 产品和以前的发行版的互操作性问题。
表 4–4 大于 60000 的 UID 或 GID 的互操作性问题
类别
|
产品或命令
|
问题
|
NFS 互操作性
|
SunOS 4.0 NFS 软件及其兼容发行版
|
NFS 服务器和客户机代码将较大的 UID 和 GID 截断到 16 位。如果在使用较大的 UID 和 GID 的环境中使用运行 SunOS 4.0 和兼容发行版的系统,可能会产生安全问题。运行 SunOS 4.0 和兼容发行版的系统需要一个修补程序以避免出现此问题。
|
名称服务互操作性
|
NIS 名称服务和基于文件的名称服务
|
UID 大于 60000 的用户可以在运行 Solaris 2.5(及兼容发行版)的系统上登录或者使用 su 命令。但是,会将他们的 UID 和 GID 设置为 60001 (nobody)。
|
|
NIS+ 名称服务
|
UID 大于 60000 的用户被拒绝访问运行 Solaris 2.5(及兼容发行版)和 NIS+ 名称服务的系统。
|
下表说明了 UID 和 GUI 限制。
表 4–5 较大 UID 和 GID 的限制摘要
UID 或 GID
|
限制
|
60003 或更大
|
用户在登录运行 Solaris 2.5(及兼容发行版)和 NIS 或文件名称服务的系统之后,将获得以下 UID 和 GID:nobody。
|
65535 或更大
|
-
运行 Solaris 2.5(及兼容发行版)和 NFS 版本 2 软件的系统会将 UID 截断到 16 位,这有可能会产生安全问题。
-
使用具有缺省归档格式的 cpio 命令复制文件的用户,会看到系统针对每个文件都返回一条错误消息。而且,归档中的 UID 和 GID 被设置为 nobody。
-
基于 x86 的系统: 运行与 SVR3 兼容的应用程序的用户可能会在进行系统调用时看到 EOVERFLOW 返回代码。
-
基于 x86 的系统: 如果用户尝试在已挂载的 System V 文件系统上创建文件或目录,则 System V 文件系统会返回一个 EOVERFLOW 错误。
|
100000 或更大
|
ps -l 命令最多可显示五位的 UID。因此,如果列显的列中包括大于 99999 的 UID 或 GID,则该列将不对齐。
|
262144 或更大
|
使用具有 -H odc 格式的 cpio 命令或者使用 pax -x cpio 命令复制文件的用户,会看到系统针对每个文件都返回一条错误消息。而且,归档中的 UID 和 GID 被设置为 nobody。
|
1000000 或更大
|
使用 ar 命令的用户,其归档中的 UID 和 GID 设置为 nobody。
|
2097152 或更大
|
使用 tar 命令、cpio -H ustar 命令或 pax -x tar 命令的用户,其 UID 和 GID 设置为 nobody。
|