小编Sau*_*ode的帖子

GPG 代理如何工作?

我的 gpg.conf 文件中有一行写着use-agent.
我知道这是指 gpg-agent,它是一个守护进程。手册页指出“gpg-agent 是一个独立于任何协议管理秘密(私有)密钥的守护进程。它用作 gpg 和 gpgsm 以及其他一些实用程序的后端。”

任何人都可以在 gpg 的上下文中解释这意味着什么?gpg-agent 的意义何在?

我目前有 GPG 1.4。

  1. 如何判断代理是否正在运行?实际上,我什至不清楚 gpg-agent 是否与基本的 GPG 1.4 软件包一起安装。
  2. 如果它没有运行,我该如何启动它?
  3. 如果它正在运行,我该如何阻止它?

gpg gpg-agent

37
推荐指数
1
解决办法
3万
查看次数

是否有将密码传递给 Systemd Unit 文件的典型方法?

我想使用 systemd 单元文件启动服务。此服务需要密码才能启动。我不想将密码以明文形式存储在 systemd 单元文件中,因为它是世界可读的。我也不想以交互方式提供此密码。

如果我为此编写普通脚本,我会将凭据存储在具有受限权限(400 或 600)的 root 拥有的文件中,然后将该文件作为脚本的一部分读取。是否有任何特定的 systemd 风格的方法可以做到这一点,还是应该像在常规 shell 脚本中一样遵循相同的过程?

password permissions shell-script systemd

17
推荐指数
4
解决办法
1万
查看次数

yum install http - 这安全吗?

我对使用 yum 安装软件包不是很熟悉。在前世,我使用了 apt。

目前,我正在查看一些运行说明

# yum install http://example.com/package.rpm

这显然会订阅一个特定的存储库,从中可以下载更多的包。这是一件安全的事情吗?

为了比较,我知道 apt 包有 gpg 签名,这意味着通过 http 下载不是问题。如此处所述。并且在使用apt下载主库外的包时,可以手动添加一个让apt接受的gpg密钥,以确保任何非标准包都具有相同的可信来源。

如果我运行上面的命令,yum 会在开始安装之前要求我接受 gpg 密钥,还是可以安装任何东西?

如果相关,我的/etc/yum.conf文件包含gpgcheck=1在该[main]部分内。

security yum centos apt software-installation

13
推荐指数
1
解决办法
2万
查看次数

FreeBSD 包 repo - 如何进行手动签名验证?

我正在尝试在FreeBSD 软件包网站上验证软件包的签名

wget http://pkg.freebsd.org/FreeBSD:11:amd64/latest/digests.txz
tar xf digests.txz
Run Code Online (Sandbox Code Playgroud)

这给出了三个文件:digestsdigests.pub digests.sig
我认为它digests.sig是文件的签名digestsdigests.pub作为公钥。但我试图确认:

openssl dgst -verify digests.pub -signature digests.sig digests

并收到消息

Verification Failure

我想我有什么问题 - 谁能告诉我我错过了什么?

编辑:基于对源代码的搜索,我认为重要的函数是在这里找到,从 openssl 库调用rsa_verify_cert_cbwhich 调用RSA_verify。但我还没有弄清楚它被输入了什么,或者是否可以使用openssl命令行工具调用该函数。

freebsd security package-management openssl checksum

11
推荐指数
1
解决办法
935
查看次数

如何让 yum 使用已经导入的 gpg 密钥?

我正在尝试在yum.repos.d目录中添加一个外部存储库。该存储库的包和元数据使用 gpg 密钥进行签名。如果相关,我使用的是 CentOS 7.2

据我所知,设置存储库的传统方法是在存储库文件中包含指向 gpg 密钥的链接。

也就是说,example.repo里面的文件/etc/yum.repos.d包含以下行:

gpgkey = https://example.com/repo/key

然后,如果您运行yum update,您会收到[y/N]导入 GPG 密钥的提示,而如果您运行yum -y update该密钥,则会自动导入该密钥。到目前为止一切正常。

作为实验,我尝试从 repo 文件中删除 gpg-key 下载链接,而是手动添加密钥。

wget -O key https://example.com/repo/key
rpm --import key
并验证
rpm -qa gpg-pubkey*

我的期望是这将能够yum update在不提高[y/N]提示的情况下完成。但它不起作用 - 我仍然收到提示,要求我导入我已经导入的密钥。此外,我尝试gpgkey从 repo 文件中删除条目,但在这种情况下yum update只是抛出了一个错误(因为我也有gpgcheck = 1repo_gpgcheck = 1)。

为什么这很重要?好吧,在我看来,如果你想自动化这个过程,那么你需要信任下载密钥的 https 传输。这很好,但是除了验证包下载是否正确之外,GPG 密钥并没有真正增加任何安全性。

简而言之,我认为要么我错过了一个让 yum 认识到我已经导入密钥的技巧,要么GPG …

security yum centos gpg package-management

8
推荐指数
1
解决办法
6966
查看次数

使用 awk 浮点运算的惊人结果

我一直试图让 awk 做一些琐碎的算术,这涉及将一些值从一行带到下一行。

这是一个最小的示例对,用于比较。第一个例子是预期行为,因为 99.16 - 20.85 = 78.31

$ echo -e "0,99.16\n20.85,78.31" | awk -F, '{
  if (NR != 1 && (prior_tot - $1) != $2) {
    print "Arithmetic fail..." $0
  } else {
    print "OK"
  };
  prior_tot = $2
}'
Run Code Online (Sandbox Code Playgroud)

退货

OK
OK
Run Code Online (Sandbox Code Playgroud)

第二个例子不是预期的行为,因为 99.15 - 20.85 = 78.30

$ echo -e "0,99.15\n20.85,78.30" | awk -F, '{
  if (NR != 1 && (prior_tot - $1) != $2) {
    print "Arithmetic fail..." $0
  } else {
    print "OK"
  }; …
Run Code Online (Sandbox Code Playgroud)

awk gawk

7
推荐指数
3
解决办法
3175
查看次数

“通过”密码管理器 - 是否需要公钥?

“pass”密码管理器使用 gpg 密钥。

http://www.passwordstore.org/

但是,gpg 本身可以用于文件的对称加密。pass 只能使用公钥/私钥,还是可以与对称加密一起使用?

password gpg

5
推荐指数
1
解决办法
1432
查看次数

退出删除的目录

假设我正在编辑一些文件。我有(说)一个终端打开和一个 gui 文件管理器。我目前在/my/very/long/and/winding/directory/path终端。在我的 gui 中,我/my/very/long/and/winding/directory 在终端中删除 Back,我尝试cd ..并收到错误消息,因为该目录不再存在。没什么大不了。我可以打字cd /my/very/long/and/winding回到我想去的地方。但是,如果我懒得输入,是否有返回到最近仍然存在的目录的好方法?

编辑:cd ../../在这种特殊情况下是一种解决方案。但我想知道是否有更一般的答案,我不知道我需要退多少步。

command-line

5
推荐指数
2
解决办法
243
查看次数

sudo 脚本 - 最佳实践?

我有一个脚本,其中一些命令需要作为 sudo 运行。我已经看到它断言在脚本中运行 sudo 是一个坏主意,最好将整个脚本作为 sudo 运行(然后可能为了方便而修改 sudoers,如此处所述)。

我已经考虑过了,实际上看不出有任何理由不在脚本中运行 sudo 命令。假设脚本及其目录都归 root 所有,因此是纯粹的,从安全的角度来看,我看不出任何区别。(即使是这样,以 sudo 身份运行整个脚本也同样危险)。我在这里错过了什么吗?

sudo shell-script

5
推荐指数
1
解决办法
1116
查看次数

通过 ssh 实时查看脚本输出

我正在尝试使用 ssh 在远程机器上运行本地脚本。

假设这是printdelay.py我尝试运行的 python 脚本 ( ):

from time import sleep  
print("The first line")  
sleep(10)  
print("The second line")
Run Code Online (Sandbox Code Playgroud)

我像这样执行脚本:

cat printdelay.py | ssh user@host python
Run Code Online (Sandbox Code Playgroud)

脚本会执行,但我注意到只有在整个脚本运行完毕后才能看到命令的输出。我想在脚本执行时看到输出,即在打印两行之间有延迟。

我注意到

cat printdelay.py | ssh -t -t user@host python

有点做我正在寻找的东西,但是我在伪终端中看到了很多噪音,而不是线条的普通打印。我想有更好的方法来做到这一点。

scripting ssh remote python

4
推荐指数
1
解决办法
4824
查看次数

从带有文本的 shell 脚本启动编辑器

我知道可以从 shell 脚本启动默认编辑器。例如,假设$EDITOR设置了环境变量:

$EDITOR ~/newfile.txt
Run Code Online (Sandbox Code Playgroud)

是否可以使用预先填充的文本打开新文件?我能想到的一种方法是在打开文件之前创建文件:

echo "Header" > ~/newfile.txt
$EDITOR ~/newfile.txt
Run Code Online (Sandbox Code Playgroud)

但是如果文本编辑器打开的文件是预先填充的,但也可以被丢弃,那就更好了。这可能吗?

editors shell-script

3
推荐指数
1
解决办法
1777
查看次数