如何在桌面登录会话期间记住一些内容

时间:2011-12-08 09:26:24

标签: javascript linux macos unix node.js

我正在Node中编写一个命令行程序(虽然如果另一个lang使这更容易就会切换)并且它将用户数据存储在加密文件中。我希望用户在桌面/ ssh会话期间给她一次密码,并记住它直到她退出。

据推测,我的脚本无法修改环境变量,因此它们会在调用之间保持不变。 Keychain和sudo等程序如何记住您的密码,并确保在注销时忘记密码?

1 个答案:

答案 0 :(得分:0)

Sudo使用setuid运行并由root拥有。因此,任何运行sudo的用户实际上都将以root用户身份运行sudo。从那里,sudo(作为root,代表用户)检查sudoers文件(只能由root读取),以查看是否允许用户运行sudo以及他们可以做什么。如果用户不在sudoers文件中,则sudo退出并记录该尝试。如果用户在sudoers文件中,sudo会询问用户的密码并根据影子文件中的内容进行检查(也只能由root读取)。如果匹配,sudo会将访问时间记录在只能由root读取的另一个文件中,然后执行该命令。该用户在超时期限内后续运行sudo不会提示输入密码,因为sudo可以检查其上次记录的时间。 Sudo不记得用户的密码。

关键是,无论用户运行它,sudo总是以root身份运行,因此可以访问只有root可以访问的文件。

我认为,您的应用程序可能会模仿此行为,使用特殊用户和仅对该用户授予权限的缓存。不要保留密码很重要。如初。

应用程序使用的另一种方法,例如TrueCrypt,是将密码存储在内存中。此方法仅适用于始终运行的应用程序(如TrueCrypt甚至操作系统)。应用程序关闭后,“已保存”的密码将丢失。这项技术是mostly secure

希望这有帮助!