root の代わりにユーザーと sudo
作業用ユーザーの作成方法、sudo の付与、SSH 鍵の移行、root でサーバーにログインするのをやめる方法について説明します。
更新日 2026年8月23日
マシンには完全なrootアクセスが付属しており、最初にやりたくなるのはrootのまま作業を続けることです。それはrm -rfでの最初のタイプミスまで便利です。実用的な構成は異なります。日常的なタスクには通常のユーザー、rootはsudo経由で、本当に必要なときだけ使用します。
ユーザーを作成する
DebianとUbuntu:
adduser artem
usermod -aG sudo artem
AlmaLinuxとCentOS Stream:
adduser artem
passwd artem
usermod -aG wheel artem
グループが異なります。Debian系ではsudo、RHEL系ではwheelです。権限を確認します:
sudo -l -U artem
SSHキーを移動する
パネルの「アクセス」タブ /hosting/vds/m/<id> で追加されたキーはrootユーザーに紐づきます。新しいユーザー用に自分で配置する必要があります:
mkdir -p /home/artem/.ssh
cp /root/.ssh/authorized_keys /home/artem/.ssh/
chown -R artem:artem /home/artem/.ssh
chmod 700 /home/artem/.ssh
chmod 600 /home/artem/.ssh/authorized_keys
ここでのパーミッションは形式上のものではありません。緩すぎると、sshdは警告なしにキーの受け入れを拒否します。
現在のウィンドウを閉じずに、別のターミナルウィンドウで新しいユーザーとしてログインできることを確認します:
ssh artem@<address>
sudo whoami
確認が成功した後にのみ、rootログインの無効化に進んでください。
sudoの使い方
sudo systemctl restart nginx
sudo -i
sudo -u www-data ls /var/www
sudo -iは完全なrootシェルを提供します。これは一連のコマンド用であり、恒久的な作業用ではありません。sudoの呼び出しはすべてログに記録され、インシデントを調査する際の手がかりになります:
journalctl -t sudo -n 50
grep sudo /var/log/auth.log
ログの詳細については、マシンにログインしたユーザーをご覧ください。
サービス用の権限
もう一つのよくある間違いは、「動作させるため」にアプリケーションをrootで実行することです。各サービスごとに、シェルを持たないシステムユーザーを作成します:
useradd --system --no-create-home --shell /usr/sbin/nologin appsrv
chown -R appsrv:appsrv /opt/app
そうすれば、アプリケーションの脆弱性が攻撃者にマシン全体を一度に引き渡すことはありません。
よくある間違い
| 間違い | 原因 | 解決策 |
|---|---|---|
artem is not in the sudoers file | グループに属していない、または再ログインしていない | usermod -aG sudo artem、再ログイン |
| キーが受け入れられない | .sshのパーミッションが700より広い、または所有者がroot | 上記のようにchownとchmod |
| sudoのパスワードが機能しない | ユーザーにパスワードが設定されていない | passwd artem |
| sudoersの編集でsudoが壊れた | ファイル内の構文エラー | visudoのみを使用。レスキューモードで修復 |
/etc/sudoersは必ずvisudoコマンドで編集してください。保存前に構文をチェックします。壊れたファイルは全員から一度にsudoを奪います。