「sudo」の便利な小技

sudoを改善し、Linuxユーザーの負担を少し軽減する5つの方法を紹介する。


1. visudoでsudoの設定ファイルを編集する


 sudoには/etc/sudoersという設定ファイルがあり、アクセス制限やユーザー、グループのアクセス権限などを設定できる。しかし、このファイルを「nano」などの標準的なテキストエディターで直接編集することは避けるべきだ。誤って編集すると、管理者権限を必要とするタスク(sudoersファイルの修正など)を実行できなくなる可能性があるからだ。この問題を回避するには、「visudo」コマンド(sudo visudo)を使用すると良い。visudoはユーザーが加えた変更を常に検証し、問題があれば通知してファイルの保存を阻止してくれる。


2. ユーザーのアクセス権限を制限する


 全てのユーザーが全ての管理者コマンドにアクセスできる状態は、避けるべきだろう。例えば、システムの安定性を保つため(つまり、ユーザーがシステムを壊すのを防ぐため)、/etc内のファイルなど、管理者権限で保護されたファイルをユーザーが削除できないようにしたい場合がある。これには、sudoersファイルで「!」を使ってユーザーまたはグループを設定する。例えば、特定のユーザーが「rm」コマンドを実行するのを阻止したい場合は、以下の行を追加する。


USERNAME ALL=(ALL) !/usr/bin/rm


 USERNAMEは対象となるユーザー名である。この設定はグループにも適用できる。


3. ユーザーではなくグループにsudoアクセス権限を付与する


 権限とアクセスを管理する上で、大勢のユーザーを1人ずつ設定するよりも、グループ単位で設定する方がはるかに楽である。例えば、1台のLinuxマシンを5人の家族で共有し、全員のrmコマンドの使用をブロックしたいとしよう。この場合、norm(no rmの意)というグループを作成し、5人全員をそのグループに追加する。その後、先ほどと同じ方法で(ユーザー名の代わりにグループ名を使用して)、そのグループにアクセス権限を付与できる。


4. root権限の付与を制限する


 多くのユーザーは、全てのユーザーに全てのroot権限を付与することが、セキュリティ上の問題を引き起こす可能性があることに気づいていない。もし悪意のある人物がシステム上のユーザーアカウントにアクセスした場合、その侵入者がユーザーのパスワードを知っていれば、sudoアクセスを必要とするあらゆるコマンドを実行できてしまう。全てのroot権限をユーザーに付与するには、sudoersファイルに以下のように記述する。


USERNAME ALL=(ALL:ALL) ALL


 USERNAMEは、対象となるユーザーの名前である。


 代わりに、/sbin以外の特定のディレクトリーへのアクセスを許可すると良いだろう。/sbinには、管理タスク用の実行バイナリーの多くが格納されているからだ。あるいは、以下のようにユーザーのアクセスを/usr/sbin/、/usr/bin/、/opt/に制限可能だ。


USER ALL=(ALL) PASSWD: /usr/sbin/, /usr/bin/, /opt/


 なお、各ディレクトリーの末尾にある「/」は必須であることに注意が必要だ。


5. sudoパスワード入力時にアスタリスク(*)を表示させる


 これは「sudoを簡単にする」機能の1つである。ユーザーパスワードを入力する際、正確に入力できたか不安になることがあるだろう。入力した文字数が分かれば、少なくとも正しい文字数であるかどうかは推測できる。キーを押したが認識されなかった、という事態もあり得る。入力時にアスタリスクが表示されるようにすれば、キーが認識されたことを確認できる。


 sudoパスワード入力時にアスタリスクを表示させるには、sudo設定ファイル(sudo visudo)を開き、以下の行を変更する。


Defaults env_reset


 これを以下のように変更する。


Defaults env_reset, pwfeedback


 これで、sudoパスワードの入力時に、文字を入力するごとにアスタリスクが表示されるようになる。


6. パスワードのタイムアウトを延長する


 sudoパスワードを入力すると、一定時間は再入力が不要になる。このタイムアウト値はディストリビューションによって異なるが、短すぎると感じることもあるかもしれない。もし自分専用のLinuxマシンを使っており、管理者コマンドを頻繁に実行する場合は、タイムアウトを例えば30分に延長することを検討すると良い。これには、sudo visudoコマンドを実行し、Defaults env_resetの行を以下のように変更する。


Defaults env_reset, timestamp_timeout=XX


 XXには時間(分)を入れる。例えば、タイムアウト時間を30分に変更したい場合は、以下のように入力する。


Defaults env_reset, timestamp_timeout=30


7. パスワードを間違えた際に侮辱的なメッセージを表示する


 これは単なる遊び心だ。sudoのパスワードを間違えた際に、侮辱的なメッセージが表示されるように設定できる。これらのメッセージはユーモアに満ちているため、sudoに腹を立てる心配はない。この機能を追加するには、sudoersファイルのDefaults行に戻り、以下のように変更する。


Defaults env_reset, insults


 他の機能も追加する場合は、以下のようになる。


Defaults env_reset, pwfeedback, timestamp_timeout=30, insults


 これで、sudoがあなたを少し楽しませてくれるだろう。


「Linux」ユーザーが知っておくべき「sudo」の便利な小技--便利な設定から楽しいおまけまで(ZDNET Japan) - Yahoo!ニュース