Linuxでユーザーを追加、変更、削除するにはどうすればよいですか?

公開: 2022-01-11

オペレーティングシステムでのユーザー管理は、システム管理者の基本的な日常業務の1つです。

LinuxベースのOSの場合、通常、ユーザーアカウントの作成、ホームディレクトリ、デフォルトシェルの変更などの既存のアカウントの変更、1つ以上のアカウントのロック/ロック解除、およびユーザーアカウントの削除が含まれます。

これらのタスクを実行するためのコマンドとプロセスを調査する前に、Linuxでユーザーアカウントを分類する方法について簡単に説明しましょう。 また、明示的に指定されていない限り、特定のコマンドはほとんどの一般的なLinuxディストリビューションで機能することに注意してください。

ユーザータイプ

ルートユーザー

rootユーザーは、操作を実行するためのすべての権限を持つOSの管理者です。 通常、 rootのみが基本的なシステムプログラムとライブラリをインストール/アンインストールまたは更新できます。 これは、システム全体の権限を持つ唯一のユーザーアカウントです。

したがって、rootユーザーはシステムの最も強力なユーザーです。

特別ユーザー

これらはログインのないユーザーです。 rootユーザーのすべての権限を持っているわけではありません。 アカウントに応じて、彼らは異なる専門的な役割を引き受けます。

これらは、アプリケーションのインストール時に自動的に作成されます。 binsynclpmailoperatorsquidは、特別なユーザーの例です。

一般ユーザー

一般的なユーザーは、作業ディレクトリ(通常はホームディレクトリ)でのみ完全な特権を持ちます。 システムを管理したり、ソフトウェアをインストールしたりする権限はありません。 sudoを介した特別な特権がないと、これらのタスクを実行できません。

ユーザーの追加

Debian / Ubuntu

DebianまたはUbuntuベースのシステムでは、CLIからユーザーを追加するためのオプションがいくつかあります。 最初のコマンドはadduserです。これはPerlスクリプトであり、バックエンドでuseraddコマンドを使用します。このコマンドの使用法については後で説明します。

ユーザーの追加は特権タスクであるため、プレフィックスとしてsudoを使用し、引数としてusernameを使用する必要があります。 その他の詳細は、プロンプトに従って指定できます。 ユーザー名とパスワードを除いて、残りの詳細はオプションです。 idコマンドを使用して、ユーザーが作成されたことを確認できます。

 $ sudo adduser johndoe Adding user `johndoe' ... Adding new group `johndoe' (1003) ... Adding new user `johndoe' (1003) with group `johndoe' ... Creating home directory `/home/johndoe' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for johndoe Enter the new value, or press ENTER for the default Full Name []: John Doe Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] Y $ $ id johndoe uid=1003(johndoe) gid=1003(johndoe) groups=1003(johndoe) $

CentOS / RHEL / Fedora(Debian / Ubuntuを含む)

次のコマンドであるuseraddは、RHELベースのOSディストリビューション全体で機能するだけでなく、Ubuntu/Debianホストでも同様に機能します。 新しいユーザーを作成するための最も簡単な構文(追加のオプションなし)は次のとおりです。

 $ sudo useradd <username>

例:

 $ sudo useradd janedoe

useraddコマンドは、ユーザーの作成中に指定できる複数のオプションをサポートします。最も一般的なのは、ユーザーID(UID)、グループID(GID)、デフォルトのシェルとホームディレクトリなどです。そのような例の1つを以下に示します。

 $ sudo useradd -s /bin/sh -d /data/newhome -c "Jane Doe" -u 1005 janedoe

idコマンドを使用して、新しく作成されたユーザーを確認できます。

 $ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe) $

ユーザーの変更

多くの場合、組織の要件、ユーザーの要求、またはシステムの移行に基づいて、既存のユーザーの一部のプロパティを変更する必要があります。 これらのプロパティのほとんどは簡単に変更できますが、ユーザー環境やユーザーが所有またはアクセスするファイルへのアクセスにどのように影響するかを確認する必要があります。

デフォルトのシェル

デフォルトのシェルは、ユーザーがローカルまたはSSH経由で新しいCLIセッションを起動したときに作成されるCLIシェルです。 最近のほとんどのシステムにはデフォルトのユーザーBashがありますが、Linuxディストリビューションやユーザーの環境によって異なる場合があります。 ユーザーのデフォルトシェルを変更するには、次を使用します。

 $ sudo usermod -s <shell> <username>

例:

 $ getent passwd janedoe janedoe:x:1005:1005::/data/newhome:/bin/sh $ sudo usermod -s /bin/bash janedoe $ getent passwd janedoe janedoe:x:1005:1005::/data/newhome:/bin/bash $

上記の出力からわかるように、ユーザーjanedoeのシェルは/bin/shから/bin/bashに変更されています。

ホームディレクトリ

デフォルトのシェルと同様に、ユーザーのホームディレクトリは、次を使用して別の場所に変更できます。

 $ sudo usermod -d <new_directory_path> <username>

以下の例では、ユーザーjanedoeのユーザーホームディレクトリが/data/janedoeに変更されています。

 $ getent passwd janedoe janedoe:x:1005:1005::/data/newhome:/bin/bash $ sudo usermod -d /data/janedoe janedoe $ getent passwd janedoe janedoe:x:1005:1005::/data/janedoe:/bin/bash $

切り替える前に、新しいディレクトリに適切な所有権と権限があることを確認してください。 そうしないと、ユーザーはログイン中または新しいホームディレクトリでの作業中に問題に直面する可能性があります。

ユーザーID

以下を使用して、既存のユーザーのユーザーIDを変更できます。

 $ sudo usermod -u <new_uid> <username>

例:

 $ getent passwd janedoe janedoe:x:1005:1005::/data/janedoe:/bin/bash $ sudo usermod -u 1010 janedoe $ getent passwd janedoe janedoe:x:1010:1005::/data/janedoe:/bin/bash $

繰り返しますが、UIDを変更すると、Linuxファイルシステムが所有権とアクセス許可をファイルまたはディレクトリにマップする方法が変更されます。 ユーザーのホームディレクトリとその内容、およびシステム内の任意の場所にある他のすべてのファイル(元々はユーザーが所有していた(古いUIDを使用))がUIDマップに変更されていることを確認します。 そうしないと、CLIセッションおよびユーザーによるファイルアクセスで問題が発生する可能性があります。

デフォルトグループ

デフォルトのグループは通常、ユーザーのデフォルトのグループIDであり、別のGIDが指定されていない限り、ユーザーの作成中に作成されます。 Linuxでは、 usermodコマンドを使用してユーザーのデフォルトグループを変更することもできます。 使用する構文は次のとおりです。

 $ sudo usermod -g <new_gid or group_name> <username>

これが1つの例です:

 $ getent passwd janedoe janedoe:x:1010:1005::/data/janedoe:/bin/bash $ sudo usermod -g 1001 janedoe $ getent passwd janedoe janedoe:x:1010:1001::/data/janedoe:/bin/bash $

繰り返しになりますが、新しいグループIDが、ユーザーのホームディレクトリ、コンテンツ、および所有権のアクセス許可を適切に移行するために適用可能な他のすべてのファイルまたはディレクトリに設定されていることを確認してください。

グループの追加/削除

デフォルトのグループに加えて、Linuxのユーザーはセカンダリグループの一部になることができます。 usermodコマンドを使用して、ユーザーが属するグループをいつでも追加または削除できます。

 $ sudo usermod -a -G <group_id or group_name> <username>

例:

 $ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe) $ sudo usermod -a -G docker janedoe $ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe),1001(docker) $

同様に、セカンダリグループの1つからユーザーを削除するには、次に示すようにgpasswdコマンドを使用します。

 $ sudo gpasswd -d <username> <groupname>

例:

 $ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe),1001(docker) $ sudo gpasswd -d janedoe docker Removing user janedoe from group docker $ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe) $

GECOSコメント

/etc/passwdのGECOSフィールドには、ユーザー情報またはコメントが含まれています。 既存のユーザーのこの情報は、次のように変更できます。

 $ sudo usermod -c <comment> <username>

例:

 $ getent passwd janedoe janedoe:x:1005:1005::/data/janedoe:/bin/bash $ sudo usermod -c "Jane Doe - System Admin" janedoe $ getent passwd janedoe janedoe:x:1005:1005:Jane Doe - System Admin:/data/janedoe:/bin/bash $

コメントまたはユーザーの詳細にスペースが含まれている場合は、上記の例のように、そのフィールドを引用符で囲むことに注意してください。

ログイン名

ユーザーのログイン名は、 usermodコマンドを使用して-lフラグを使用して変更することもできます。

 $ sudo usermod -l <new_username> <old_username>

例:

 $ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe) $ sudo usermod -l jane_doe janedoe $ id jane_doe uid=1005(jane_doe) gid=1005(janedoe) groups=1005(janedoe) $

使用する場合は常に、新しい名前に従ってユーザー参照を更新することを忘れないでください。 idのようなコマンドでも、新しいユーザー名を指定する必要があります。

ユーザーの削除

userdelコマンドを使用して、ユーザーをLinuxから削除できます。

 $ sudo userdel <username>

例:

 $ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe) $ sudo userdel janedoe $ id janedoe id: 'janedoe': no such user $

ユーザーをそのホームディレクトリとメールスプールとともに削除するには、 -rフラグも追加します。

 $ sudo userdel -r <username>

特にUbuntuベースのシステムの場合、 deluserコマンドを使用してユーザーを削除することもできます。

 $ sudo deluser <username>

同様に、ホームディレクトリとメールスプールも削除するには、次を使用します。

 $ sudo deluser --remove-home <username>

詳細情報およびその他のサポートされているオプションについては、以下を使用したさまざまなコマンドのメインページを参照してください。

 $ man adduser $ man useradd $ man usermod $ man deluser $ man userdel

結論

この記事では、Linuxシステムでのユーザー管理のさまざまな側面について説明しました。 これには、さまざまなカテゴリのユーザーの説明と、それらを追加および削除する方法が含まれます。 また、既存のユーザーのパラメーターを変更するのに役立つさまざまなオプションについても説明します。 さまざまなコマンドでサポートされるすべての可能性を網羅しているわけではありませんが、システム管理者が日常業務で遭遇する多くの一般的な管理タスクを網羅しています。

あなたはまた読むことに興味があるかもしれません:Linuxでファイルとディレクトリを削除する方法は?