Overview
Unix/Linux系システムのアカウントを外部アプリケーションと連携させる時に各ディストリビューションでユーザ名やグループ名の制限(limitation)がどうなっているか気になったので調べてみた
ユーザ名の制限
ユーザ名長
Linux系ではlibcのバージョンによって変わってくる。libc5が使われている古いシステムとlibc6では制限が違う。また古いSolaris(8,9,10系)では8byte以上のユーザ名を作ろうとすると警告が表示され、ps系コマンドでユーザ名が暗黙的にtruncateされたりするなどユーザ名を使用するアプリケーションの挙動が変わってくる。
hard limit
種類 | 長さ |
---|---|
libc5 | 8 |
libc6 | 32 |
soft limit
種類 | 長さ |
---|---|
Solaris | 8 |
libc6 | 32 |
使用可能文字
- 数字、アルファベット、アンダーバーを使用可能
- 大文字は使用不可
- 先頭文字は数字は使用不可
正規表現で表すと ([a-z_][a-z0-9_]{0,30})
となる。
グループ名の制限
種類 | 数 |
---|---|
Linux | 32 |
Solaris | 32 |
グループ名の長さを回避
GNU groupaddを--with-group-name-max-length
オプションを付けてソースからコンパイルし直す。
ただしグループ名を使用するアプリケーションで32文字以上のグループ名が動作する保証はない。
グループ数の制限
長さとは関係ないが1ユーザが所属出来るグループ数にはNISやNFSにより上限がある
種類 | グループ数 |
---|---|
Linux Kernel < 2.6.3 | 16 |
Linux Kernel >= 2.6.3 | 32 |
Solaris | 16 |
まとめ
各システムでのユーザ・グループの制限を確認し、すべてのシステムで使用可能なサイズとしてはユーザ名・グループ名ともに 8文字 ということが分かった。
レガシーなUnixシステムとの互換性を保つためにアプリケーション側でユーザ名やグループ名をあえて8文字までしか認識しないよう実装している可能性もあるため、念を入れたい場合はユーザ名・グループ名共に8文字までに抑えよう。