2 ローカル・アカウント構成

警告:

Oracle Linux 7は現在延長サポート中です。詳細は、Oracle Linux拡張サポートおよびOracleオープン・ソース・サポート・ポリシーを参照してください。

できるだけ早くアプリケーションとデータをOracle Linux 8またはOracle Linux 9に移行してください。

この章では、ローカル・ユーザー/グループ・アカウントを構成および管理する方法について説明します。

ユーザーおよびグループ構成について

ユーザー・マネージャGUI (system-config-users)を使用すると、ユーザーおよびグループを追加または削除したり、パスワード、ホーム・ディレクトリ、ログイン・シェル、グループ・メンバーシップなどの設定を変更できます。また、useraddgroupaddなどのコマンドを使用できます。

図2-1 ユーザー・マネージャ


この図は、「ユーザー」タブが選択されたユーザー・マネージャGUIを示しています。

数百のサーバーと数千のユーザーが含まれることがあるエンタープライズ環境では、多くの場合、ユーザーおよびグループのアカウント情報は各サーバーのファイルではなく中央リポジトリに保持されます。ユーザーおよびグループ情報を中央サーバーに構成し、Lightweight Directory Access Protocol (LDAP)やNetwork Information Service (NIS)などのサービスを使用してこの情報を取得できます。さらに、ユーザーのホーム・ディレクトリを中央サーバーに作成し、ユーザーがシステムにログインすると自動的にこれらのリモート・ファイル・システムをマウントしたりリモート・ファイル・システムにアクセスできます。

ユーザー・アカウントのデフォルト設定の変更

アカウントのデフォルト設定を表示するには、次のコマンド使用します。

# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

INACTIVEは、ユーザーのパスワードの期限が切れた場合にシステムでアカウントを何日後にロックするかを指定します。0に設定すると、アカウントは即時にロックされます。-1に設定すると、アカウントはロックされません。

SKELは、新規に作成されたユーザーのホーム・ディレクトリにその内容をコピーするテンプレート・ディレクトリを定義します。このディレクトリの内容は、SHELLで定義されたデフォルトのシェルと一致する必要があります。

ユーザー・アカウントのデフォルトの設定を変更するには、useradd -Dに各オプションを指定します。たとえば、INACTIVEHOMEおよびSHELLのデフォルトを変更するには、次のようにします。

# useradd -D -f 3 -b /home2 -s /bin/sh

ノート:

デフォルトのログイン・シェルを変更する場合は、通常、新しいSKELテンプレート・ディレクトリも新しいシェルに適した内容で作成します。

ユーザーのSHELL/sbin/nologinを指定すると、ユーザーは、システムに直接ログインできませんが、プロセスはそのユーザーのIDを使用して実行されます。この設定は通常、root以外のユーザーで実行するサービスに対して使用されます。

デフォルトの設定は、/etc/default/useraddファイルに格納されています。

詳細は、パスワードのエージングの構成およびuseradd(8)マニュアル・ページを参照してください。

ユーザー・アカウントの作成

useraddコマンドを使用してユーザー・アカウントを作成するには:

  1. 次のコマンドを入力して、ユーザー・アカウントを作成します。

    # useradd [options] username

    オプションを指定すると、アカウントの設定をデフォルトから変更できます。

    デフォルトでは、ユーザー名の引数を指定してオプションを指定しないと、useraddによって、次に使用可能なUIDを使用してロックされたユーザー・アカウントが作成され、ユーザーのグループとしてGROUPに定義されている値に割り当てられるのではなく、ユーザー・プライベート・グループ(UPG)に割り当てられます。

  2. アカウントにパスワードを割り当てて、ロックを解除します。

    # passwd username

    コマンド・プロンプトによって、アカウントのパスワードを入力するように求められます。

    非対話形式でパスワードを変更する場合は(例: スクリプトから)、かわりにchpasswdコマンドを使用します。

    echo "username:password" | chpasswd

または、newusersコマンドを使用すると、同時に複数のユーザー・アカウントを作成できます。

詳細は、chpasswd(8)newusers(8)passwd(1)およびuseradd(8)の各マニュアル・ページを参照してください。

umask、setgidおよび削除制限ビットについて

プライマリ・グループがUPGではないユーザーの/etc/profileまたは/etc/bashrcでは、umaskが0022に設定されており、これによって、ユーザーの所有するファイルの他のユーザー(プライマリ・グループの他のメンバーも含む)による変更が防止されます。

プライマリ・グループがUPGのユーザーのumaskは0002です。これは、同じグループに他のユーザーが存在していないことを想定しています。

同じグループのユーザーに同じディレクトリ内のファイルへの書込みアクセス権を付与するには、ディレクトリのグループ所有権をグループに変更し、ディレクトリにsetgidビットを設定します。

# chgrp groupname directory
# chmod g+s directory

そのようなディレクトリに作成されたファイルのグループは、ファイルを作成したユーザーのプライマリ・グループではなく、ディレクトリのグループに設定されます。

削除制限ビットを使用すると、ファイルまたはディレクトリの所有者を除いて、権限のないユーザーがファイルを削除したり名前を変更することができなくなります。

ディレクトリに削除制限ビットを設定するには:

# chmod a+t directory

詳細は、chmod(1)マニュアル・ページを参照してください。

アカウントのロック

ユーザーのアカウントをロックするには、次のように入力します。

# passwd -l username

アカウントをロック解除するには:

# passwd -u username

詳細は、passwd(1)マニュアル・ページを参照してください。

ユーザー・アカウントの変更または削除

ユーザー・アカウントを変更するには、usermodコマンドを使用します。

# usermod [options] username

たとえば、(ユーザーのログイン・グループ以外の)補助グループにユーザーを追加するには、次のようにします。

# usermod -aG groupname username

次の例のように、groupsコマンドを使用して、ユーザーが属するグループを表示できます。

# groups root
root : root bin daemon sys adm disk wheel 

ユーザー・アカウントを削除するには、userdelコマンドを使用します。

# userdel username

詳細は、groups(1)userdel(8)およびusermod(8)の各マニュアル・ページを参照してください。

グループの作成

groupaddコマンドを使用してグループを作成するには:

# groupadd [options] groupname

通常は-gオプションを使用して、グループID (GID)を指定します。たとえば:

# groupadd -g 1000 devgrp

詳細は、groupadd(8)マニュアル・ページを参照してください。

グループの変更または削除

グループを変更するには、groupmodコマンドを使用します。

# groupmod [options] username

ユーザー・アカウントを削除するには、groupdelコマンドを使用します。

# groupdel username

詳細は、groupdel(8)およびgroupmod(8)の各マニュアル・ページを参照してください。

パスワードのエージングの構成

ユーザー・パスワードのエージング方法を指定するには、/etc/login.defsファイルで次の設定を編集します。
設定 説明

PASS_MAX_DAYS

パスワードを変更するまでに使用できる最大日数。デフォルト値は99,999日です。

PASS_MIN_DAYS

パスワードを変更する間隔として許容される最大日数。デフォルト値は0日です。

PASS_WARN_AGE

パスワードの期限が切れる前に警告が表示される日数。デフォルト値は7日です。

詳細は、login.defs(5)マニュアル・ページを参照してください。

ユーザー・アカウントが非アクティブになってからロックされるまでの期間を変更するには、usermodコマンドを使用します。たとえば、非アクティブ期間を30日に設定します。

# usermod -f 30 username

新規ユーザー・アカウントのデフォルトの非アクティブ期間を変更するには、useraddコマンドを使用します。

# useradd -D -f 30

値-1は、非アクティブのためにユーザー・アカウントがロックされることはないことを示します。

詳細は、useradd(8)およびusermod(8)の各マニュアル・ページを参照してください。

ユーザーへのsudoアクセス権の付与

デフォルトでは、Oracle Linuxシステムはrootとして直接ログインできないように構成されています。事前に指定ユーザーとしてログインしてから、suまたはsudoを使用してrootとしてタスクを実行します。この構成により、システム・アカウンティングで特権管理アクションを実行するユーザーの元のログイン名を追跡できます。特定ユーザーにsudoを使用して特定の管理タスクを実行できる権限を付与するには、visudoコマンドを使用して/etc/sudoersファイルを変更します。

たとえば、次のエントリでは、sudoを使用する場合にユーザーerinにはrootと同じ権限を付与しますが、frankには権限を限定して定義し、systemctlrpm、およびyumなどのコマンドのみを実行できるようにします。

erin           ALL=(ALL)       ALL
frank          ALL= SERVICES, SOFTWARE

詳細は、su(1)sudo(8)sudoers(5)およびvisudo(8)の各マニュアル・ページを参照してください。