Ubuntu Weekly Recipe

第14回 自動的な処理:自動ログイン・自動アップデート

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

Windowsの代わりとして,つまりデスクトップOSとしてUbuntuを利用する上で,いくつかの処理を自動的に実行したい場合もあるでしょう。今週は,Windowsで行える自動ログインや自動アップデートなどを実行するレシピを紹介します。

自動ログイン

Windows・PC-Unixを問わず,マルチユーザを前提にしたOSでは,利用の前にログイン(ログオン)が必要になります。通常はユーザ名・パスワードを入力することでユーザを認証し,ログインを行うわけですが,Windowsなどではこれらを省略し,電源を投入したら自動的にデスクトップ画面にしてしまう,といった動作が可能です。

Ubuntuの場合も,電源投入後,自動的にデスクトップを起動する,ということが可能です。

[システム][システム管理][ログイン画面]とたどり,「ログイン画面の設定」を開き,セキュリティタブを選択してください。

図1 「ログイン画面の設定:セキュリティタブ」

図1 「ログイン画面の設定:セキュリティタブ」

この中に「自動ログイン画面を有効にする」という設定がありますので,自動ログインを行いたいユーザを指定します(コンボボックスになっていますので,ドロップダウンメニューから選択しても,直接入力してもかまいません)。この状態で再起動,もしくはログアウトすれば,指定したユーザで自動的にログインできます。

言うまでもないことですが,この設定を行った場合,誰でもあなたのデスクトップにアクセスできてしまうわけですから,セキュリティ上大きな問題を抱えることになります。デスクトップPCで利用するのであれば大きな問題はないかと思いますが,よく考えて行ってください注1)。具体的には,「Webブラウジング専用の共有端末」であれば管理者権限を持たないユーザを作成し,そのユーザで自動ログインするようにする,といった工夫を検討してください注2)。

注1)
念のため注意しておくと,HDDの中身を暗号化するわけではありませんので,ログイン時のパスワード入力はHDDを他のPCにマウントされた場合には無意味です。ログインパスワードが一定の安全を担保するには,HDDそのものの盗難に対する備えが必要です。
注2)
学校で授業時間などに利用する,調べ物専用の共用端末を想定しています。Amazonや楽天・GMailなどといった,ログイン情報が残るタイプのショッピングサイトやWebメールなどの利用を行うのであれば,全く別種の対処が必要になります。当然ながら,調べ物専用の共用端末として用いる場合もこれらのサイトを利用するとWebサイトのログイン情報の不適切な共有が発生する可能性がありますので,利用者に一定のモラルがあることが前提となります。

自動的にパッケージをダウンロードする

Windowsのアップデート機構(Windows Update/Microsoft Update)では,アップデートに必要なファイルをバックグラウンドでダウンロードし,さらにインストールする,自動更新と呼ばれる機能が搭載されています。Ubuntuでも同様の措置が可能です。

以下のコマンドを実行することで,1時間に一度,新しいアップデートがないかアーカイブサーバを確認し,もし新しいパッケージが存在するならそのファイルをダウンロードする,という動作が可能です。ダウンロードのみで,インストールは自動ではありません。アップデートマネージャなどから手動で行ってください。パッケージはすでにダウンロードされ,ローカルにキャッシュされているので,高速なアップデートが可能なはずです。

$ sudo -s
# echo $RANDOM > /dev/null; echo "`expr $RANDOM % 60`     *       *       *       *              root /usr/bin/apt-get update >/dev/null 2>&1; /usr/bin/apt-get --download-only -y dist-upgrade >/dev/null 2>&1" > /etc/cron.d/apt-autodownload

また,1時間に一度ではなく,「昼休みの間」などを指定したい場合は,/etc/cron.d/apt-autodownloadファイルを修正してください。ファイルの頭にある数字が「分」,次の数字が「時」ですので,これを修正することで時間を指定できます。次の例は,12:08に自動的にパッケージをダウンロードする設定です。

 8    12     *       *       *              root /usr/bin/apt-get update >/dev/null 2>&1; /usr/bin/apt-get --download-only -y dist-upgrade >/dev/null 2>&1

なお,自動実行はできるだけランダムなタイミングになる必要があります。毎時00分・15分などといった,キリのよい時間にアップデートを行うと,多くの人のダウンロードが特定の時刻に集中してしまい,パッケージを提供するアーカイブサーバに過大な負荷がかかるためです。

できるだけランダムな「分」を設定できるように,上記の例では$RANDOM(利用するたびにランダムな数字を返す変数)を利用しています(厳密には分布が偏っていますが,それほど致命的な問題にはならないはずです)。また,1時間に1度よりも頻繁なペースで確認を行うことも避けてください。

自動的にアップデートを適用する

ダウンロードだけでなく,自動的にアップデートを行わせることもできます。次の設定を行ってください。

また,もし以前に自動ダウンロードの設定をしていたら,sudo rm /etc/cron.d/apt-autodownloadを実行し,設定を削除してください。

$ sudo -s
# echo $RANDOM > /dev/null; echo "`expr $RANDOM % 60`     *       *       *       *              root /usr/bin/apt-get update >/dev/null 2>&1; /usr/bin/apt-get -y dist-upgrade >/dev/null 2>&1" > /etc/cron.d/apt-autoupdate

この設定には注意があります。それは,自動的なアップデートは安全ではない,ということです。

自動的に実行されるアップデートは静かに行われますので,気づかずに再起動などを行ってしまう可能性があります。もしもカーネルなどの致命的なファイルの更新中に再起動を行ってしまうと,システムが起動しなくなってしまいます。24時間起動し続けるようなマシンでのみ設定し,さらにバックアップを定期的に取得することを強くお勧めします(それほど大きな手間ではないと思いますので,事前ダウンロードのみを行い,アップデートは手動で行うのが安全です)。

なお,自動ダウンロードや自動アップデートといったアプローチをひとつにまとめた,「cron-apt」というパッケージも存在します。今回はシンプルな設定が可能なcronによる方法を紹介しましたが,HDDの空き容量に応じてキャッシュ実行を行わない,などといった複雑な法則をセットしたければ,このパッケージを利用するとよいでしょう。

著者プロフィール

吉田史(よしだふみひと)

Ubuntu Japanese Team Member株式会社創夢所属。システム管理を中心にWindows/PC Unixを併用している。Ubuntu Japanese Teamではパッケージサーバの管理や翻訳などの作業を担当。

コメント

コメントの記入