- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在用 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/
这个fn是吗: function isplainobj ( obj ) { return Object.prototype.toString.call( obj ) === "[object
我尝试创建一个我没有经验的小 bash 脚本。我尝试做类似的事情: #!/bin/bash statut="na" if [ $proc = 0 ]; then statut = "close
我想重写 HighLine 的几个方法来自定义我的控制台,目前我的代码如下所示: cmd = ask("#{@prompt_label} #{@prompt_separator} ",
鉴于下面的 HTML,我尝试使用 jQuery 来匹配所有具有类“foo”的跨度的列表项,并且该跨度应包含文本“relevant”。 Some text relevant Some more
我拥有一个 5 美元 20GB SSD Digital Ocean Droplet,它几乎用完了 Docker 镜像和容器的空间。 有没有办法购买一个卷,将其连接到服务器并安全地将所有 Docker
我有这样的表: id name number result stuff stuff stuff stuff 我只想将 class = "red" 添加到
我需要计算两点之间的距离,但不是以常规方式。我需要知道“东西距离”+“南北距离”。我想这比常规的“乌鸦飞翔”计算更简单,但我仍然不知道如何做到这一点。 我想使用 MySQL 查询来执行此操作,并且最好
#include #include #include typedef struct dict_pair { void *key; void *value; struct dict_p
为什么当我尝试通过 将 char[] word 写入控制台时会发生这种奇怪的事情 Console.WriteLine(word); 我得到了一个正确的结果,但是当我写的时候 Console.Write
一个简单的例子: class C{} class B{ @Inject C c; void doSomething(){ System.out.println(c);
我想做某事,但不确定如何描述它。我有这门课 public class Company { private List _persons; private Person GetPersonByNa
我正在尝试实现我自己的 qDebug()样式调试输出流,这基本上是我目前所拥有的: struct debug { #if defined(DEBUG) template std::os
所以我正在为我的应用程序编写一个搜索功能,代码如下: - (void) selectObject: (NSString *)notes{ [axKnotes removeAllObjects]
我想在 Rust 中匹配一种复杂的继承式东西: struct Entity { pub kind: EntityKind, } pub enum EntityKind { Player
我是 SQL 新手。这没有返回任何结果...... SELECT media.id as mediaid, media.title as mediatitle, media.description
在微型 SDCard 上写入 Android things 图像并将该卡插入 Raspberry Pi 3 Model B 并打开电源,启动时显示“Auto config Please wait”然后
这是一个常见的但是文本出现在框的右侧,不是极右但几乎是这样 h3: ................................................ .................
#include #include #include #include #include int main(int argc, string argv[]) { if(argc >
所以我试图让一些东西相互堆叠。首先,查看工作链接会有所帮助,您会看到问题所在: http://brownbox.net.au/clients/matchlessphotography/ 现在我需要使用
我想在禁用 javascript 时在我的网站顶部显示一条消息(就像在 SO 上一样),但在谷歌浏览器上不起作用 最佳答案 看起来是这样。 您可以使用 javascript 隐藏“noscript”消
我是一名优秀的程序员,十分优秀!