Как я могу вспомнить что-то на время сеанса входа в систему на рабочем столе - PullRequest
1 голос
/ 08 декабря 2011

Я пишу программу командной строки в Node (хотя она переключится, если другой язык сделает это проще), и она хранит пользовательские данные в зашифрованном файле. Я хочу, чтобы пользователь давал свой пароль один раз во время сеанса рабочего стола / ssh и запоминал его до тех пор, пока он не выйдет из системы.

Предположительно, мой сценарий не может изменять переменные среды, чтобы они сохранялись между вызовами. Как такие программы, как Keychain и sudo, запоминают ваш пароль и забывают его при выходе из системы?

1 Ответ

0 голосов
/ 08 декабря 2011

Sudo работает с setuid и принадлежит root.Таким образом, любой пользователь, который запускает sudo, фактически будет запускать sudo от имени пользователя root.Оттуда sudo (как пользователь root) от имени пользователя проверяет файл sudoers (который доступен для чтения только пользователю root), чтобы узнать, разрешено ли пользователю запускать sudo и что он может делать.Если пользователь отсутствует в файле sudoers, sudo завершает работу и регистрирует попытку.Если пользователь находится в файле sudoers, sudo запрашивает пароль пользователя и сравнивает его с тем, что находится в файле shadow (также может быть прочитано только пользователем root).Если он совпадает, sudo запишет время доступа в другой файл, доступный только для чтения root, а затем выполнит команду.Последующие запуски sudo этим пользователем в течение периода ожидания не запрашивают пароль, потому что sudo может проверить время своей последней записи.Sudo не запоминает пароль пользователя.

Ключевым моментом является то, что независимо от того, какой пользователь запускает его, sudo всегда запускается от имени root и, следовательно, может обращаться к файлам, к которым имеет доступ только root.

ВашЯ полагаю, что приложение может имитировать это поведение, используя специального пользователя и кеш, который разрешен только этому пользователю.Важно, чтобы вы не сохраняли пароли.Всегда.

Еще один метод, который используют приложения, например TrueCrypt, - это сохранение пароля в памяти.Этот метод работает только для приложений (например, TrueCrypt или даже операционной системы), которые всегда работают.Как только приложение закрывается, «сохраненный» пароль теряется.Эта техника в основном безопасна .

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...