小编Mar*_*ter的帖子

在 Dovecot 中指定 CA 证书

在 Postfix 中,我已经指定了我的私钥、我的证书和我的 CA 的证书

smtpd_tls_CAfile     = /etc/ssl/cacert.pem
smtpd_tls_key_file   = /etc/ssl/server.key
smtpd_tls_cert_file  = /etc/ssl/server.pem
Run Code Online (Sandbox Code Playgroud)

在 dovecot 中,只有指定我的密钥和我的证书的选项:

ssl_cert = </etc/ssl/server.pem
ssl_key = </etc/ssl/server.key
Run Code Online (Sandbox Code Playgroud)

如何指定我的 CA 的证书?

更新:

问题是,当我将客户端连接到端口 993 时,出现证书错误。使用openssl s_client -connect server:993我得到这个错误:

verify return:1
verify error:num=27:certificate not trusted
verify return:1
verify error:num=21:unable to verify the first certificate
verify return:1
Run Code Online (Sandbox Code Playgroud)

当我连接到端口 465 (Postfix) 时,我没有收到此错误:

openssl s_client -connect server:465
Run Code Online (Sandbox Code Playgroud)

ssl certificates tls dovecot

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

将只读 LUKS 分区重新映射为读写

可以使用--readonly-r选项调用 cryptsetup ,这将设置只读映射:

cryptsetup --readonly luksOpen /dev/sdb1 sdb1
Run Code Online (Sandbox Code Playgroud)

以只读方式打开设备后,我可以稍后将其重新映射为读写吗?显然,我的意思是将它映射为读写而不先关闭它,然后再打开它。我可以重新映射它而不必再次输入密码吗?

如果这是不可能的,这只是 cryptsetup 不支持这一点,还是有一些更基本的层面?

dm-crypt cryptsetup device-mapper disk-encryption

6
推荐指数
1
解决办法
4132
查看次数

在不同会话之间使用 gpg-agent

我正在尝试设置 gpg-agent

当我登录到我的机器(通过 SSH)并调用时gpg,它每次都要求输入密码(它不会gpg-agent自动启动)。

当我gpg-agent手动开始使用时:

eval "$(gpg-agent --daemon)"
Run Code Online (Sandbox Code Playgroud)

然后下一次调用gpg实际启动代理,在输入密码一次后,我可以使用没有密码的 gpg。另外,我看到一个套接字已在$HOME/.gnupg/S.gpg-agent=

当我注销并再次登录(ssh)时,我看到套接字仍然存在$HOME/.gnupg/S.gpg-agent=ps显示代理正在运行,但是每次调用都gpg要求输入密码,就好像没有代理一样。

我已将此添加到我的.bashrc

GPG_TTY=$(tty)
export GPG_TTY
Run Code Online (Sandbox Code Playgroud)

但这似乎没有帮助

我发现这种行为gpg-agent非常令人困惑。我熟悉ssh-agent并且行为简单易懂。

我如何使用gpg-agent与使用相同的方式ssh-agent

为了比较,这是ssh-agent行为方式:

在我启动我的机器并第一次登录后,我ssh-add手动启动并输入一次我的密码。

然后,每次我登录到我的机器(X、控制台、ssh 等)时,我都可以使用代理(我不需要再次输入密码)。这是通过将以下行添加到.bashrc

export SSH_AUTH_SOCK="$(find /tmp/ssh-*/agent.* -uid $(id -u) -type s -print -quit 2>/dev/null)"
Run Code Online (Sandbox Code Playgroud)

gpg-agent

6
推荐指数
1
解决办法
5010
查看次数

使用 sed 删除转义字符

我的输入来自包含特殊转义字符的管道。为了便于说明,该流如下所示:

printf "foo.bar\033[00m" > file
cat file
Run Code Online (Sandbox Code Playgroud)

如何删除尾随.bar\033[00m?我已尝试以下方法,但这不起作用:

cat file | sed 's/\.bar\033[00m//'
Run Code Online (Sandbox Code Playgroud)

sed text-processing escape-characters

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

csh:将终端从 xterm 更改为终止符

我想cssh使用terminator终端模拟器,而不是默认的xterm. 在~/.clusterssh/config我更改了以下行:

#terminal=/usr/bin/xterm
terminal=/usr/bin/terminator
Run Code Online (Sandbox Code Playgroud)

但是当我开始时,cssh我收到以下错误:

Opening to: server1 server2
Usage: terminator [options]

terminator: error: no such option: -g
Usage: terminator [options]

terminator: error: no such option: -g
Cannot open pipe for reading when talking to server1 : Interrupted system call
Run Code Online (Sandbox Code Playgroud)

显然,cssh正在将一些参数传递给xterm,它terminator无法识别。

我该如何解决这个问题?

terminal xterm cluster-ssh gnome-terminator

6
推荐指数
1
解决办法
7375
查看次数

使用非标准选项构建 Debian 软件包

我想从源代码构建 Debian 软件包,使用dpkg-buildpackage. 我已经下载了包源:

apt-get -t wheezy-backports source gnucash
Run Code Online (Sandbox Code Playgroud)

gnucash-2.6.9/configure我看到的文件中,有一些选项可以在构建包时选择/取消选择。

Debian 维护者已经为我做出了决定。但是如果我想禁用某些选项,我该怎么做?

可以说,我想编译没有--enable-aqbanking. 这个选项出现在几个配置文件中:

$ grep -rl enable-aqbanking gnucash-2.6.9/
gnucash-2.6.9/packaging/gnucash.spec
gnucash-2.6.9/packaging/gnucash.spec.in
gnucash-2.6.9/configure.ac
gnucash-2.6.9/configure
Run Code Online (Sandbox Code Playgroud)

我应该编辑哪些?

什么是正确的方法呢?

compiling debian dpkg package-management configure

6
推荐指数
2
解决办法
3867
查看次数

在没有 udev 守护程序的系统上生成 /dev/disk/-by-path/ 名称的命令

在大多数 Linux 系统上,udev 通常在

/dev/disk/by-uuid/
/dev/disk/by-path/
Run Code Online (Sandbox Code Playgroud)

该点到实际设备节点(/dev/sda/dev/sdb等)。

我的系统上没有 udev,我想手动生成这些符号链接。我知道我可以blkid用来生成by-uuid名称。

但是如何在不使用 udev 的情况下by-path为给定磁盘(例如/dev/sda1)生成名称?

具体来说,我正在寻找一种方法来查找我的哪个磁盘是通过 iSCSI 从 host 连接的磁盘10.1.14.22。它可能是sdb,或者sdc可能是其他,因为我同时连接到几个(不同的)iSCSI 主机。

devices block-device disk

6
推荐指数
1
解决办法
4437
查看次数

ALSA:将音频发送到两个音频设备

在我的笔记本电脑上,我有一个板载声卡,还有一个连接的蓝牙耳机。我已经在/etc/asound.conf以下位置配置了蓝牙设备:

# cat /etc/asound.conf

pcm.bluetooth {
    type bluetooth
    device 12:34:56:78:9a:bc
    profile "auto"
}

ctl.bluetooth {
    type bluetooth
}
Run Code Online (Sandbox Code Playgroud)

现在我可以通过指定新的音频设备来向我的耳机播放音频,例如:

mplayer -ao alsa:device=bluetooth file.mp3
Run Code Online (Sandbox Code Playgroud)

如果我想玩我的默认设备,我只需省略设备:

mplayer file.mp3
Run Code Online (Sandbox Code Playgroud)

但是,我需要配置 ALSA,以便默认情况下所有声音都发送到两个设备,而不必为每个应用程序明确设置。

IE:

mplayer file.mp3
Run Code Online (Sandbox Code Playgroud)

应该在笔记本电脑声卡和蓝牙耳机上播放。

我怎样才能做到这一点 ?

alsa audio bluetooth

6
推荐指数
1
解决办法
7802
查看次数

“diff orig new”与“diff new orig”

使用 比较 2 个文件时difforiginal文件作为第一个参数提供,new(修改后的)作为第二个参数提供。

diff original new
Run Code Online (Sandbox Code Playgroud)

据推测,这种排序背后的逻辑是为了展示如何使用从左到右的约定来将原始内容转换为新的时间流逝方式。

我对这个逻辑有问题。当我比较两个文件时,我直觉地使用逆表示法:

diff new original
Run Code Online (Sandbox Code Playgroud)

这样我就可以在查看更改后,将新文件转换为旧文件,从而将其“修补”到新版本。

cat new > original
Run Code Online (Sandbox Code Playgroud)

但是使用“我的”倒置符号令人困惑,因为差异显示+用于删除和-添加。

我该如何解决这个问题?

diff cat arguments

6
推荐指数
1
解决办法
1658
查看次数

在内核二进制文件中包含内核内固件 blob

我正在 Debian Stretch 上编译我自己的内核 (4.4.x),并且我想将我的 radeon 显卡的固件包含在内核中,这样就不需要从用户空间加载。

CONFIG_FIRMWARE_IN_KERNEL
CONFIG_EXTRA_FIRMWARE
Run Code Online (Sandbox Code Playgroud)

我已将固件文件安装到/lib/firmware/

apt-get install firmware-amd-graphics
Run Code Online (Sandbox Code Playgroud)

如何找出我的特定图形卡需要包含哪些固件文件?

VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Oland GL [FirePro W2100]
Run Code Online (Sandbox Code Playgroud)

我假设我需要以下一些固件文件:

/lib/firmware/radeon/oland_*.bin
Run Code Online (Sandbox Code Playgroud)

但哪些?

一般来说,找出特定硬件/驱动程序需要哪些固件文件的过程是什么?

firmware linux-kernel

6
推荐指数
1
解决办法
5468
查看次数