Linux上ではユーザー、パスワード、及び所属するグループの設定を任意に変更できたり、削除したりできます。また、これらの設定を誤るとログインできなくなったり、予期せぬ動作を引き起こすので、実際に試すときは細心の注意を払うようにしましょう。
本記事では実施方法を解説していきますので、ぜひ理解を深めていきましょう。
ユーザーアカウントを操作する
業務用としてLinuxが採用されるとき、その最も主な使いみちはサーバー用途が挙げられます。
社内状況にもよりますが、自社内でサーバーを利用する場合、メールサーバーやファイルサーバーといった使い方が想定されるわけですが、こうしたサーバーの管理はシステム管理部門の仕事というのが一般的といえます。
このような場合において、システム管理部門、もしくはそれに準ずる所属以外の社員が社内のサーバーに対して意図しない動作を起こさせないために、ユーザーの所属やそのユーザーごとに行える、操作の権限を予め付与しておく必要があります。
ユーザーとは?
Linuxは、あらかじめ登録された人しか操作出来ないようになっています。そしてあらかじめ登録された人のことを「ユーザー」といいます。ネットワークを経由して複数人で操作できるLinuxは、ユーザーに毎にそれぞれの利用者を区別しています。
ログインとは、単にLinuxで作業を開始するためのものではなく、Linuxの利用者を区別するためのものです。
ユーザーの役割
- ユーザー単位で作業できる範囲を限定する
- ホームディレクトリ毎に作業領域を分ける
- すべてのファイルのアクセス権はユーザー毎に管理される
- サービスの利用者を区別する
- メールやWeb、FTP等の利用者を区別できる
- 作業しているユーザーを特定できる
- ログイン中のユーザーを把握できる
- ユーザーの作業内容の記録を取ることが出来る
ユーザーを登録する「useradd」
新規ユーザーを登録するには「useradd」コマンドを使用します。
コマンドの書式
useradd[オプション] ユーザー名
コマンドの主なオプション
- -m(--create-home):ユーザーのホームディレクトリが存在しない場合、作成する
- -M(--no-create-home):ユーザーのホームディレクトリを作成しない
- -b(--base-dir BASE_DIR):ホームディクトリのベースとなるディレクトリ
- -d(--home-dir ディレクトリ)ユーザーのホームディレクトリを指定する
- -k(--skel ディレクトリ):ひな型ディレクトリ(デフォルトは/etc/skel)を指定する
- -u(--uid ユーザーID):作成するユーザーのユーザーIDを指定する
- -g(--gid グループ):ユーザーが属するプライマリグループ or グループIDを指定する
- -G(--groups リスト):ユーザーが属するセカンダリグループを指定する
- -U(--user-group):ユーザーと同じ名前のグループを作成する
- -N(--no-user-group):ユーザーと同じ名前のグループを作成しない
- -s(--shell シェル):ユーザーのログインシェル(フルパスで指定)を指定する
- -p(--password パスワード):cryptで暗号化されたログインパスワードを利用する
- -e(--expiredate 日付):ユーザーのアカウントが期限切れとなる日付を指定する
- -c(--comment コメント):/etc/passwdのコメント欄の内容を指定する
- -f(--inactive 日数):パスワードが期限切れからアカウントが無効化されるまでの日数
ここでは、ユーザー名「hoge」を登録してみます。
# useradd hoge
オプションを指定せずにユーザーを作成した場合、下記に挙げるいくつかの環境変数へデフォルト値が代入されます。
- SHELL=「/bin/bash」(デフォルト)
- HOME=「/home/hoge」(デフォルト)
- LANG=「ja_JP.UTF-8」(デフォルト)
- etc・・・
詳しくは、ユーザー作成後、「$ env」コマンドで確認してみてください。
1 2 3 |
[root@CentOS7 ~]# useradd hoge [root@CentOS7 ~]# id hoge uid=1001(hoge) gid=1001(hoge) groups=1001(hoge) |
ユーザー「hoge」の作成が完了しました。
ユーザーパスワードを変更する「passwd」
パスワードを変更するには、「passwd」コマンドを使用します。
オプションを付与することにより、パスワードをの削除や変更を行うことが出来ます。
コマンドの書式
passwd[オプション] ユーザー名
コマンドの主なオプション
- -l ユーザー名:指定したユーザーをロックする
- -u ユーザー名:指定したユーザーのロックを解除する
- -d ユーザー名:パスワードを削除する
- -S ユーザー名:パスワードの状態を表示する
- -n 日数 ユーザー名:パスワード変更後、再度変更可能になるまでの日数を設定する
- -x 日数 ユーザー名:パスワードが有効な日数を設定する
- -w 日数 ユーザー名:パスワード失効前に警告を表示する日数を設定する
- -i 日数 ユーザー名:パスワードが有効期限に達した後、パスワードを無効にするまでの猶予期間を設定する
ここではオプションを省略して、「hoge」のパスワードを変更してみます。
※ 実行後、新しいパスワードの入力を2回求められるので、任意のパスワードを入力し変更を完了させます。
# passwd hoge
1 2 3 4 5 |
[root@CentOS7 ~]# passwd hoge ユーザー hoge のパスワードを変更。 新しいパスワード: 新しいパスワードを再入力してください: passwd: すべての認証トークンが正しく更新できました。 |
パスワードが変更されました。
ユーザー設定を変更する「usermod」
ユーザーに紐づく様々な設定を変更するには「usermod」コマンドを使用します。
変更する設定を指定する必要があるので、コマンドオプションは必須となります
コマンドの書式
usermod[オプション] ユーザー名
コマンドの主なオプション
- -L(--lock):ユーザーをロックする
- -U(--unlock):ユーザーのロックを解除する
- -e(--expiredate付):アカウントが使用不能になる日付を指定する
- -f(--inactive数):パスワードの使用期限切れから使えなくなるまでの日数を指定する
- -l(--loginログイン名):ログイン名を変更する
- -d(--homeス):ユーザーのホームディレクトリを変更する
- -m(--move-home):現ホームディレクトリの内容を新たな場所に移動する
- -R(--rootィレクトリ):「chroot」するディレクトリを指定する
- -p(--passwordスワード):新たなパスワードを指定する
- -s(--shellェル):ユーザーのシェルを変更する
- -g(--gidループ):プライマリーグループを変更する
- -G(--groupsループ):セカンダリーグループを変更する
- -a(--append):オプションで指定したグループをセカンダリーグループに追加する
- -u(--uidID):ユーザーIDを変更する
- -o(--non-unique):一意でないユーザーを許可する
- -c(--commentメント):コメント欄
ここではユーザー「hoge」のユーザIDを変更してみましょう。
# usermod -u 1234 hoge
1 2 3 |
[root@CentOS7 ~]# usermod -u 1234 hoge [root@CentOS7 ~]# id hoge uid=1234(hoge) gid=1002(hoge) groups=1002(hoge) |
ユーザIDが「1234」に変更されました。
ユーザー登録を抹消する「userdel」
ユーザを削除するには、「userdel」コマンドを使用します。
コマンドの書式
userdel[オプション] ユーザー名
コマンドの主なオプション
- -r:対象ユーザーのホームディレクトリとメールスプールも同時に削除する
ユーザ「hoge」を削除し、同時に利用しているディレクトリも削除するには、下記のコマンドを実行します。
# userdel -r hoge
1 2 3 4 5 6 |
[root@CentOS7 ~]# id hoge uid=1234(hoge) gid=1002(hoge) groups=1002(hoge) [root@CentOS7 ~]# cat /etc/passwd | grep hoge hoge:x:1234:1002::/home/hoge:/bin/bash [root@CentOS7 ~]# userdel -r hoge [root@CentOS7 ~]# cat /etc/passwd | grep hoge |
実行後、ユーザー:hogeに関する情報(パスワードファイルやホームディレクトリ等)が、同時に削除されました
グループを操作する
groupとは、ユーザーが属する集団、つまり部門を意味すると考えると分かり易いでしょう。
グループに対しての設定は、グループ内のすべてのユーザーに適用されます。また、ユーザーは複数のグループに所属することが出来ます。
ユーザーとグループの関係
- グループは自由に作成することが出来る
- グループと言う単位で作業する範囲を限定できる
- 1つのユーザーが複数のグループに所属することが出来る
たとえば「社内のファイルサーバーは全社員に使わせたいけれど、メールサーバーやウェブサーバーは、システム管理部門や広報部門など、一部のユーザーだけが使うようにしたい」といった場合には「groupadd」コマンドを使用します。
グループを追加「groupadd」
グループを追加するにはgroupaddコマンドを使用します。
コマンドの書式
groupadd[オプション] グループ名
コマンドの主なオプション
- -g(--gid グループID):作成するグループのグループIDを指定する
- -o(--non-unique):グループIDが同じグループの作成を許す
- -f(--force):グループが既に存在していた場合、終了する(エラーにはならない)
- -p(--password パスワード):暗号化されたログインパスワードを利用可能にする
- -K(--key キー=値):/etc/login.defsに保存されている値を一時的に置き換える
- -r(--system):システムアカウントを作成する
グループ番号(GID)が「5678」の番号の新たなグループ「newGroup」を追加してみます。
# groupadd -g 5678 newGroup
1 2 3 |
[root@CentOS7 ~]# groupadd -g 5678 newGroup [root@CentOS7 ~]# cat /etc/group | grep 5678 newGroup:x:5678: |
実行後、GIDが5678番のnewGroupが追加されます。
グループパスワードを変更をする「gpasswd」
グループの管理(ユーザーの追加、削除、グループパスワードの削除など)を行うには、gpasswdコマンドを使用します。
コマンドの書式
gpasswd[オプション] グループ
コマンドの主なオプション
- -a(--add ユーザー):ユーザーをグループに所属させる
- -d(--delete ユーザー):ユーザーをグループのメンバーから外す
- -r(--delete-password):グループのパスワードを削除する
- -R(--restrict):グループへのアクセスをメンバーのみに制限する
- -A(--administrators ユーザー):グループの管理者を設定する
- -M(--members ユーザー):メンバーのリストを設定する
指定したグループにユーザーを追加してみましょう。
# gpasswd -a newUser newGroup
1 2 3 4 5 |
[root@CentOS7 ~]# useradd -s /bin/bash -m newUser [root@CentOS7 ~]# gpasswd -a newUser newGroup ユーザ newUser をグループ newGroup に追加 [root@CentOS7 ~]# groups newUser newUser : newUser newGroup |
グループ名「newGroup」へ新たなユーザー「newUser」が追加されているのが分かります。
※ 指定したユーザが所属しているグループを表示するには「groups」コマンドを使用します。
グループを変更をする「groupmod」
グループIDやグループ名を変更するには、「groupmod」コマンドを使用します。
コマンドの書式
groupmod[オプション] グループ名
コマンドの主なオプション
- -n グループ名(--new-name グループ名):指定したグループ名に名前を変更する
- -g グループID(--gid グループID):指定したグループIDに変更する
- -p パスワード(--password パスワード):cryptで暗号化されたパスワードを利用する
- -R ディレクトリ(--root ディレクトリ):指定したディレクトリに変更を適用し、そのディレクトリにある構成ファイルを使用する
グループ名「newGroup」を「changeGroup」というグループ名に変更しみましょう。
# groupmod -n changeGroup newGroup
1 2 3 |
[root@CentOS7 ~]# groupmod -n changeGroup newGroup [root@CentOS7 ~]# groups newUser newUser : newUser changeGroup |
実行後、グループ「newGroup」は「changeGroup」というグループ名に変更されました。
もともと「newGroup」に所属していた「newUser」のグループも「changeGroup」変更されています。
グループを削除する「groupdel」
グループを削除するには、「groupdel」コマンドを使用します。
コマンドの書式
groupdel [オプション] グループ名
コマンドの主なオプション
- -R(--root ディレクトリ):chrootするディレクトリ
- -f(--force):既存ユーザーのプライマリグループでも削除する
登録されているグループ「changeGroup」を削除します。
# groupdel changeGroup
1 2 3 |
[root@CentOS7 ~]# groupdel changeGroup [root@CentOS7 ~]# groups newUser newUser : newUser |
実行後、削除が完了します。
アクセスを許可するグループを設定する「chgrp」
ファイルやディレクトリへアクセス許可するグループを設定するには、「chgrp」コマンドを使用します。
コマンドの書式
chgrp [オプション] 新しい所有グループ ファイル1 ファイル2…
コマンドの主なオプション
- -R(--recursive):ファイルとディレクトリを再帰的に変更する
- -v(--verbose):処理した内容を出力する
- -c(--changes):変更が行われた場合のみ処理内容を出力する
- -f(--silent):ほとんどのエラーメッセージを出力しない
オプション「-c」を利用し、実行結果を表示してみましょう。
# chgrp -c changeGroup test.sh
1 2 3 4 5 6 |
[root@CentOS7 ~]# ls -l -rwxrwxrwx. 1 newUser newGroup 0 4月 6 12:52 test.sh [root@CentOS7 ~]# chgrp -c changeGroup test.sh `test.sh' のグループを newGroup から changeGroup へ変更しました [root@CentOS7 ~]# ls -l -rwxrwxrwx. 1 newUser changeGroup 0 4月 6 12:52 test.sh |
「test.sh」のグループを newGroup から changeGroup へ変更しました
実行結果から分かる通り、当該ファイル「test.sh」の所有グループが変更されました。
まとめ
この記事では、ユーザー、パスワード、グループの設定の登録や変更、及び削除を解説しました。これらの操作は頻繁に行うものではありませんが、いざというときに使用できるよう、覚えておくのが良いでしょう。
Linux基礎知識(全12記事)
├─Linuxとは何か? Linuxの基本概要を理解しよう!
├─Linuxをインストールし、ログインしてみよう!
├─起動の仕組みとカーネルについて!
├─ディレクトリ構造とファイルシステムについて!
├─ユーザー環境(ユーザー、グループ、パスワード)の設定について!
├─ディレクトリ操作について!
├─ファイル操作について!
├─テキスト操作について!
├─Linuxの基本コマンドを覚えよう!
├─適切なアクセス制御を付与してみよう!
├─リンクとiノードについて理解を深めよう!
└─LVMとは?LVMを理解しよう?