ユーザーとグループ管理コマンド - ユーザー作成
ユーザー管理コマンド
-
useradd
: 新しいLinuxユーザーを作成するコマンド -
usermod
: 存在するユーザーの情報を変更するコマンド -
userdel
: ユーザーを削除するコマンド
グループアカウント維持コマンド
-
groupadd
: 新しいグループを作成するコマンド -
groupmod
: 存在するグループの情報を変更するコマンド -
groupdel
: グループを削除するコマンド
ユーザー作成
useradd
コマンドで新しいLinuxユーザーを作成することができます。
フォーマット:
useradd [options] LOGIN
useradd -D
useradd -D [options]
# 主なオプション
-
-u
、--uid UID
: UIDを指定します。 -
-g
、--gid GID
: 初期ユーザーグループを指定します。-g groupname
または--gid GID
とします。 -
-c
、--comment COMMENT
: 新しいアカウントのGECOSフィールドです。 -
-d
、--home-dir HOME_DIR
: ホームディレクトリーを指定します。存在しなくても指定可能ですが、それにより自動的にディレクトリーが作られるわけではありません。 -
-s
、--shell SHELL
: 使用するシェルを指定します。使用可能なシェルは/etc/shells
で確認できます。 -
-r
、--system
: システムユーザーを作成します。CentOS 6以前はID<500がシステムユーザー、CentOS7以降はID<1000がそれに該当します。ログインユーザーに関する情報は作成されません。 -
-m
、--create-home
: ホームディレクトリーを作成します。通常ログインユーザーに使われます。 -
-M
、--no-create-home
: ホームディレクトリーを作成しません。ログイン不要なユーザーに使われます。 -
-p
、--password PASSWORD
: パスワードを設定します。このパスワードは/etc/shadow
ファイル中で平文の形式になります。 -
-o
、--non-unique
: 重複するUIDを持つユーザーを作成できます。 -
-G
、--groups GROUP1[,GROUP2,...]
: ユーザーの追加グループを明記します。グループは事前に存在している必要があります。 -
-N
、--no-user-group
: 同名のグループを作成しないようにし、代わりにusers
グループを主グループとして使用します。 -
-D
、--defaults
:useradd
のデフォルト設定を表示または変更します。デフォルト設定ファイルは/etc/default/useradd
です。 -
-e
、--expiredate EXPIRE_DATE
: アカウントの有効期限を YYYY-MM-DD フォーマットで指定します。 -
-f
、--inactive INACTIVE
: パスワード有効期限切れ後、アカウントが完全に禁止されるまでの日数を指定します。0
はパスワード有効期限切れと同時に禁止、-1
はこの機能を使用しないことを意味します。 -
-k
、--skel SKEL_DIR
: ホームディレクトリのテンプレートを指定します。ホームディレクトリを作成する際には、このディレクトリからファイルがコピーされます。デフォルトは/etc/skel/
ですが、-m
オプションと併用する必要があります。 -
-K
、--key KEY=VALUE
:/etc/login.defs
のデフォルト値を使用せず、自分で指定します。例えば-K UID_MIN=100
のように使用します。 -
-l
、--no-log-init
: ユーザーをログインの最近の記録とログイン失敗の記録に追加しません。以前に取り上げた認証監査に関連するlastlog
、lastb
、cat /var/log/secure
に該当します。
范例:
[root@rocky8 ~]#rpm -q --scripts postfix
preinstall scriptlet (using /bin/sh):
# 必要に応じてユーザーやグループを追加する
/usr/sbin/groupadd -g 90 -r postdrop 2>/dev/null
/usr/sbin/groupadd -g 89 -r postfix 2>/dev/null
/usr/sbin/groupadd -g 12 -r mail 2>/dev/null
/usr/sbin/useradd -d /var/spool/postfix -s /sbin/nologin -g postfix -G mail -M -r -u 89 postfix 2>/dev/null
范例:
# ユーザーを作成する前に先にグループを作成することで、グループIDの把握が可能
# 既に存在するグループIDの利用は避ける
[root@rocky8 ~]# groupadd -g 33 mysql
groupadd: GID '33' already exists
# システムグループを作成
[root@rocky8 ~]# groupadd -g 336 -r mysql
# 確認
[root@rocky8 ~]# getent group mysql
mysql:x:336:
[root@rocky8 ~]# getent gshadow mysql
mysql:!::
# ユーザーを作成
useradd -u 336 -g mysql -s /sbin/nologin -d /data/mysql -M -r mysql
# 確認
[root@rocky8 ~]# useradd -u 336 -g mysql -s /sbin/nologin -d /data/mysql -M -r mysql
[root@rocky8 ~]# getent passwd mysql
mysql:x:336:336::/data/mysql:/sbin/nologin
[root@rocky8 ~]# getent shadow mysql
mysql:!!:19168::::::
デフォルトでのユーザー作成
[root@rocky8 ~]# useradd tom
# 確認
[root@rocky8 ~]# getent passwd tom
tom:x:1003:1003::/home/tom:/bin/bash
[root@rocky8 ~]# getent shadow tom
tom:!!:19168:0:99999:7:::
[root@rocky8 ~]# getent group tom
tom:x:1003:
[root@rocky8 ~]# getent gshadow tom
tom:!::
[root@rocky8 ~]# ls -a /home/tom/
. .. .bash_logout .bash_profile .bashrc
useradd
のデフォルト設定は /etc/default/useradd
によって定義されています。
[root@rocky8 ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100 # useraddがグループを指定しない、あるいは/etc/login.defs中のUSERGROUPS_ENABが「no」、あるいはuseradd -Nの場合、groupは100です
HOME=/home # デフォルトのホームディレクトリの親ディレクトリ
INACTIVE=-1 # 対応するのは/etc/shadowファイルの7列目、つまりユーザーパスワードの有効期限が切れた後のアカウントロックの猶予期間です。-1はロックしないことを意味します
EXPIRE= # 対応するのは/etc/shadowファイルの8列目、つまりユーザーアカウントの有効期限です
SHELL=/bin/bash # デフォルトはbashです
SKEL=/etc/skel # 新たに作ったユーザーのホームディレクトリ制作のための模擬ファイルです
CREATE_MAIL_SPOOL=yes # デフォルトで受信箱の作成を行います
デフォルト設定の表示または変更:
# useradd -Dで見ることができます
# useradd –D -s SHELLで変更
# useradd –D –b BASE_DIRで変更
# useradd –D –g GROUPで変更
確認と変更例:
[root@rocky8 ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
# デフォルトのshellを変更
[root@rocky8 ~]# useradd -D -s /bin/sh
# 変更後
[root@rocky8 ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
ホームディレクトリのテンプレート
[root@rocky8 ~]# ls -a /etc/skel/
. .. .bash_logout .bash_profile .bashrc
# このディレクトリの内容を変更すると、新しく作成されるユーザーのホームディレクトリの中身も変わります
新規ユーザーに関連するファイル:
/etc/default/useradd
/etc/skel/*
/etc/login.defs
一括ユーザー作成コマンド
newusers file
范例:
[root@rocky86 ~]# cat user.txt
u1:123456:1024:1024::/home/u1:/bin/bash
u2:123456:1025:1025::/home/u2:/bin/bash
[root@rocky86 ~]# newusers user.txt
[root@rocky86 ~]# id u1
uid=1024(u1) gid=1024(u1) groups=1024(u1)
[root@rocky86 ~]# id u2
uid=1025(u2) gid=1025(u2) groups=1025(u2)
一括ユーザーパスワード変更コマンド
chpasswd < file
范例:
[root@rocky86 ~]# cat pwd.txt
u1:1234567
u2:1234567
# 標準入力からリダイレクト
[root@rocky86 ~]# chpasswd < pwd.txt
# 複数行のリダイレクト
[root@rocky86 ~]# chpasswd <<EOF
> u1:1234567
> u2:1234567
> EOF
# パイプからリダイレクト
[root@rocky86 ~]# echo u1:123456 | chpasswd
CentOS 8ではsha512アルゴリズムで暗号化されたパスワードを生成する例:
[root@centos8 ~]#openssl passwd -6 magedu
$6$UOyYOao.iM2.rPnM$jCpTnBVIQBuGCLOm4N5hqh5YUc3wWXcDzkDMddthpKNL3scOZjTHh9fXds8E
u6gNdEQqLMQgOboipZ08mnz2V
CentOS 7でPythonを用いてsha512アルゴリズムで暗号化されたパスワードを生成する例:
[root@centos7 ~]#python -c 'import crypt,getpass;pw="magedu";print(crypt.crypt(pw))'
$6$pt0SFMf6YqKea3mh$.7Hkslg17uI.Wu7BcMJStVVtkzrwktXrOC8DxcMFC4JO1igrqR7VAi87H5PH
OuLTUEjl7eJqKUhMT1e9ixojn1
CentOS 6 でsha512アルゴリズムに基づくパスワードを含むユーザーを作成する例:
[root@centos6 ~]#grub-crypt --help
Usage: grub-crypt [OPTION]...
Encrypt a password.
-h, --help Print this message and exit
-v, --version Print the version information and exit
--md5 Use MD5 to encrypt the password
--sha-256 Use SHA-256 to encrypt the password
--sha-512 Use SHA-512 to encrypt the password (default)
Report bugs to <bug-grub@gnu.org>.
EOF
[root@centos6 ~]#grub-crypt --sha-512
Password:
Retype password:
$6$v9A2/xUNwAWwEmHN$q7Wz.uscsV/8J5Gss3KslX8hKXOoaP3hDpOBWeBfMQHVIRZiwHUUkii84cvQ
WIMnvtnXYsdVHuLO4KhOiSOMh/
[root@centos6 ~]#useradd -p
'$6$v9A2/xUNwAWwEmHN$q7Wz.uscsV/8J5Gss3KslX8hKXOoaP3hDpOBWeBfMQHVIRZiwHUUkii84cv
QWIMnvtnXYsdVHuLO4KhOiSOMh/' test
[root@centos6 ~]#getent shadow test
test:$6$v9A2/xUNwAWwEmHN$q7Wz.uscsV/8J5Gss3KslX8hKXOoaP3hDpOBWeBfMQHVIRZiwHUUkii
84cvQWIMnvtnXYsdVHuLO4KhOiSOMh/:18459:0:99999:7:::
Ubuntu 18.04 でsha512アルゴリズムに基づくパスワードを生成する例:
[root@ubuntu1804 ~]#openssl passwd -6 123456
$6$RyaXh7L.7fORQBjB$0WXRATSjh3IU.eufhsY5uJpKZwCAGjyAj5r/et9ymohEKsTdMvagEW92t1IA
kNte0yVZ88YyMUqx1b6uHIrxM/