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);
}

もちろん、ユーザー名ポリシーを適用するラッパーの作成を妨げる人はいません。

関連情報