Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

Linuxのヒント:visudoでsudoersファイルを安全に編集し、致命的なミスを防ぐ方法

この記事では、visudoを使用してsudoersファイルを編集し、ユーザーにroot権限を付与する方法を解説します。あわせて、ちょっとしたミスでLinuxシステムから永久に締め出されてしまうような、取り返しのつかない失敗を防ぐためのポイントも紹介します。

sudoersファイルとは?

sudoersファイルは、Linuxシステム上でどのユーザーがsudoコマンドを実行できるかを定義する設定ファイルです。

ファイルは以下の場所にあります:

/etc/sudoers

中身はおおよそ次のような構成になっています:

#
# このファイルは必ずroot権限で「visudo」コマンドを使って編集してください。
#
# このファイルを直接変更する代わりに、/etc/sudoers.d/ 配下に
# ローカル用の設定を追加することを推奨します。
#
# sudoersファイルの書き方の詳細はmanページを参照してください。
#
Defaults	env_reset
Defaults	mail_badpass
Defaults	secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

# ホストエイリアスの指定

# ユーザーエイリアスの指定

# コマンドエイリアスの指定

# ユーザー権限の指定
root	ALL=(ALL:ALL) ALL

# adminグループのメンバーはroot権限を取得できます
%admin ALL=(ALL) ALL

# sudoグループのメンバーに任意のコマンド実行を許可
%sudo	ALL=(ALL:ALL) ALL

# 「#include」ディレクティブの詳細はsudoers(5)を参照:

#includedir /etc/sudoers.d

sudoコマンドとは

sudoコマンドを使うと、許可されたユーザーが別のユーザーとしてコマンドを実行できます。デフォルト設定であり本来の目的でもあるのがrootユーザーとしての実行で、これによりrootアカウントに直接ログインしなくても管理作業を行えるようになります。

なぜrootでログインせずにsudoを使うのか?

答えは「セキュリティ」です。sudo経由でコマンドを実行すれば、そのコマンドだけがroot権限で動作します。つまり、明示的に許可した操作だけが特権を持つことになります。一方、rootとしてログインしている状態では、実行するすべてのコマンドが昇格した権限で動作するため、スクリプトが本来アクセスできないはずの領域に触れてしまったり、単純なタイプミス一つでシステムを破損させたりするリスクが格段に高まります。

visudo ― sudoersファイルを安全に編集するためのツール

ユーザーがsudoコマンドを使えるかどうかは、sudoersファイルの内容によって決まります。そのため、このファイルの編集には細心の注意が必要です。設定を誤ったりタイプミスをしたりすると、全ユーザーがsudoコマンドを使えなくなり、rootアクセスが完全に失われ、事実上自分のシステムから締め出される恐れがあります。

visudoは、sudoersファイルを安全に編集するための専用プログラムです。保存前に構文エラーを自動チェックしてくれるため、うっかりミスでsudoコマンドが使えなくなる事態を未然に防げます。

visudoでsudoersファイルを編集する手順

visudoを使ってsudoersファイルを安全に編集するには、管理者権限で呼び出すだけです:

sudo visudo

visudoは、システムのデフォルトテキストエディタでsudoersファイルを開きます。

sudoersファイルの書式

sudoersファイルの構文の詳細については、公式ドキュメントで丁寧に解説されています。編集前に一度目を通しておくことをおすすめします。

visudoとsudoersファイルを扱う際の安全対策

visudoすべてのエラーを防げるわけではなく、依然として利用者の注意が必要です。構文エラーの有無は検証できますが、記載内容の正誤まで判断することはできません。

つまり、書式が不正な設定は検出できますが、ユーザー名のスペルミスには気づいてくれないのです。

以下のヒントを活用すれば、visudoが検出できない種類のミスによる被害を最小限に抑えられます。

独自のsudoersファイルを作成する

デフォルトのsudoers設定ファイルを直接変更するのは避け、それを補完する独自の設定ファイルを作成しましょう。

まず、visudoでデフォルトの/etc/sudoersファイルを開き、次の行のコメントを解除します:

#includedir /etc/sudoers.d

これで、システムは/etc/sudoers.d/配下から追加の設定を読み込むようになります。以降の変更はそちらで行い、デフォルトの設定ファイルには手を触れないでおきましょう。

新しい設定ファイルを作成・編集するには、次のコマンドを使用します:

sudo visudo -f /etc/sudoers.d/mysudoersconfig

別のターミナルやリモートセッションをログインしたまま開いておく

sudo権限を変更する際は、sudo権限を持つユーザーとしてログインしたターミナルセッションをもう一つ開いたままにしておきましょう。

そうすれば、変更をその場でテストでき、万が一何かを壊してしまっても、そのセッションから設定を元に戻せます。たとえミスをしても、そのセッションはsudo権限を保持し続けているからです。

システムをバックアップする

定期的なバックアップの取得は非常に重要です。システムを壊すのは自分自身とは限りません。不良アップデート、電源サージ、不正侵入など、何が起こるかわかりません。システムをバックアップしておけば、安心して変更を加えられます。何か問題が発生しても、壊れたまま放置されずに済むからです。

  1. Linuxでg++コンパイラを使う方法:インストールから基本操作まで徹底解説

    C++開発において、コンパイル作業は欠かせないプロセスの一つです。効率的かつシンプルに扱えて、豊富な機能を備えたコンパイラがあれば、開発はぐっと快適になります。そこで活躍するのが「g++」コンパイラです。g++はコマンドラインから直接操作でき、さまざまなコンパイルニーズに柔軟に対応できる強力なツールです。本記事では、g++の導入方法から基本的な使い方まで、初心者にもわかりやすく解説します。 g++とは? g++は、コマンドライン上で動作するC++コンパイラです。Free Software Foundationによってリリースされており、GCC(GNU Compiler Collection

  2. Linuxのduコマンドでディスク容量を解放する方法

    Linuxを始めたばかりの方なら、「ディスク容量をどうやって確保すればいいのか」と悩んだことがあるかもしれません。プログラムをアンインストールすれば解決するとは限りません。特に、大量のファイルがファイルシステム全体に散らばっている場合には、なかなか簡単にはいきません。Linuxでディスク容量を解放する方法は数多くありますが、この記事ではその中でも最も手軽な方法の一つである、duコマンドと基本的なターミナルコマンドを使ったやり方を詳しく解説します。duコマンドとは?duは、ディスク使用量の情報を素早く表示してくれるLinuxの標準コマンドです。コマンド名は「disk usage(ディスク使用量)