sudoの権限を設定するvisudoコマンド【Linuxコマンド集】

  • このエントリーをはてなブックマークに追加
  • Pocket

visudoはsudo権限を変更するためのコマンドだ。sudoersファイルを安全に編集するコマンドになる。

このページではvisudoコマンドについてまとめている。

sudoでの実行

Linuxでは例えばユーザーの追加や削除やプロセスの管理など、管理者以外が操作するとシステム運用にリスクを伴う。

そのため、Linuxシステムにとって重要なコマンドは、rootのような管理者だけが実行できるようにするのが一般的だ。

下記のページで詳しく解説している。

上記ページでも解説しているが一般ユーザでrootユーザしかできないような各種作業を使いたいときはsudoを使う。

もちろん自由にsudoできるわけではなく、sudoができるユーザなども細かく指定ができる。sudoersファイルはデフォルトでは/etc/sudoersを編集することになる。

visudoコマンドは管理者の権限でのみ操作できる。

visudoコマンドの基本

visudoコマンドを使うと設定ファイルが編集できる。viでファイルを指定してもいいのだが、visudoは簡単だ。

コマンドの基本動作

使い方は、次のとおりだ。

$ visudo

sudoersファイルを編集する場合は、次のコマンドだ。

visudoコマンド

すると、sudoersファイルを編集できるようになった。

sudoersファイルの設定

実際にvisudoコマンドの挙動を見ながら、sudoersファイルの編集方法を解説する。

まず、Linuxユーザーsnowは追加したばかりだ。passwdコマンドでパスワードを設定しただけの一般ユーザーで、sudoの権限はない。

snowユーザのままでuseraddコマンドを実行しようとしパスワードを入力しても、「snow is not in the sudoers file.  This incident will be reported.」というエラーが表示される。

visudoコマンド

追加したばかりのユーザーはsudoの権限がないのだ。

そこで、visudoコマンドでsudoersファイルを編集し、ユーザーsnowにもsudoの権限を付与する。

ファイル内に次のような設定が記述されている。

visudoコマンド

root ALL=(ALL) ALL

この「root    ALL=(ALL) ALL」の部分が権限になる。書式は「ユーザー ホスト=(誰々として) コマンドパス」だ。ALLの場合はすべてのコマンドを実行可能という意味になる。

「ホストtty7からアクセスしたユーザーsnowは、vagrantとして/usr/sbin/useraddコマンドをsudoで実行できる」という場合は次の設定になる。

snow tty7=(vagrant) /usr/sbin/useradd

ホストなどはALL(すべてOK)であることがほとんどだが、このようにも記述ができる。また、ユーザーは%を付与することでグループを指定することができる。

コマンドパス

指定するコマンドパスはwhichコマンドで調べたいコマンドを調べることでわかる。例えば、userdelコマンドのコマンドパスは次のコマンドでわかる。

$ which userdel

visudoコマンド

今回はsnowに対してsudoですべてのコマンドが実行できるようにする。

「root ALL=(ALL) ALL」の行の下に「snow ALL=(ALL) ALL」を入力する。

visudoコマンド

エディタを終了して、エラーメッセージが出なければ問題なくsudoersファイルの設定が適用されている。

visudoコマンド

再度、ユーザーsnowでsudoを使ってuseraddコマンドを実行してみる。

visudoコマンド

今度はエラーが出ずに実行できた。

編集時にエラーだった時の挙動

編集時にわざとsudoersファイルの最終行に「xxx」と入力し、保存、エディタを終了してみた。

visudoコマンド

エラーメッセージが表示され、どうするかの問い合わせがある。

この時、eのキーを押すと、再編集のためにエディタ画面に戻る。xのキーでは、編集を破棄し、編集前の状態が維持される。

問い合わせ時に、そのままEnterキーを押すと、上記の内容が表示されるので、忘れてしまった時は活用するとよいだろう。

visudoコマンド

パスワード入力の制御

sudoで実行した時のパスワード入力をしないように設定することもできる。

「ユーザー ホスト= NOPASSWD: コマンドパス」となり、すべての端末から/usr/sbin/useraddをユーザーsnowが実行した場合、パスワードを入力しなくてよくする設定は、「snow    ALL=NOPASSWD: /usr/sbin/useradd」となる。

visudoコマンド

visudoコマンドのオプションたち

オプションの一覧

後から詳細をご紹介するが、まずは一覧で見てみよう。

オプション-c

書式のチェックのみを行う。

オプション-q

編集後書式のエラー結果を表示しない。

オプション-s

厳密なチェックを行う。

オプション-f

sudoersのファイルを指定する。

-cオプション:書式のチェックのみを行う

書式のチェックのみを行うコマンドは次のとおりだ。

$ visudo -c

visudoコマンド

書式のチェックが表示され、正常であることが確認できた。

もし、ファイルが正常ではなかった場合は、エラー表示となる。

visudoコマンド

-qオプション:編集後書式のエラー結果を表示しない

編集後書式のエラー結果を表示しない書式は次のとおりだ。

$ visudo -q

visudoコマンド

わざと間違った書式で編集を終了したが、書式のエラー結果を表示しない。書式のエラー結果を表示しないだけでエラーのために再編集を促すメッセージは表示される。

-sオプション:厳密なチェックを行う

厳密なチェックを行いながら編集するコマンドは次のとおりだ。

$ visudo -s 

-fオプション:sudoersのファイルを指定する

sudoersのファイルを指定する書式は次のとおりだ。

$ visudo -f ファイルパス

例えば、sudoersのファイルを/tmp/sudoers_testに指定するコマンドは次のとおりだ。

$ visudo -f /tmp/sudoers_test

visudoコマンド

sudoersのファイルを指定しsudoersファイルを編集する。

visudo関連コマンド

最後にvisudoコマンドに関連して、基本的なsudo関連のコマンドも紹介しておく

suコマンド

ユーザーを切り替えログインするコマンドだ。

まとめ

このページでは、visudoコマンドについての解説と挙動と使い方を詳しく解説した。

それほど使うコマンドではないかもしれないが、初期環境を設定するときなどに活躍する。出番が来たら思い出していただければと思う。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できる。

短期間でエンジニアになる方法

・「まったくの初心者だけどエンジニアになりたい!」

・「プログラマーとして転職をしたい!」

という方はリナックスアカデミーの資料を見てみてください。短期間で未経験からエンジニアになることができるスクールとして15年間選ばれ続けてきた理由やノウハウが載った資料です。

エンジニアの入り口に立つために必要な勉強技術の最新動向本当に使えるIT資格学習に役立つ国からの奨励金などの情報が詰まっています。

無料で2,3日中にお手元にお届けします。


資料を見てみる

SNSでもご購読できます。

コメントを残す

*

ゼロからエンジニアを目指す方へ
短期間でエンジニアになる方法

必要な勉強や技術の最新動向、本当に使えるIT資格、学習に役立つ国からの奨励金などの情報を無料でお届け

資料を見てみる