Answers:
我不相信有任何固有的风险,这是为了在系统帐户和用户帐户之间建立隔离而完成的。根据我的经验,使用小于500的数字的做法是Redhat主义,实际上仅此而已。
在Solaris上,我还看到给用户分配的号码也从100开始,直到数年后才发现,将两个较小部门的系统合并在一起会引起各种噩梦,因为两个部门中有多个用户具有相同的UID / GID已分配。
分配UID时,这确实是主要的风险/头痛。由于UID是最终写给用户给定文件/目录的inode的内容,因此您不必费心去执行大规模find
查找由UID 1234拥有的文件并将其更改为5678的过程。 。
因此,通过对UID的选择进行思考,管理员可以避免日后的麻烦。
使用500或更高版本只是Redhat(和其他Unix)的一种尝试,以为其提供足够的缓冲区,以使可能需要创建的任何系统帐户都不会与分配给用户的UID混淆。
顺便说一下,数字500由配置文件中的此设置驱动/etc/login.defs
。
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN 500
UID_MAX 60000
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 500
GID_MAX 60000
如果您想通过useradd
/ adduser
命令覆盖默认行为,则可以将其更改为所需的任何内容。
如果看一下useradd
手册页,您会注意到这部分讨论了GID的默认值,但是此注释也适用于UID:
摘抄
-g, --gid GROUP
The group name or number of the user´s initial login group. The group name
must exist. A group number must refer to an already existing group.
If not specified, the behavior of useradd will depend on the USERGROUPS_ENAB
variable in /etc/login.defs. If this variable is set to yes
(or -U/--user-group is specified on the command line), a group will be
created for the user, with the same name as her loginname. If the variable
is set to no (or -N/--no-user-group is specified on the command line),
useradd will set the primary group of the new user to the value specified by
the GROUP variable in /etc/default/useradd, or 100 by default.
useradd
手册页中需要注意的另一件事是系统帐户生成方面的这一点。
摘抄
-r, --system
Create a system account.
System users will be created with no aging information in /etc/shadow,
and their numeric identifiers are choosen in the SYS_UID_MIN-SYS_UID_MAX
range, defined in /etc/login.defs, instead of UID_MIN-UID_MAX (and their
GID counterparts for the creation of groups).
Note that useradd will not create a home directory for such an user,
regardless of the default setting in /etc/login.defs (CREATE_HOME). You
have to specify the -m options if you want a home directory for a system
account to be created.
useradd -r ...
在安装软件包时,通常将这种方法()集成到各种软件包管理器(例如RPM)中的脚本使用。以这种方式编写脚本可以使系统在给定系统上自动选择下一个可用的UID / GID,而无需冒险踩踏已分配给系统用户的UID / GID。
这样做没有内在的危险。如果您创建的用户具有UID 499,则他们将没有任何额外的权限。建议不要这样做的原因仅仅是因为UID通常是为系统用户保留的。创建此类UID时可能遇到的问题是某些系统服务希望该UID可用时。这有点像创建一个在知名端口上运行的新服务-不一定没有问题,但这不是一个好习惯,当您设置sshd,ftpd等时,可能会进一步导致问题。
就是说,我已经看到许多系统创建用户时UID <500而没有问题。但是,随着用户群的增长以及现在有成千上万的用户,可能很难区分用户帐户和系统帐户。遵循没有UID <500的规则,这非常容易。因此,这也是一种组织帐户的好方法。
没有真正的危险。内核不关心用户ID值(0除外)。大多数管理工具也不关心-系统中很少有部分会在系统用户和人工用户之间产生差异。
系统用户倾向于拥有专用的组,因此创建的帐户属于不必要组的可能性不大。
某些发行版为系统用户(包括安装包含需要专用用户的系统服务的软件包时分配的用户)的系统用户保留范围为1–499(Red Hat和亲戚)或1–999(Debian和亲戚)。Debian的约定是静态分配1–99范围(因此在该范围内创建人类用户是一个非常糟糕的主意,因为它可能与系统用户发生冲突)而动态分配100–999范围(因此创建人类用户)在该范围内是无害的,因为任何新系统用户都会选择一个免费的用户ID)。
您可能会遇到一些小麻烦,例如显示管理器不向用户提供其列表中的阈值以下的UID。
隔离的计算机的主要危险是,您很可能会使您的系统管理员迷惑。对于共享用户ID的网络中的计算机,您可能会与其他用户具有与系统用户相同的用户ID的其他计算机发生冲突。在具有共享用户ID的网络中,对于人类用户,最好坚持使用1000–65533甚至10000–65533的范围。