减少 Redhat 上的用户名长度限制

减少 Redhat 上的用户名长度限制

我想将用户名长度限制从 32 减少到 30。是否可以配置该限制?

当我尝试在 RHEL 上进行 useradd 时,它允许创建最多 32 个字符的用户。我想将长度缩短到 30 个字节,以限制用户创建的最大长度为 30 个字节。我认为它在 AIX 平台上是可能的。但我找不到如何在 redhat RHEL 服务器上进行配置的方法。

答案1

不,它是硬编码在useradd二进制文件中的。

从来源shadow-utils-4.6-7.el8(提供的包/usr/sbin/useradd):

./lib/defines.h:

/* Maximum length of usernames */
#ifdef HAVE_UTMPX_H
# include <utmpx.h>
# define USER_NAME_MAX_LENGTH (sizeof (((struct utmpx *)NULL)->ut_user))
#else
# include <utmp.h>
# ifdef HAVE_STRUCT_UTMP_UT_USER
#  define USER_NAME_MAX_LENGTH (sizeof (((struct utmp *)NULL)->ut_user))
# else
#  ifdef HAVE_STRUCT_UTMP_UT_NAME
#   define USER_NAME_MAX_LENGTH (sizeof (((struct utmp *)NULL)->ut_name))
#  else
#   define USER_NAME_MAX_LENGTH 32
#  endif
# endif
#endif

(该utmp->ut_user字段也是 32 字节)

libmisc/chkname.c:

bool is_valid_user_name (const char *name)
{
        /*
         * User names are limited by whatever utmp can
         * handle.
         */
        if (strlen (name) > USER_NAME_MAX_LENGTH) {
                return false;
        }

        return is_valid_name (name);
}

当然,没有人会阻止您编写强制执行用户名策略的包装器。

相关内容