このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Linuxコマンドの基本:sudoersファイルを編集する:visudoコマンド

sudoersファイルを編集する:visudoコマンド

 Linuxシステムにおいて、sudoコマンドを利用して特定のユーザーに管理者権限を付与する際、設定ファイルである/etc/sudoersを編集する必要があります。しかし、このファイルを直接テキストエディタで開いて編集することは非常に危険です。誤った記述をすると、sudoが正しく動作しなくなり、最悪の場合、どのユーザーもsudoを使用できなくなる可能性があります。その結果、システム管理が困難になり、復旧には高度な知識が必要となる場合があります。

 そこで、ここでは安全に/etc/sudoersファイルを編集するための専用コマンドであるvisudoについて解説します。

visudoコマンドの概要

 visudoは、/etc/sudoersファイルを安全に編集するための特別なコマンドです。このコマンドは以下の特徴を持ちます。

  • 文法チェック:編集内容を保存する前に、記述の文法を自動的にチェックします。
  • 同時編集の防止:複数のユーザーが同時に/etc/sudoersを編集することを防ぎます。
  • ロック機能:編集中にファイルをロックし、他のプロセスからの変更を防ぎます。

注意visudoコマンドの実行にはスーパーユーザー権限が必要です。

visudoコマンドの使用方法

スーパーユーザーになる

まず、visudoを実行するためにスーパーユーザー(root)に切り替えます。

user01@ubuntu:~$ su -
パスワード:
root@ubuntu:~#

visudoの実行

スーパーユーザーの状態でvisudoコマンドを実行します。

root@ubuntu:~# visudo

エディタの起動

 visudoを実行すると、デフォルトのテキストエディタ(Ubuntuの場合はnanoエディタ)が起動し、/etc/sudoersファイルが開かれます。

/etc/sudoersファイルの編集

 /etc/sudoersファイルに必要な設定を追加または修正します。例えば、ユーザーuser01にsudo権限を付与する場合、以下の行を追加します。以下のように閉じカッコ「)」の入力をミスします。

user01 ALL=(ALL ALL

エディタの操作方法(nanoの場合)

  • 保存Ctrl + O を押してEnterキーを押す。
  • 終了Ctrl + X を押す。

visudoによる文法チェック

 編集内容を保存して終了すると、visudoは自動的に文法チェックを行います。もし記述に誤りがある場合、以下のようなエラーメッセージが表示されます。

/etc/sudoers:48:17: 構文エラー
user01 ALL=(ALL ALL
                ^~~

エラーへの対応

エラーメッセージが表示された場合、以下のオプションが提示されます。

オプション:
  e -- sudoersファイルを再度編集します
  x -- sudoersファイルへの変更を保存せずに終了します
  Q -- sudoersファイルへの変更を保存して終了します (*危険です!*)
  • e:エディタに戻り、誤りを修正します。
  • x:変更を破棄して終了します。
  • Q:誤りがあるまま強制的に保存して終了します(推奨しません)。

重要:通常はeを選択して誤りを修正してください。Qを選ぶと、sudoが動作しなくなる可能性があります。

エラーの修正例

誤って以下のように閉じカッコ「)」を忘れた場合

user01 ALL=(ALL ALL

修正後

user01 ALL=(ALL) ALL

修正が完了したら、再度保存して終了します。

Ubuntuでの注意点

 Ubuntuでは、インストール時に作成した最初のユーザー(例:user01)には既にsudo権限が付与されています。そのため、上記の設定を追加する必要はありません。visudoを使用して該当の行を削除してください。

不要な設定の削除

root@ubuntu:~# visudo

エディタが開いたら、追加した行を削除し、保存して終了します。

visudoを使用する理由

  • 安全性の確保:文法チェックにより、sudoersファイルの誤った設定を防止します。
  • システムの保護:sudoコマンドが使用不能になるリスクを軽減します。

警告/etc/sudoersファイルを直接編集すると、誤った設定によってシステム管理が困難になる可能性があります。必ずvisudoコマンドを使用してください。

まとめ

  • visudoコマンドは、/etc/sudoersファイルを安全に編集するための専用コマンドです。
  • 文法チェックにより、誤った設定からシステムを守ります。
  • 編集手順
    1.スーパーユーザーになる(su -)。
    2.visudoコマンドを実行。
    3.必要な設定を追加または修正。
    4.保存して終了。
  • エラー対応:文法エラーが発生した場合は、エディタに戻って修正します。
  • Ubuntuでの注意:初期ユーザーには既にsudo権限があるため、追加の設定は不要です。

 visudoコマンドを正しく使用し、安全にsudoersファイルを管理することで、Linuxシステムのセキュリティと安定性を維持できます。システム管理者として、慎重な操作と正確な設定を心がけましょう。