LoginSignup
24
22

More than 5 years have passed since last update.

Unix/Linuxでのユーザ名・グループ名に関する制限

Posted at

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文字までに抑えよう。

24
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
22