Airpods

Mac OS XでSudoersファイルにユーザーを追加する方法

Mac OS XでSudoersファイルにユーザーを追加する方法

Mac OS Xのターミナル上級ユーザーは、ユーザーが特定のコマンドを root 権限で実行できるように、sudoers ファイルにユーザー アカウントを追加する必要がある場合があります。

簡単に言えば、これらの新たに権限を付与されたユーザーアカウントは、権限拒否エラーが発生したり、ターミナルコマンドの前にsudoを付けたりすることなくコマンドを実行できるようになります。これは、一部の複雑な状況では役立つ(あるいは必要となる)かもしれませんが、他の状況ではセキュリティリスクをもたらすため、安易に変更すべきではありません。

一般的に、ほとんどのユーザーにとって、管理者アカウントを使用するか、コマンドごとにsudoを使用するか、rootユーザーを有効にする方が適切です。しかしながら、コマンドラインに精通した上級者であれば、sudoersを直接変更する用途も数多く存在します。ここでは、そうした複雑な状況を想定し、sudoersファイルの調整方法に焦点を当てます。


sudoersファイルは/etc/sudoersにありますが、/etc/hostsや他の多くのシステム設定ファイルとは異なり、一般的なテキストエディタでこのファイルを変更することはお勧めしません。代わりに、「visudo」という専用のコマンドを使用し、文書を保存する前に正しい構文を確認します。

重要: sudoersの設定変更は、ほとんどのMac OS Xユーザー向けではありません。sudoersファイルの変更は、やむを得ない理由がある上級ユーザーのみが行うべきです。何をしているのか、なぜそうするのかがわからない場合は、sudoersファイルを編集したり、sudoersファイルにユーザーを追加したりしないでください。セキュリティリスクが生じたり、何らかの障害を引き起こしたりする可能性があります。

Mac OS XでSudoersにユーザーを追加する

sudoersにユーザーを追加するにはviを使用する必要がありますが、使い慣れていないとかなり混乱する可能性があります。viに慣れていない方のために、viでファイルを編集、挿入、保存するための正確なキーコマンドシーケンスを説明します。指示に従ってください。

  1. ターミナルを起動し、次のコマンドを入力します。
  2. sudo visudo

  3. 矢印キーを使用して「#ユーザー権限の指定」セクションまで移動します。次のようになります。
  4. # User privilege specification
    root ALL=(ALL) ALL
    %admin ALL=(ALL) ALL

  5. %admin エントリの下の次の空行にカーソルを置き、「A」キーを押してテキストを挿入し、新しい行に次のように入力します。「username」は、権限を付与するアカウントのユーザーの短縮名に置き換えます (username と ALL の間で Tab キーを押します)。
  6. username ALL=(ALL) ALL

  7. ファイルの編集を終了するには、「ESC」(エスケープ)キーを押してください。
  8. : キー(コロン)を押してから「wq」と入力し、Returnキーを押して変更を保存し、viを終了します。

おおよそ次のようになります。例のスクリーンショットには、ユーザー名「osxdaily」が追加されています。

OS Xのsudoersファイルに追加されたユーザー

問題なく実行できるはずです。sudoers ファイルを cat して、ファイルが変更されたかどうかを確認できます。

cat /etc/sudoers

ファイル全体をスキャンしたくない場合は、cat と grep を使用してユーザー名をすばやく見つけます。

cat /etc/sudoers | grep username

これで、「username」が sudoers ファイルに追加されたので、準備は完了です。

「/etc/sudoers がビジー状態です。しばらくしてからもう一度お試しください」というエラーを解決する

sudoers を変更しようとして「visudo: /etc/sudoers ビジー状態です。しばらくしてからもう一度お試しください」というエラーが表示される場合、通常はファイルが既に開かれていることを意味します。これは、別のユーザー、誤って、あるいは visudo を不適切に終了したことによるものです。マルチユーザーマシンの場合は、何か操作を行う前に必ず他のユーザーに確認してください。ただし、シングルユーザーマシンでは、通常、このようなエラーは頻繁に発生することはありません。この 2 つを区別することが重要です。sudoers ファイルを壊してしまうと、多大なストレスや問題に見舞われ、最終的にはバックアップから OS(または sudoers ファイル)を復元する必要が生じる可能性があります。その解決方法はこの記事の範囲外です。

シングルユーザーMacでは、viを終了せずにターミナルアプリを終了した場合、ターミナルまたはMac OS Xがクラッシュした場合、あるいはファイルが別のセッションで開かれている場合に、「sudoers busy」エラーが発生する可能性があります。後者の場合の解決策は非常に簡単で、ロックとして機能するsudoers一時ファイルを削除することでエラーを解決できます。

sudo rm /etc/sudoers.tmp

他のユーザー(または自分自身)がローカルまたはリモートでファイルをアクティブに変更していないことが確実な場合にのみ、この操作を実行してください。sudoers の調整は一般的にかなり高度なため、ここでは何をしているのかご理解いただいているものと想定していますが、sudoers が開いている理由や原因がわからない場合は、dtrace または opensnoop を使用してファイルの使用状況を監視してみてください。