我正在准备我的 Kali Linux 来运行 Tor 的中间中继。我正在按照 Tor 项目的存储库配置这个网站。
我执行了步骤 1 和 2。第三步是通过运行以下命令添加用于签署软件包的 gpg 密钥:
sudo wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null
问题是我不明白这个命令的作用以及它为什么失败,即使我以sudo
权限执行它。
┌──(michal㉿kali)-[/usr/share/keyrings]
└─$ sudo wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null
[sudo] password for michal: tee: /usr/share/keyrings/tor-archive-keyring.gpg: Permission denied
这部分wget
,我明白了。但我不知道 Tor 存储库下载到我的 vps 后会发生什么。
┌──(michal㉿kali)-[/usr/share/keyrings]
└─$ ls -lah
total 176K
drwxr-xr-x 2 root root 4.0K Jan 28 2022 .
drwxr-xr-x 135 root root 4.0K Jan 3 18:09 ..
-rw-r--r-- 1 root root 8.5K Feb 25 2021 debian-archive-bullseye-automatic.gpg
-rw-r--r-- 1 root root 8.6K Feb 25 2021 debian-archive-bullseye-security-automatic.gpg
-rw-r--r-- 1 root root 2.4K Feb 25 2021 debian-archive-bullseye-stable.gpg
-rw-r--r-- 1 root root 8.0K Feb 25 2021 debian-archive-buster-automatic.gpg
-rw-r--r-- 1 root root 8.0K Feb 25 2021 debian-archive-buster-security-automatic.gpg
-rw-r--r-- 1 root root 2.3K Feb 25 2021 debian-archive-buster-stable.gpg
-rw-r--r-- 1 root root 55K Feb 25 2021 debian-archive-keyring.gpg
-rw-r--r-- 1 root root 37K Feb 25 2021 debian-archive-removed-keys.gpg
-rw-r--r-- 1 root root 7.3K Feb 25 2021 debian-archive-stretch-automatic.gpg
-rw-r--r-- 1 root root 7.3K Feb 25 2021 debian-archive-stretch-security-automatic.gpg
-rw-r--r-- 1 root root 2.3K Feb 25 2021 debian-archive-stretch-stable.gpg
-rw-r--r-- 1 root root 2.3K Jan 25 2022 kali-archive-keyring.gpg
┌──(michal㉿kali)-[/usr/share/keyrings]
└─$ lsb_release -a 1 ⨯
No LSB modules are available.
Distributor ID: Kali
Description: Kali GNU/Linux Rolling
Release: 2022.4
Codename: kali-rolling
答案1
首先,让我们来分析一下发生了什么。 sudo
仅用于运行wget
,而不用于命令的其余部分。您所做的在功能上等同于:
# 1. Download a file and save as 'file.asc'
sudo wget -qO- https://d...E886DDD89.asc > file.asc
# 2. Dearmor that file (generates file.asc.gpg)
gpg --dearmor file.asc
# 3. Copy that file to /usr/share/keyrings
tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null <file.asc.gpg
所以你看,你曾经sudo
下载过这个文件。在这种情况下,除了 make file.asc
owned by之外,这并没有多大作用root
。在你的情况下,文件通过管道传输到标准输出,所以sudo
真的没什么作用。
接下来,您使用了gpg --dearmor
,这很好。
最后,您将tee
文件的内容复制到您的系统中。这是需要权限的部分,root
因为您正在写入root
- 拥有的目录。
答案是tee
运行sudo
。从功能上来说,这看起来像:
# 1. Download a file and save as 'file.asc'
wget -qO- https://d...E886DDD89.asc > file.asc
# 2. Dearmor that file (generates file.asc.gpg)
gpg --dearmor file.asc
# 3. Copy that file to /usr/share/keyrings
sudo tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null <file.asc.gpg
在你的 1-liner 中,它看起来像:
wget -qO- \
https://deb...6DDD89.asc | \
gpg --dearmor | \
sudo tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null
或者
wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | sudo tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null
事实上,我们| tee /usr/share... >/dev/null
之所以不使用更简单的方法>/usr/share...
,是因为我们可以tee
使用sudo
.