【visudo / vigr / vipw】システムファイルをsudo viで編集は駄目【sudoers / group / passwd】

前書き:システムファイルの編集は慎重に

Linuxは、ユーザ/パスワード/管理者権限などの情報を/etc以下に存在するシステムファイルで管理しています。

管理者権限があればシステムファイルを自由に書き換えられますが、書式を間違えた状態で保存してしまうとシステムが正しく動作しなくなります。下手すると、ログインできない状態に陥ります。

例えば、管理者ユーザを追加するために”sudo vi /etc/sudoers”で編集して、間違えた内容で保存して慌てた人がいらっしゃるのではないでしょうか。かく言う私もその一人でね。

そんな悲劇を減らすため、本記事ではシステムファイル編集後、書式チェックも実行するコマンドを紹介します。

        

システムファイル編集用のコマンド一覧

下表に示すコマンドは、「環境変数EDITORもしくは環境変数VISUALに指定されたエディタ」もしくは「viコマンド」でシステムファイルを開き、ファイル編集後に書式チェックを実行します。

ファイル名 編集コマンド ファイルの役割
/etc/passwd vipwもしくはvigr -p ユーザ名、UID/GIDなどの管理
/etc/shadow vipw -s ユーザのパスワード情報の管理
/etc/group vipw -gもしくはvigr グループ、サブグループ、GIDなどの管理
/etc/gshadow vigr -s グループのパスワード情報の管理
/etc/sudoers visudo sudoコマンドを使用できるユーザ情報の管理

              

使用するエディタを変更したい場合

Debian環境かつvisudoコマンドは、update-alternativesコマンドで使用するエディタを変更できます。

vipwコマンドおよびvigrコマンドは、上記の手順ではエディタ設定を変更できません。また、上記のエディタ一覧の/usr/bin/codeはVisual Stdio Codeですが、管理者権限で実行できません(visudo/vigr/vipwは、VS Codeを起動できません)。

     

vipwコマンドおよびvigrコマンドで使用するエディタを変更するには、

  • ユーザをrootに変更
  • 環境変数EDITORもしくは環境変数VISUALを変更

を行う必要があります。

  

以下、変更例です。

環境変数EDITORには、設定したいエディタの絶対PATHを指定し、exportコマンドで環境変数EDITORを反映しています。絶対PATHが分からない場合は、”$ which $(設定したいエディタ名)”で調べられます。

                  

最後に

visudoコマンドの存在を知ってからも、”sudo vi /etc/sudoers”を頑なに貫いています。

                

おすすめ