CodeGym /コース /Docker SELF /ユーザー管理: コマンド adduser, usermod, passwd

ユーザー管理: コマンド adduser, usermod, passwd

Docker SELF
レベル 2 , レッスン 1
使用可能

1. なぜユーザー管理を理解するのが重要なの?

今日はユーザー管理について深掘りするよ、それはLinux管理の重要な部分だからね。ユーザーを作成して、環境を設定して、パスワードを管理する—これ全部、作業の大事なツールになるよ。じゃあ始めよう!

多くの場合、Linuxサーバーにはたくさんのユーザーがいるんだよね。システムはそれぞれのユーザーに特定の権限を与えて、データを守ったり混乱を避けたりするんだ。それで、新しいユーザー(例えば、チームのデベロッパーとか)を追加したり、環境を設定したり(例えば、shellを変更したり)、必要に応じてアクセスを制限したりする方法を知る必要があるんだ。


2. adduserを使ったユーザー作成

Linuxでは、adduserコマンドが提供されています。これはuseraddコマンドの親しみやすいバージョンで、新しいユーザーを簡単に素早く作成できます:

基本構文

adduser ユーザー名

ユーザー作成時に何が起こるの?

  1. ユーザーのために/etc/passwdファイルに新しいエントリが作成されます。
  2. ホームディレクトリが生成されます(例: /home/ユーザー名)。
  3. 基本的なパラメータが設定されます(例: デフォルトのshellなど)。
  4. パスワードや追加情報の入力を求められます(例: 名前、電話番号 — これらのデータは必須ではありません)。

新しいユーザーdev_userを作成してみましょう:

sudo adduser dev_user

このコマンドを入力後、以下のプロンプトが表示されます:

  1. ユーザーのパスワードを指定する。
  2. 追加情報を入力する(Enterキーを押すだけでスキップ可能)。

確認

ユーザーが作成されたことを確認するには、/etc/passwdファイルを確認します:

cat /etc/passwd | grep dev_user

dev_userに関する情報を含む行が表示されます。


3. usermod を使ったユーザーの設定

ユーザーがすでに作成されている場合、その設定を変更する必要があるかもしれないよ。例えば、名前の変更、別のシェルの指定、またはグループへの追加。

ユーザー名の変更

まず、ユーザーがシステムにログインしていないことを確認してね。その後、以下のコマンドを実行しよう:

sudo usermod -l 新しい名前 古い名前

例:

sudo usermod -l developer dev_user

これでユーザー dev_user の名前が developer に変わるよ。ただし、ホームディレクトリはまだ古いままだよ。

デフォルトシェルの変更

例えば、ユーザーのシェルを /bin/zsh に変更したい場合、以下を実行しよう:

sudo usermod --shell /bin/zsh developer

シェルが変更されたか確認するには、次のコマンドを使ってね:

cat /etc/passwd | grep developer

ホームディレクトリの変更

新しいユーザーが別のホームディレクトリで作業するようにしたい場合、以下を行ってね:

sudo usermod -d /新しい/パス developer
重要:

ディレクトリがまだ存在しない場合は、オプション -m を使って作成し、古いディレクトリの内容が移動されるようにしてね:

sudo usermod -d /home/new_developer -m developer

4. passwdコマンドでのパスワード管理

パスワードの設定と変更

ユーザーのパスワードを設定(または変更)するには、次のコマンドを使用します:

sudo passwd ユーザー名

例:

sudo passwd developer

システムは、新しいパスワードを間違えないように2回入力するよう求めてきます。

次回ログイン時のパスワード変更を強制する

これは、ユーザーを作成して、初回ログイン時にユーザー自身がパスワードを設定するようにしたい場合に役立ちます:

sudo passwd -e developer

これにより、developerユーザーはシステムにログインすると、パスワード変更の必要性についてメッセージを表示されます。


5. 実践

課題 1: 新しいユーザーを作成する

  1. ユーザー tester を追加します:

    sudo adduser tester
    
  2. ユーザーが作成されたことを確認します:

    cat /etc/passwd | grep tester
    

課題 2: ユーザー設定を変更する

  1. ユーザー名を変更します:

    sudo usermod -l test_user tester
    
  2. ユーザーのホームディレクトリを変更します:

    sudo usermod -d /home/test_user -m test_user
    
  3. 変更が適用されたことを確認します:

    ls -l /home/
    
  4. ユーザーの shell を変更します:

    sudo usermod --shell /bin/zsh test_user
    
  5. ユーザーの更新されたデータを確認します:

    cat /etc/passwd | grep test_user
    

課題 3: ユーザーに新しいパスワードを設定する

  1. ユーザーにパスワードを設定します:

    sudo passwd test_user
    
  2. 次回ログイン時にユーザーがパスワードを変更するように強制します:

    sudo passwd -e test_user
    

6. Linuxでのパイプ|の基礎知識

パイプ|はUnix/Linuxの仕組みで、一つのコマンドの出力(stdout)を別のコマンドの入力(stdin)として渡すことができます。これはデータ処理の"パイプライン"を作り出すための強力なツールです。

どうやって動くの?

コマンド間にパイプを使うと、Linuxは最初のコマンドの標準出力を次のコマンドの標準入力に送ります。これにより、一時ファイルを使わずに大量のデータを効率的に処理できます。

構文:

コマンド1 | コマンド2 | コマンド3
  • コマンド1はデータを生成します。
  • コマンド2は生成されたデータを処理します。
  • コマンド3はさらに処理を行うか、結果を保存します。

例:

ファイル一覧を表示し、パターンでフィルタリング:

ls -l | grep ".txt"

ここで、ls -lはファイル一覧を出力し、grepは拡張子.txtのファイルだけをフィルタリングします。

特定の単語を含む行数をカウント:

cat file.txt | grep "Linux" | wc -l

まずファイルの内容を出力し、"Linux"を含む行を検索し、最後にその数をカウントします。

パイプの利点:

  • 複雑な操作の簡素化。
  • 一時ファイルの使用を最小限に。
  • Linuxの強力なユーティリティを組み合わせてタスクを自動化可能。

7. Linuxでのgrepの基礎

grep (Global Regular Expression Print) は、Unix/Linuxでのコマンドラインユーティリティで、指定したパターンに一致するファイル内の行を検索するためのものだよ。正規表現のサポートや柔軟な設定のおかげで、データのフィルタリングや検索によく使われる。

grepはどうやって動作するの?

  • grepは、テキストファイル(または標準入力)を読み取って、指定されたパターンに一致する行を検索して出力する。
  • パターンが見つからない場合、何も出力されない。

ファイルリストを表示してパターンでフィルタリングする:

ls -l | grep ".txt"
  1. まず、ls -lコマンドが実行され、現在のディレクトリ内のファイルリストを出力する。
  2. 最初のコマンドlsの出力は、パイプ|を使ってgrepコマンドへの入力としてリダイレクトされる。
  3. 2番目のコマンドは受け取った行をフィルタリングし、".txt"を含む行だけを出力する。

特定の単語を含む行をカウントする:

cat file.txt | grep "Linux" | wc -l
  1. 最初にcat file.txtコマンドが実行され、file.txtファイルの内容を画面に出力する。
  2. 最初のコマンドcatの出力は、パイプ|を使って2つ目のコマンドgrepへの入力とする。
  3. 2番目のコマンドは受け取った行をフィルタリングし、"Linux"を含む行だけを出力する。
  4. その後、2番目のコマンドgrepの出力は、パイプ|を使って3つ目のコマンドwcへの入力とする。
  5. 3番目のコマンドは受け取った行の数を数えて表示する。

8. よくあるミスと注意点

  1. ユーザー名変更時の "user is currently logged in" エラー。 ユーザーがシステムにログインしている場合、名前を変更できないよ。ユーザーがログアウトしているか確認してね。

  2. ホームディレクトリ変更時のエラー。 -m を指定しないと、古いディレクトリの内容が新しいディレクトリに移動されないよ。その結果、ユーザーのデータが失われる可能性があるから注意。

  3. ユーザーにパスワードを設定し忘れる。 adduser を使ってユーザーを作成した後、必ずパスワードが設定されていることを確認してね。パスワードがなければ、ログインできないよ。

  4. UIDGID の値。 一部の管理者は、ユーザー作成時に UID (ユーザー識別子) と GID (グループ識別子) を指定したい場合がある。それには useradd コマンドを使用するけど、これはLinuxの深堀り学習用のトピックだね。


9. 実践的な使い方

想像してみて: あなたは会社のサーバー管理者。開発者たちがあなたのところに訪れ、それぞれがシステムへの個別設定のアクセスを要求してきます。あなたは以下のことができます:

  • ユーザーを作成し、必要なアクセス権を割り当てる。
  • 環境(例: shell)をそれぞれの好みに応じて設定する。
  • パスワードを管理し、安全性を確保する。

これらのコマンドは、DevOpsやシステム管理者の面接でも役立ちます。ユーザーをどう作成・設定するか尋ねられたり、実践課題として依頼されたりするかもしれません。


チートシート: 主なコマンド

コマンド 説明
sudo adduser ユーザー名 新しいユーザーを作成する。
sudo usermod -l 新しい名前 古い名前 ユーザー名を変更する。
sudo usermod --shell パス ユーザー名 デフォルトのshellを指定する。
sudo usermod -d パス ユーザー名 ホームディレクトリを変更する。
sudo passwd ユーザー名 新しいパスワードを設定する。
sudo passwd -e ユーザー名 次回ログイン時にパスワード変更を強制する。

練習してみよう!Linux は実際に手を動かすことが重要だよ。コマンドを試せば試すほど、実際のシステムでの作業が簡単になるよ。

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION