はじめに
Linuxサーバーの管理において、開発者に直接rootアカウントを提供することは推奨されません。その理由はいくつかあります。
-
セキュリティ: rootアカウントはシステム上の最高権限を持ち、重要なファイルの削除、システム設定の変更、悪意のあるソフトウェアのインストールなど、あらゆる操作を実行できます。開発者が不注意または意図的にroot権限を乱用すると、深刻なセキュリティ問題につながる可能性があります。
-
責任の明確化: 一般ユーザーアカウントを使用することで、システム管理者が誰がどの操作を行ったかを追跡しやすくなります。各ユーザーは独自のアカウントを持ち、その活動はシステムログに記録されるため、監査が容易になります。
-
最小権限の原則: 最小権限の原則によれば、各ユーザーは自身の業務を遂行するために必要最小限の権限のみを持つべきです。直接rootアカウントを使用することはこの原則に反し、リスクを増大させます。
-
誤操作のリスク: 開発者の主な業務はアプリケーション開発であり、システム管理ではありません。開発者がシステム管理のベストプラクティスに不熟悉な場合、無意識に有害な操作を行う可能性があります。
-
コンプライアンス: 多くの業界基準や規制では、スーパーユーザーのアクセス権を厳格に管理することが要求されます。直接root権限を付与することは、これらの規定に違反する可能性があります。
-
管理の容易さ: 開発者用の専用アカウントを作成することで、その具体的なニーズに応じて権限をカスタマイズでき、全面的なroot権限を与える必要がなくなります。これにより、ユーザー権限をより効果的に管理し、権限過剰による潜在的なリスクを減らすことができます。
解決策
一般ユーザーアカウントの作成: 開発者用に一般ユーザーアカウントを作成し、必要に応じて対応するユーザーグループに追加します。
ユーザー作成のLinuxコマンド:
sudo useradd -m devuser
useraddコマンドを使用してユーザーを追加します。ユーザー名は意味がわかりやすいものにすることが望ましいです。
完了後、/homeディレクトリを確認すると、ユーザー名と同名のユーザーディレクトリが自動作成されていることがわかります。
新規アカウントのパスワード設定コマンド:
sudo passwd devuser
このコマンド実行後、パスワードとその確認の入力を求められます。パスワードには必ず文字、数字、記号の3種類を含める必要があり、セキュリティレベルが十分であることが重要です。
パスワード設定後、アカウント権限を設定します。追加したユーザーは、/etc/sudoersファイルの内容を変更することで権限を付与できます。
コマンド:
sudo visudo
sudoersファイルは通常、rootユーザーでも書き込み権限がないため、まず権限を付与する必要があります。
sudo chmod u+w /etc/sudoers
権限付与後、ファイルを開くと、以下のようなエントリが表示されます:
developer ALL=(ALL) NOPASSWD: ALLまたは root ALL=(ALL) ALL
その下に「newuser ALL=(ALL) ALL」(ここでのnewuserはあなたのユーザー名)を追加し、保存して終了します。
devuser ALL=(ALL) ALL
変更後、rootアカウントのsudoersファイルへの変更権限を取り戻します:
sudo chmod u-w /etc/sudoers
これで、新しく作成したユーザーでサーバーにログインできるようになります。