Linux の基礎知識

【Linuxの基礎知識】ユーザー環境(ユーザー、グループ、パスワード)の設定について!

2020年4月7日

Linux上ではユーザー、パスワード、及び所属するグループの設定を任意に変更できたり、削除したりできます。また、これらの設定を誤るとログインできなくなったり、予期せぬ動作を引き起こすので、実際に試すときは細心の注意を払うようにしましょう。

本記事では実施方法を解説していきますので、ぜひ理解を深めていきましょう。

ユーザーアカウントを操作する

業務用として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」コマンドで確認してみてください。

ユーザー「hoge」の作成が完了しました。

ユーザーパスワードを変更する「passwd

パスワードを変更するには、「passwd」コマンドを使用します。

オプションを付与することにより、パスワードをの削除や変更を行うことが出来ます。

コマンドの書式

passwd[オプション] ユーザー名

コマンドの主なオプション

  • -l ユーザー名:指定したユーザーをロックする
  • -u ユーザー名:指定したユーザーのロックを解除する
  • -d ユーザー名:パスワードを削除する
  • -S ユーザー名:パスワードの状態を表示する
  • -n 日数 ユーザー名:パスワード変更後、再度変更可能になるまでの日数を設定する
  • -x 日数 ユーザー名:パスワードが有効な日数を設定する
  • -w 日数 ユーザー名:パスワード失効前に警告を表示する日数を設定する
  • -i 日数 ユーザー名:パスワードが有効期限に達した後、パスワードを無効にするまでの猶予期間を設定する

ここではオプションを省略して、「hoge」のパスワードを変更してみます。
実行後、新しいパスワードの入力を2回求められるので、任意のパスワードを入力し変更を完了させます。

# passwd hoge

パスワードが変更されました。

ユーザー設定を変更する「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

ユーザIDが「1234」に変更されました。

ユーザー登録を抹消する「userdel

ユーザを削除するには、「userdel」コマンドを使用します。

コマンドの書式

userdel[オプション] ユーザー名

コマンドの主なオプション

  • -r:対象ユーザーのホームディレクトリとメールスプールも同時に削除する

ユーザ「hoge」を削除し、同時に利用しているディレクトリも削除するには、下記のコマンドを実行します。

# userdel -r hoge

実行後、ユーザー:hogeに関する情報(パスワードファイルやホームディレクトリ等)が、同時に削除されました

グループを操作する

groupとは、ユーザーが属する集団、つまり部門を意味すると考えると分かり易いでしょう。

ユーザーMr.Sは、二つのグループに所属している

グループに対しての設定は、グループ内のすべてのユーザーに適用されます。また、ユーザーは複数のグループに所属することが出来ます。

ユーザーとグループの関係

  • グループは自由に作成することが出来る
  • グループと言う単位で作業する範囲を限定できる
  • 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

実行後、GIDが5678番のnewGroupが追加されます。

グループパスワードを変更をする「gpasswd

グループの管理(ユーザーの追加、削除、グループパスワードの削除など)を行うには、gpasswdコマンドを使用します。

コマンドの書式

gpasswd[オプション] グループ

コマンドの主なオプション

  • -a(--add ユーザー):ユーザーをグループに所属させる
  • -d(--delete ユーザー):ユーザーをグループのメンバーから外す
  • -r(--delete-password):グループのパスワードを削除する
  • -R(--restrict):グループへのアクセスをメンバーのみに制限する
  • -A(--administrators ユーザー):グループの管理者を設定する
  • -M(--members ユーザー):メンバーのリストを設定する

指定したグループにユーザーを追加してみましょう。

# gpasswd -a 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

実行後、グループ「newGroup」は「changeGroup」というグループ名に変更されました。
もともと「newGroup」に所属していた「newUser」のグループも「changeGroup」変更されています。

グループを削除する「groupdel

グループを削除するには、「groupdel」コマンドを使用します。

コマンドの書式

groupdel [オプション] グループ名

コマンドの主なオプション

  • -R(--root ディレクトリ):chrootするディレクトリ
  • -f(--force):既存ユーザーのプライマリグループでも削除する

登録されているグループ「changeGroup」を削除します。

# groupdel changeGroup

実行後、削除が完了します。

アクセスを許可するグループを設定する「chgrp

ファイルやディレクトリへアクセス許可するグループを設定するには、「chgrp」コマンドを使用します。

コマンドの書式

chgrp [オプション] 新しい所有グループ ファイル1 ファイル2…

コマンドの主なオプション

  • -R(--recursive):ファイルとディレクトリを再帰的に変更する
  • -v(--verbose):処理した内容を出力する
  • -c(--changes):変更が行われた場合のみ処理内容を出力する
  • -f(--silent):ほとんどのエラーメッセージを出力しない

オプション「-c」を利用し、実行結果を表示してみましょう。

# chgrp -c changeGroup test.sh

「test.sh」のグループを newGroup から changeGroup へ変更しました
実行結果から分かる通り、当該ファイル「test.sh」の所有グループが変更されました。

まとめ

この記事では、ユーザー、パスワード、グループの設定の登録や変更、及び削除を解説しました。これらの操作は頻繁に行うものではありませんが、いざというときに使用できるよう、覚えておくのが良いでしょう。

よく読まれている記事

1

目次1 Shellとは?1.1 代表的なシェルの種類2 シェルスクリプトの違いとは? Shellとは? Shellとは、人間の理解できる言葉を機会へ伝えるプログラムです。 Linux環境でコマンドプロ ...

2

Linuxは主にサーバー用として利用されるOSです。大規模な基幹システムの開発者、ロボットや家電開発等の組み込み系エンジニア、ネットワーク機器やデータベースに携わるインフラエンジニアは触れることが多い ...

3

プログラミング言語を習得しようと思った時、必ずと言っていいほど候補として挙げられるのが「Java」というプログラミング言語です。 「Java」は、現在日本で最も使われている言語であり、非常に人気のある ...

4

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

-Linux の基礎知識

Copyright© Beエンジニア , 2020 All Rights Reserved.