Ubuntu Weekly Recipe

第410回 あなたの人生を少しだけ豊かにするsudoの使い方

この記事を読むのに必要な時間:およそ 6 分

再度パスワードを問い合わせさせたい

sudoコマンドは一度パスワード認証が成功すると,15分間はsudoコマンドを実行してもパスワードの問い合わせを行いません。この問い合わせを行わない状態を一度無効化し,次は必ずパスワード問い合わせを行うようにしたい場合は,⁠-k」オプションを使用します。

$ sudo -k

他人のシステムでsudoしないために

ローカルでsudoコマンドすることに慣れていると,管理者権限のないシステムにログインしているときに,間違ってsudoコマンドを実行してしまうことがままあります。単純にsudoできないって怒られるだけではあるのですが,/var/log/auth.logにはsudoを実行しようとした形跡が残りますし,場合によってはシステム管理者にアラートが飛ぶかもしれません。

そういう時はホームディレクトリにsudoのラッパーコマンドを用意しておくと,事故を未然に防げます。

$ mkdir ~/bin/
$ cat <<END >> ~/bin/sudo
#! /bin/sh

echo "Don't use sudo in the host"
exit 1
END
$ chmod a+x ~/bin/sudo

Ubuntuでは「~/.profile」「$HOME/bin」「$PATH」に設定してくれますので,これだけでsudoコマンドを実行した時にエラーとなってくれます。本来のsudoを実行する場合は,明示的に「/usr/bin/sudo」とフルパスで呼び出しましょう。

rootアカウントを有効にする

何らかの理由によりrootアカウントを有効にしたい場合は以下のコマンドでパスワードを設定しなおしてください。

$ sudo passwd root

これまで説明したとおり,Ubuntuの場合はrootアカウントでログインする必要は皆無なはずです。どうしても必要な場合のみ,⁠これが汚い大人のやり方というやつか……」と呟きながら設定してください。ちなみに再度rootアカウントを無効化するには,以下のコマンドを実行します。

$ sudo passwd -dl root

「-d」オプションでパスワードを削除した上で,⁠-l」オプションでcrypt()では生成されないパスワード文字列を設定しています。

ユーザーのアカウントを忘れてしまってどのアカウントでもログインできなくなったり,すべてのユーザーをsudoグループから削除してしまったというドジっ子さんは,シングルユーザーモードで起動するのが良いでしょう。

システムを再起動し,電源が入った直後にESCキーかSHIFTキーを押し続けてGRUBの画面を表示します。そのままカーソルキーとエンターキーで「Advanced options for Ubuntu」を選択し,recovery mode)⁠とついた項目を選択します。リカバリーメニューが表示されますので,⁠root」を選択しましょう。

このシングルユーザーモードでは,安全のためにルートファイルシステムを読み込み専用でマウントしています。もしルートファイルシステムの内容を書き換えたい場合は,リマウントする必要があります。

# df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       113G   25G   83G  24% /
# mount -o remount,rw /dev/sda2 /

「/dev/sda2」の部分は,ルートファイルシステムのパーティションにあわせてください。dfコマンドで「/dev/sda2」とわかったので,ここでは「/dev/sda2」を使っています。

あとはsudoグループの設定を変えた上で,exitします。

# adduser "追加したいユーザーID" sudo
# exit

再びリカバリーメニューにもどりますので,今度は「resume」を選択すると通常起動に戻ります。

sudoの設定変更

sudoの動作やセキュリティポリシーは/etc/sudoersファイルないしは/etc/sudoers.dディレクトリ以下のファイルで設定できます。このファイルは書式を間違えるとsudoができなくなり,結果的に間違いを修正できなくなりますので,慎重に編集を行う必要があります。少なくとも通常のエディターて直接編集するのではなく,保存する前に書式のチェックを行ってくれるvisudoコマンドで編集するのが必須です。

visudoコマンドは/usr/bin/editorをエディターとして使用します。これはUbuntuの場合,update-alternativesで変更できますので,詳しいことは第331回「CUIの標準エディタを変更したい」を参照してください。

設定を変更したい場合,/etc/sudoersを直接変更するのではなく,/etc/sudoers.dディレクトリにファイルを作成するほうが安全です。visudoコマンドはオプションなしだと/etc/sudoersを開いてしまうので,次のように明示的にファイル名を指定しましょう。

$ sudo visudo -f /etc/sudoers.d/timeout

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。

コメント

コメントの記入