ユーザー名の長さの制限を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);
}
もちろん、ユーザー名ポリシーを適用するラッパーの作成を妨げる人はいません。