2011年10月03日

スクリプトによる自動化に必要となる書き込み許可

Linux では、システムに関する設定をするときは、sudo コマンドを使ってスーパーユーザーに切り替える必要があります。

sudo を使うとパスワードが要求されるのですが、これは、システムに関する設定を要求している人が、スーパーユーザーの権限を持った人であるかどうかを検証するために行われます。 いかにも安全そうです。

Windows 7 の場合、UAC プロンプトが表示されます。 ただ、パスワードは要求されないで、「はい」を押すだけです。 管理者になれる人かどうかは、パスワードではなく、現在のユーザーによって確認されます。 スクリーンセーバーを設定しておけば、離席するケースにおいて、sudo と同じぐらいのセキュリティ強度になるでしょう。 sudo の場合はパスワードが必要になる代わりに、パスワードを見られる可能性が高いためです。

しかし、これらのシステムによって守られるのは、OS だけです。 いくら暗号化された機密性の高いデータであっても、パスを誤ってしまえば、簡単に消えてしまいます。

特にスクリプトの中から削除する命令を実行する場合、たとえ、sudo が必要であっても、たとえ、rm に -rf オプションが必要であっても、大量の処理を行うスクリプトでは1つ1つの削除に対してユーザーが確認するわけにはいかないので、sudo や rm -rfがスクリプトに記述されることになり、簡単に消えてしまう状態になります。

この問題に対処するには、スクリプトのメイン関数付近でのみ使える書き込みを許可するフォルダーのパスを指定する関数を使うことです。 書き込みを許可していないフォルダーの外にあるファイルを消そうとするとエラーになります。

この機能によって、ダブルチェックによる信頼度と同じ信頼度で、誤って削除してしまうことは無くなります。 なぜなら、削除する命令文の場所とメイン関数付近の間に独立性があるからです。 命令文の場所がメイン関数に近いときは、従来どおり、ユーザーに確認を取ったり、sudo をするかどうかをユーザーに選択させるなどするとよいでしょう。

来週公開予定の bashlib1 は、AppKeyClass.newWritable_method という関数によって、書き込み許可機能が提供されます。 ただし、削除する処理に、bashlib が提供する rm_func を使う必要があります。

bashlib1 には、まだ公開されていない vbslib4 に導入された、ショートハンド・プロンプトなど、いくつかのパラダイムがすでに導入されています。 みなさまにとっては、先行してお使いいただけるようになります。

sage_p at 06:05│Comments(1)TrackBack(0)プログラミング 

トラックバックURL

この記事へのコメント

1. Posted by キーケース バーバリー   2013年12月02日 01:42
Snap Note 開発記 from ソフトウェアデザイン館 Sage Plaisir 21:スクリプトによる自動化に必要となる書き込み許可 - livedoor Blog(ブログ)

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔