Linux ユーザーの追加と権限昇格#
サーバーを取得したばかりの場合、通常は root ユーザーのログインを無効にし、他の一般ユーザーを使用します。そのために新しいユーザーを作成する必要があります。
ユーザーの追加#
新しいユーザーを作成します。
$ useradd boo
パスワードを設定します。
$ passwd boo
権限昇格#
この時点で、ユーザーは正常に使用できるようになりましたが、まだ権限昇格が行われていないため、多くの作業ができません。そのため、このユーザーをsudo
グループに追加し、sudo
コマンドを使用して権限昇格を行うことができます。
$ usermod -G sudo boo
通常、これで正常に追加されますが、一部のディストリビューションではデフォルトでsudo
グループが存在しないため、まずユーザーグループを追加する必要があります。
$ groupadd sudo
上記の図は、sudo
ユーザーグループを持つ Linux ディストリビューションのvisudo
設定ファイルです。
ユーザーグループを手動で追加した後、sudoers
設定ファイルを変更する必要があります。これにはいくつかの方法がありますので、状況に応じて選択してください。
sudo
グループのメンバーに任意のコマンドを実行する権限を与える
$ sudo visudo // または sudo vim /etc/sudoers
// 以下の内容を追加
# the 'sudo' group has all the sudo privileges
%sudo ALL=(ALL:ALL) ALL
- 特定のユーザーに任意のコマンドを実行する権限を直接与える
$ sudo visudo
// 以下の内容を追加(注意:%はありません)
# Allow boo to run any commands anywhere
boo ALL=(ALL:ALL) ALL
通常、ユーザーをsudo
ユーザーグループに追加し、sudo
グループのメンバーに権限を与えることをお勧めします。特定のユーザーに直接権限を与える代わりに。
まとめ#
すべてのユーザーのリストを表示する:
$ cat /etc/passwd
すべてのユーザーグループを表示する:
$ cat /etc/group
現在のログインユーザーのグループを表示する:
$ groups
指定したユーザーが所属するグループを表示する:
$ groups usernmae
ユーザーを追加する:
$ useradd username
パスワードを設定(リセット)する:
$ passwd username
ユーザーグループを追加する:
$ groupadd group_name
特定のユーザーを特定のグループに追加する:
$ usermod -G group_name username
visudo 設定ファイルを編集する:
$ sudo visudo
root ユーザーのログインを無効にする#
1. root ユーザーのシェルを変更する#
root ユーザーのログインを無効にする最も簡単な方法は、そのシェルを /bin/bash または /bin/bash(またはユーザーログインを許可する他のシェル)から /sbin/nologin に変更することです。/etc/passwd ファイルで、お好きなコマンドラインエディタを使用してファイルを開きます。
> vim /etc/passwd
次の行を変更します。
root:x:0:0:root:/root:/bin/bash
to
root:x:0:0:root:/root:/sbin/nologin
root ユーザーがログインすると、This account is currently not available というメッセージが表示されます。これはデフォルトのメッセージですが、/etc/nologin.txt ファイルにカスタムメッセージを設定することもできます。
この方法は、sudo、ftp、およびメールクライアントなど、ユーザーシェルを必要とするプログラムにのみ有効です。
2. コンソールデバイス(TTY)を使用して root ログインを無効にする#
2 番目の方法は、PAM モジュールを使用して pam_securetty を呼び出すことで、ユーザーが secure TTY にログインした場合にのみ適用されます。securetty で定義されているリストのような TTY に root ユーザーのログインを許可するためのファイル /etc/securetty。
上記のファイルでは、root ユーザーがシステム上のどのデバイスに対してもログインできないようにするため、このファイルを空にすることができます。
空のファイルを作成します。
> mv /etc/securetty /etc/securetty.orig
> touch /etc/securetty
> chmod 600 /etc/securetty
この方法には制限があり、ログイン、ディスプレイマネージャー(gdm、kdm、xdm など)、および他の起動 TTY のネットワークサービスにのみ影響を与えます。su、sudo、ssh などのプログラムやその他の関連するオープンシェルツールは引き続き root アカウントにアクセスできます。
3. Sshell Root ログインを無効にする#
リモートサーバーや VPS へのアクセスの最も一般的な方法は、Sshell を使用して root ユーザーのログインをブロックすることです。/etc/ssh/sshd_config ファイルを編集する必要があります。
> vim /etc/ssh/sshd_config
次に、PermitRootLogin
(コメントアウトされている場合)をコメント解除し、その値を no に設定します。
変更が完了したら、ファイルを保存して閉じます。その後、最新の設定変更を適用するために ssh デーモンを再起動します。
> systemctl restart sshd
OR
> service sshd restart
この方法は、openshell ツールセットにのみ影響を与え、ssh、scp、sftp などのプログラムが root アカウントにアクセスできなくなります。
4. PAM を使用してサービスへの root アクセスを制限する#
Pluggable Authentication Modules(PAM)は、Linux システム上での集中認証のための柔軟でモジュール化された方法です。PAM は、/lib/security/pam_listfile.so モジュールを使用して、特定のサービス(ログイン、ssh など)へのログインを許可しないユーザーリストを参照するための非常に柔軟な方法を提供します。
上記のモジュールは、ログインおよび sshd サービスへのアクセスを制限するために使用できます。まず、対象のサービスのファイルを開いて編集します。/etc/pam.d/ ディレクトリ内のファイルを参照してください。
> vim /etc/pam.d/login
OR
sudo vim /etc/pam.d/sshd
次に、両方のファイルに次の設定を追加します。
auth required pam_listfile.so \
onerr=succeed item=user sense=deny file=/etc/sshd/deniedusers
変更が完了したら、各ファイルを保存して閉じます。次に、純粋なファイル /etc/sshd/deniedusers を作成します。各行には 1 つの項目を含める必要があり、世界から読み取り可能ではありません。
その中に root という名前を追加し、保存して閉じます。
> vim /etc/sshd/deniedusers
また、必要なアクセス許可を設定する必要があります。
> chmod 600 /etc/sshd/deniedusers
この方法は、PAM をサポートしているプログラムとサービスにのみ影響を与えます。ftp やメールクライアントなど、システムへの root アクセスをブロックすることができます。
詳細については、関連するマニュアルページを参照してください。
$ man pam_securetty
$ man sshd_config
$ man pam