当我想在bash
脚本中要求输入密码时,我会这样做:
read -s
Run Code Online (Sandbox Code Playgroud)
...但是当我bash
在 POSIX 模式下运行时sh
,该-s
选项被拒绝:
$ read -s
sh: 1: read: Illegal option -s
Run Code Online (Sandbox Code Playgroud)
如何使用符合 POSIX 的命令安全地请求输入?
我担心该~/.cache
目录有两个原因:它会导致我的 SSD 不必要地进行大量写入,并且它包含有关加密容器和外部驱动器中文件的信息(如图像缩略图)。
我把它放在一个 tmpfs 中,里面有一行fstab
。它运行没有问题,直到它变满:这会导致某些程序出现错误消息。
我认为 中的文件.cache
不应该是持久的(类似于/tmp
),这就是我使用 tmpfs 的原因。所以我写了一个脚本,由 运行cron
,.cache
如果 tmpfs 已满,它每小时清理一次。
但这会导致tracker
无法找到其数据库的错误消息。
这让我怀疑这个目录真的不应该是持久的。把它放在 a 中是个好主意tmpfs
吗?
我想从备份中导入我的旧 gpg2 密钥环。我只有我的旧.gnupg
目录。
但是这个文件夹中的所有文件都无法被 gpg2 识别,当我尝试使用--import
它们时,它会显示“找不到有效的 OpenPGP 数据” 。
如何导入我的旧密钥?
我想用这样的命令填充硬盘驱动器上的可用空间:
# dd if=/dev/zero of=z
Run Code Online (Sandbox Code Playgroud)
但它会导致 GNOME 定期冻结几秒钟。甚至鼠标光标也会受到影响。
在写入大量数据时,如何防止 dd 冻结界面?
我的脚本需要多次调用需要密码的程序,该密码只能作为环境变量传递。因为我只想向用户询问密码一次,所以我这样做了:
read -s PASSPHRASE
export PASSPHRASE
program some_option
program some_other_option
program yet_another_option
PASSPHRASE=""
Run Code Online (Sandbox Code Playgroud)
据我了解,PASSPHRASE
变量的内容只能由当前 shell 访问,并且program
在三个调用期间,然后变量被重置,其他任何人都无法访问密码。
我是对的,还是我做错了?
我担心系统上的其他用户(不包括root
)以及在我的用户帐户上运行的其他程序。