Oracle Solaris 10 へのユーザ、グループ作成方法

<環境>
Oracle Solaris 10<概要>
OSユーザアカウント、グループの作成方法です。次の順序で行います。
1.グループ作成
2.ユーザ作成
ただし、作成するユーザが所属するグループが作成済みなら、「1.グループ作成」は不要です。

1.グループ作成

例として作成するグループ情報

グループ名  :  testgroup
グループID  :  125

グループ名、グループIDが重複しないかを確認します。

# cat /etc/group | grep testgroup
# cat /etc/group | grep 125

GIDを指定してグループを作成します。

# groupadd -g 125 testgroup

グループが作成されたことを確認します。

# cat /etc/group | grep 125
testgroup::125:
#

参考1.グループ名を変更する方法です。

# groupmod -n dsdgrp testgroup
# cat /etc/group | grep 125
dsdgrp::125:
#

参考2.グループIDを変更する方法です。

# groupmod -g 126 dsdgrp
# cat /etc/group | grep 125
# cat /etc/group | grep 126
dsdgrp::126:
#

グループ名、グループIDの変更は作成済みグループに対して行う場合は十分注意して行って下さい。
作成済みユーザの所属グループ、作成済みのディレクトリ/ファイルの所有グループに影響します。

2.ユーザ作成

例として作成するユーザ情報

ユーザ名            :  testuser
ユーザID            :  125
所属グループ        :  testgroup
ログインシェル      :  /export/home/testuser (新規作成)
ホームディレクトリ  :  /bin/sh

所属するグループがあることを確認します。

# cat /etc/group | grep testgroup
testgroup::125:
#

ユーザ名、グループID、ホームディレクトリが重複しないか確認します。

# cat /etc/passwd /etc/shadow | grep testuser
# cat /etc/passwd /etc/shadow | grep 125
# ls -la /export/home/testuser
/export/home/testuser: ファイルもディレクトリもありません。
#

ユーザを作成します。

# useradd -u 125 -g testgroup -m -d /export/home/testuser -s /bin/sh testuser
64 ブロック
#

参考・引数の意味

useradd -u [ユーザID] -g [グループID] -m -d [ホームディレクトリ] -s [使用シェル] [ユーザ名] 
 -m … -d オプションで指定したディレクトリがなければ作成します。
 -d … ホームディレクトリを指定します。
 -u … ユーザIDを指定する。
 -g … 所属グループを指定します。(GIDでも指定できます)
 -s … ログインシェルを指定します。

注意事項

ユーザIDについて:
ユーザIDは、システムで予約済、もしくは登録済の番号があります。
一般ユーザには100 〜 60000のUIDをご使用ください。
100以下はシステムで使用します。
60001,60002 は予約済です。
65534も予約済です。
60003以上は 65534を除き、2147483647(符号付き整数の最大値)まで使えますが、制限があります(匿名用など)。

ユーザ名について:
2-8 文字の英数字を使用する必要があります。
エラー"UX: useradd: naviadmin name too long."を出力しますが、9文字以上のユーザ名も登録できます。
9文字以上のユーザ名はpsコマンドで出力外があるなど正常に動作しない原因になります。
ユーザ名は最初の1文字は英字にし、最低1文字英小文字を含める必要があります。
ユーザー名にはピリオド (.)、アンダースコア (_)、ハイフン (-) を使用できます。
しかしこれらの文字により障害が発生するソフトウェアもあるため使用しない方が良いです。

ユーザが作成されたことを確認します。

# cat /etc/passwd /etc/shadow | grep 125
testuser:x:125:125::/export/home/testuser:/bin/sh
#

ホームディレクトリが作成されたことを確認します。

 # ls -ld /export/home/testuser
 drwxr-xr-x   2 testuser   testgroup       512  6月 16日  16:42 /export/home/testuser
 # ls -la /export/home/testuser
 合計 12
 drwxr-xr-x   2 testuser   testgroup       512  6月 16日  16:42 .
 drwxr-xr-x  23 root     root         512  6月 16日  16:42 ..
 -rw-r--r--   1 testuser   testgroup       144  6月 16日  16:42 .profile
 -rw-r--r--   1 testuser   testgroup       136  6月 16日  16:42 local.cshrc
 -rw-r--r--   1 testuser   testgroup       157  6月 16日  16:42 local.login
 -rw-r--r--   1 testuser   testgroup       174  6月 16日  16:42 local.profile
 # 

ユーザ環境変数ファイルがテンプレート(/etc/skel)どおりに作成されたことを確認します。

# digest -a md5 /export/home/testuser/.profile /etc/skel/.profile
(/export/home/testuser/.profile) = 0dee9c302b4006f6e38864cdd6d0b044
(/etc/skel/.profile) = 0dee9c302b4006f6e38864cdd6d0b044
# digest -a md5 /export/home/testuser/local.cshrc /etc/skel/local.cshrc
(/export/home/testuser/local.cshrc) = 359e1ff919559f939861f5c709684171
(/etc/skel/local.cshrc) = 359e1ff919559f939861f5c709684171
# digest -a md5 /export/home/testuser/local.login /etc/skel/local.login
(/export/home/testuser/local.login) = ce5ca13e6b28a5884cbf38e262f31100
(/etc/skel/local.login) = ce5ca13e6b28a5884cbf38e262f31100
# digest -a md5 /export/home/testuser/local.profile /etc/skel/local.profile
(/export/home/testuser/local.profile) = 4b4f36166b46e3887e88a3e6db48a096
(/etc/skel/local.profile) = 4b4f36166b46e3887e88a3e6db48a096
#

参考.ハッシュ値比較:
デフォルトで作成されるユーザ環境変数ファイルは/etc/skelからコピーされます。
間違いなくコピーされているかを確認するためにハッシュ値を比較しています。

3.ユーザのパスワードを設定します。

# cat /etc/shadow | grep testuser
testuser:*LK*:::::::
#
# passwd testuser
新しいパスワード:
新しいパスワードを再入力してください:
passwd: testuser のパスワードが変更されました
#
# cat /etc/shadow | grep testuser
testuser:ly8VERkttCvRU:15141::::::
#

備考.ユーザのパスワードが設定されるまで、rootユーザを除き、そのユーザへログインすることは出来ません。

作成したユーザへスイッチユーザが出来ることを確認します。

# su - testuser
Sun Microsystems Inc.   SunOS 5.10      Generic January 2005
$ id
uid=125(testuser) gid=125(testgroup)
$ pwd
/export/home/testuser
$ exit
#

参考.ユーザ削除と共に、ホームディレクトリを削除する方法です。

# userdel -r testuser
# cat /etc/passwd /etc/shadow | grep testuser
# ls -ld /export/home/testuser
/export/home/testuser: ファイルもディレクトリもありません。
#