2011-12-08 3 views
1

私はノードにコマンドラインプログラムを書いていますが、別のlangがこれを簡単にするならば切り替えます。ユーザーがデスクトップ/ sshセッション中に一度パスワードを入力し、ログアウトするまで記憶しておきます。デスクトップログインセッションの間何かを覚えておくにはどうすればいいですか?

おそらく私のスクリプトは、環境変数を変更して呼び出し間に存続することはできません。 Keychainやsudoのようなプログラムは、どのようにあなたのパスワードを覚えているのですか?ログアウト時にそれを忘れないようにしてください。

+0

ログインしているので、彼は認証されていないという事実を知っていますか?どうしてあなたはユーザーとパスを覚えてみるべきですか? – alessioalex

答えて

0

Sudoはsetuidで動作し、rootが所有します。したがって、sudoを実行するユーザーは、実際にはrootユーザーとしてsudoを実行しています。そこから、sudo(ユーザーに代わってrootとして)は、sudoersファイル(rootでしか読めない)をチェックして、ユーザーがsudoを実行できるかどうか、そして何ができるかを確認します。ユーザーがsudoersファイルにない場合、sudoは終了してログを記録します。ユーザーがsudoersファイルにある場合、sudoはユーザーのパスワードを尋ね、shadowファイルの内容と照合します(rootでも読み取り可能です)。一致した場合、sudoはアクセス時間をrootだけが読み取れる別のファイルに記録し、コマンドを実行します。 sudoは最後のレコードの時刻をチェックできるので、タイムアウト期間内にそのユーザーがその後にsudoを実行しても、パスワードの入力は求められません。 Sudoはユーザーのパスワードを覚えていません。

重要な点は、どのユーザーがそれを実行しても、sudoは常にrootとして実行されるため、rootのみがアクセスできるファイルにアクセスできることです。

あなたのアプリケーションはこの動作を模倣することができますが、特別なユーザーとそのユーザーにのみ許可されているキャッシュを使用していると思います。パスワードを保持しないことが重要です。これまで

アプリケーションが使用する別の方法(TrueCryptなど)は、パスワードをメモリに保存することです。この方法は、常に実行されているアプリケーション(TrueCryptやオペレーティングシステムなど)に対してのみ機能します。アプリケーションが終了すると、「保存された」パスワードは失われます。この手法はmostly secureです。

希望すると便利です。

関連する問題