Javascript 在桌面登录会话期间,我如何能记住一些东西

Javascript 在桌面登录会话期间,我如何能记住一些东西,javascript,linux,macos,unix,node.js,Javascript,Linux,Macos,Unix,Node.js,我正在Node中编写一个命令行程序(尽管如果另一个lang使这更容易,它将切换),它将用户数据存储在加密文件中。我希望用户在桌面/ssh会话期间给她一次密码,并在她注销之前记住密码 我的脚本可能无法修改环境变量,使它们在调用之间保持不变。像Keychain和sudo这样的程序如何记住您的密码,并确保在注销时忘记密码?sudo使用setuid运行,并由root用户拥有。因此,任何运行sudo的用户实际上都将以root用户的身份运行sudo。从那里,sudo(作为root用户,代表用户)检查sudo

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


我的脚本可能无法修改环境变量,使它们在调用之间保持不变。像Keychain和sudo这样的程序如何记住您的密码,并确保在注销时忘记密码?

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或操作系统)。一旦应用程序关闭,“保存的”密码就会丢失。这项技术是可行的


希望这有帮助

既然这个人已经登录了,你知道他已经通过身份验证了吗?为什么要尝试记住用户&pass?