大里です。
> From: Ichikawa
> Subject: [vine-users:068291] Re: ユーザーアカウントエディタでのエラー
> Date: Sun, 17 Oct 2004 02:25:55 +0900
> . ドットなど使ってはいけないキャラクタを使っていませんか。
>
> Vine Linux 3.0からはドットなどが使えなくなっています。
Vine-3.0 の shadow-utils は、ほぼ RHL-9 や RHEL-3 と、同じような
ので、これは Red Hat が 8.0 --> 9 になったときの問題と一緒ですね。
というわけで、昔 RHL-9 のとき調べたものを貼っておきます。
chkname.c の good_name() 関数では、以下のような違いがあります。
shadow-utils-4.0.0 以前
先頭の文字 AからZ と aからz
それ以外の文字 isprint() が真を返す文字から : と , を除いたもの。
(つまり、カンマとコロン以外の空白も含む全ての表示可能な文字は OK)
shadow-utils-4.0.1
先頭の文字 aからz と _
それ以外の文字 0から9 と aからz と _ と -
shadow-utils-4.0.3
先頭の文字 aからz と _
末尾の文字 0から9 と aからz と _ と - と $
それ以外の文字 0から9 と aからz と _ と -
影響するのは、groupadd、groupmod、grpck、pwck、useradd、usermod
あたりなので、これ等のコマンドを使わずに直接編集する手はあります。
自分としては、大文字やドットが使えないと運用上困るので以下の
ようにしています(RHL-9 のサーバですが)。
--- shadow-4.0.3/libmisc/chkname.c 2002-01-10 22:04:34.000000000 +0900
+++ shadow-4.0.3/libmisc/chkname.c 2003-05-13 00:16:35.000000000 +0900
@@ -24,13 +24,18 @@
/*
* User/group names must match [a-z_][a-z0-9_-]*
*/
- if (!*name || !((*name >= 'a' && *name <= 'z') || *name == '_'))
+ if (!*name ||
+ !((*name >= 'a' && *name <= 'z') ||
+ (*name >= 'A' && *name <= 'Z') ||
+ *name == '_'))
return 0;
while (*++name) {
if (!((*name >= 'a' && *name <= 'z') ||
+ (*name >= 'A' && *name <= 'Z') ||
(*name >= '0' && *name <= '9') ||
*name == '_' || *name == '-' ||
+ *name == '.' || *name == ' ' ||
(*name == '$' && *(name+1) == NULL)))
return 0;
}
# debian はこの部分をばっさり #if 0 で無効にしているらしい。
# その他の部分でも、Red Hat(=Vine) も、debian も shadow-utils に
# は独自パッチ当てまくりで、なんだかなぁって感じはするのですが。
--
kazz