javascript - 我怎样才能在桌面登录 session 期间记住一些东西

标签 javascript linux macos unix node.js

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

大概我的脚本无法修改环境变量,以便它们在调用之间保持不变。 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 甚至操作系统)。一旦应用程序关闭,“保存”的密码就会丢失。此技术是 mostly secure .

希望这对您有所帮助!

关于javascript - 我怎样才能在桌面登录 session 期间记住一些东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8428747/

相关文章:

macos - 从命令行关闭 redis 服务器

javascript - 卸载组件后功能如何存在

javascript - SonarQube 预览模式失败并出现 500 错误

linux - sudoers 文件 linux 中的注释行

linux - 在哪里可以找到 linux 64 位程序集的系统调用列表?

c++ - Opengl 数组纹理,适用于原始数据但不适用于图像数据

macos - GitHub、HTTPS 和 Mac 应用程序

javascript - 当值未定义时如何捕获Json数据错误?

javascript - Angular Js ng-repeat无法使用ajax从json数组获取输出

python - subprocess.popen 与 master 分离 (Linux)