大里です。 > 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