SK 发布的文章

不久之前,我们编写了一个指南,内容是一个文件共享实用程序,名为 transfer.sh,它是一个免费的 Web 服务,允许你在 Internet 上轻松快速地共享文件,还有 PSiTransfer,一个简单的开源自托管文件共享解决方案。今天,我们将看到另一个名为 “iWant” 的文件共享实用程序。它是一个基于命令行的自由开源的去中心化点对点文件共享应用程序。

你可能想知道,它与其它文件共享应用程序有什么不同?以下是 iWant 的一些突出特点。

  • 它是一个命令行应用程序。这意味着你不需要消耗内存来加载 GUI 实用程序。你只需要一个终端。
  • 它是去中心化的。这意味着你的数据不会在任何中心位置存储。因此,不会因为中心点失败而失败。
  • iWant 允许中断下载,你可以在以后随时恢复。你不需要从头开始下载,它会从你停止的位置恢复下载。
  • 共享目录中文件所作的任何更改(如删除、添加、修改)都会立即反映在网络中。
  • 就像种子一样,iWant 从多个节点下载文件。如果任何节点离开群组或未能响应,它将继续从另一个节点下载。
  • 它是跨平台的,因此你可以在 GNU/Linux、MS Windows 或者 Mac OS X 中使用它。

安装 iWant

iWant 可以使用 PIP 包管理器轻松安装。确保你在 Linux 发行版中安装了 pip。如果尚未安装,参考以下指南。

如何使用 Pip 管理 Python 包

安装 pip 后,确保你有以下依赖项:

  • libffi-dev
  • libssl-dev

比如说,在 Ubuntu 上,你可以使用以下命令安装这些依赖项:

$ sudo apt-get install libffi-dev libssl-dev

安装完所有依赖项后,使用以下命令安装 iWant:

$ sudo pip install iwant

现在我们的系统中已经有了 iWant,让我们来看看如何使用它来通过网络传输文件。

用法

首先,使用以下命令启动 iWant 服务器:

(LCTT 译注:虽然这个软件是叫 iWant,但是其命令名为 iwanto,另外这个软件至少一年没有更新了。)

$ iwanto start

第一次启动时,iWant 会询问想要分享和下载文件夹的位置,所以需要输入两个文件夹的位置。然后,选择要使用的网卡。

示例输出:

Shared/Download folder details looks empty..
Note: Shared and Download folder cannot be the same
SHARED FOLDER(absolute path):/home/sk/myshare
DOWNLOAD FOLDER(absolute path):/home/sk/mydownloads
Network interface available
1. lo => 127.0.0.1
2. enp0s3 => 192.168.43.2
Enter index of the interface:2
now scanning /home/sk/myshare
[Adding] /home/sk/myshare 0.0
Updating Leader 56f6d5e8-654e-11e7-93c8-08002712f8c1
[Adding] /home/sk/myshare 0.0
connecting to 192.168.43.2:1235 for hashdump

如果你看到类似上面的输出,你可以立即开始使用 iWant 了。

同样,在网络中的所有系统上启动 iWant 服务,指定有效的分享和下载文件夹的位置,并选择合适的网卡。

iWant 服务将继续在当前终端窗口中运行,直到你按下 CTRL+C 退出为止。你需要打开一个新选项卡或新的终端窗口来使用 iWant。

iWant 的用法非常简单,它的命令很少,如下所示。

  • iwanto start – 启动 iWant 服务。
  • iwanto search <name> – 查找文件。
  • iwanto download <hash> – 下载一个文件。
  • iwanto share <path> – 更改共享文件夹的位置。
  • iwanto download to <destination> – 更改下载文件夹位置。
  • iwanto view config – 查看共享和下载文件夹。
  • iwanto –version – 显示 iWant 版本。
  • iwanto -h – 显示帮助信息。

让我向你展示一些例子。

查找文件

要查找一个文件,运行:

$ iwanto search <filename>

请注意,你无需指定确切的名称。

示例:

$ iwanto search command

上面的命令将搜索包含 “command” 字符串的所有文件。

我的 Ubuntu 系统会输出:

Filename Size Checksum
------------------------------------------- ------- --------------------------------
/home/sk/myshare/THE LINUX COMMAND LINE.pdf 3.85757 efded6cc6f34a3d107c67c2300459911

下载文件

你可以在你的网络上的任何系统下载文件。要下载文件,只需提供文件的哈希(校验和),如下所示。你可以使用 iwanto search 命令获取共享的哈希值。

$ iwanto download efded6cc6f34a3d107c67c2300459911

文件将保存在你的下载位置,在本文中是 /home/sk/mydownloads/ 位置。

Filename: /home/sk/mydownloads/THE LINUX COMMAND LINE.pdf
Size: 3.857569 MB

查看配置

要查看配置,例如共享和下载文件夹的位置,运行:

$ iwanto view config

示例输出:

Shared folder:/home/sk/myshare
Download folder:/home/sk/mydownloads

更改共享和下载文件夹的位置

你可以更改共享文件夹和下载文件夹。

$ iwanto share /home/sk/ostechnix

现在,共享位置已更改为 /home/sk/ostechnix

同样,你可以使用以下命令更改下载位置:

$ iwanto download to /home/sk/Downloads

要查看所做的更改,运行命令:

$ iwanto view config

停止 iWant

一旦你不想用 iWant 了,可以按下 CTRL+C 退出。

如果它不起作用,那可能是由于防火墙或你的路由器不支持多播。你可以在 ~/.iwant/.iwant.log 文件中查看所有日志。有关更多详细信息,参阅最后提供的项目的 GitHub 页面。

差不多就是全部了。希望这个工具有所帮助。下次我会带着另一个有趣的指南再次来到这里。

干杯!

资源

-iWant GitHub


via: https://www.ostechnix.com/iwant-decentralized-peer-peer-file-sharing-commandline-application/

作者:SK 选题:lujun9972 译者:MjSeven 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

我有一台部署在 AWS 上的 Ubuntu 系统,在它的里面有一个脚本,这个脚本的原有目的是以一定间隔(准确来说是每隔 1 分钟)去检查某个特定服务是否正在运行,如果这个服务因为某些原因停止了,就自动重启这个服务。但问题是我需要 sudo 权限来开启这个服务。正如你所知道的那样,当我们以 sudo 用户运行命令时,我们应该提供密码,但我并不想这么做,实际上我想做的是以 sudo 用户的身份运行这个服务但无需提供密码。假如你曾经经历过这样的情形,那么我知道一个简单的方法来做到这点。今天,在这个简短的指南中,我将教你如何在类 Unix 的操作系统中运行特定命令而无需 sudo 密码。

就让我们看看下面的例子吧。

$ sudo mkdir /ostechnix
[sudo] password for sk:

正如上面的截图中看到的那样,当我在根目录(/)中创建一个名为 ostechnix 的目录时,我需要提供 sudo 密码。每当我们尝试以 sudo 特权执行一个命令时,我们必须输入密码。而在我的预想中,我不想提供 sudo 密码。下面的内容便是我如何在我的 Linux 机子上运行一个 sudo 命令而无需输入密码的过程。

在 Linux 中运行特定命令而无需 sudo 密码

基于某些原因,假如你想允许一个用户运行特定命令而无需提供 sudo 密码,则你需要在 sudoers 文件中添加上这个命令。

假如我想让名为 sk 的用户去执行 mkdir 而无需提供 sudo 密码,下面就让我们看看该如何做到这点。

使用下面的命令来编辑 sudoers 文件:

$ sudo visudo

将下面的命令添加到这个文件的最后。

sk ALL=NOPASSWD:/bin/mkdir

其中 sk 是用户名。根据上面一行的内容,用户 sk 可以从任意终端执行 mkdir 命令而不必输入 sudo 密码。

你可以用逗号分隔的值来添加额外的命令(例如 chmod),正如下面展示的那样。

sk ALL=NOPASSWD:/bin/mkdir,/bin/chmod

保存并关闭这个文件,然后注销(或重启)你的系统。现在以普通用户 sk 登录,然后试试使用 sudo 来运行这些命令,看会发生什么。

$ sudo mkdir /dir1

看到了吗?即便我以 sudo 特权运行 mkdir 命令,也不会弹出提示让我输入密码。从现在开始,当用户 sk 运行 mkdir 时,就不必输入 sudo 密码了。

当运行除了添加到 sudoers 文件之外的命令时,你将被提示输入 sudo 密码。

让我们用 sudo 来运行另一个命令。

$ sudo apt update

看到了吗?这个命令将提示我输入 sudo 密码。

假如你不想让这个命令提示你输入 sudo 密码,请编辑 sudoers 文件:

$ sudo visudo

像下面这样将 apt 命令添加到 sudoers 文件中:

sk ALL=NOPASSWD:/bin/mkdir,/usr/bin/apt

你注意到了上面命令中 apt 二进制执行文件的路径与 mkdir 的有所不同吗?是的,你必须提供一个正确的可执行文件路径。要找到任意命令的可执行文件路径,例如这里的 apt,可以像下面这样使用 whichis 命令来查看:

$ whereis apt
apt: /usr/bin/apt /usr/lib/apt /etc/apt /usr/share/man/man8/apt.8.gz

如你所见,apt 命令的可执行文件路径为 /usr/bin/apt,所以我将这个路径添加到了 sudoers 文件中。

正如我前面提及的那样,你可以添加任意多个以逗号分隔的命令。一旦你做完添加的动作,保存并关闭你的 sudoers 文件,接着注销,然后重新登录进你的系统。

现在就检验你是否可以直接运行以 sudo 开头的命令而不必使用密码:

$ sudo apt update

看到了吗?apt 命令没有让我输入 sudo 密码,即便我用 sudo 来运行它。

下面展示另一个例子。假如你想运行一个特定服务,例如 apache2,那么就添加下面这条命令到 sudoers 文件中:

sk ALL=NOPASSWD:/bin/mkdir,/usr/bin/apt,/bin/systemctl restart apache2

现在用户 sk 就可以运行 sudo systemctl restart apache 命令而不必输入 sudo 密码了。

我可以再次让一个特别的命令提醒输入 sudo 密码吗?当然可以!只需要删除添加的命令,注销然后再次登录即可。

除了这种方法外,你还可以在命令的前面添加 PASSWD: 指令。让我们看看下面的例子:

sudoers 文件中添加或者修改下面的一行:

sk ALL=NOPASSWD:/bin/mkdir,/bin/chmod,PASSWD:/usr/bin/apt

在这种情况下,用户 sk 可以运行 mkdirchmod 命令而不用输入 sudo 密码。然而,当他运行 apt 命令时,就必须提供 sudo 密码了。

免责声明:本篇指南仅具有教育意义。在使用这个方法的时候,你必须非常小心。这个命令既可能富有成效但也可能带来摧毁性效果。例如,假如你允许用户执行 rm 命令而不输入 sudo 密码,那么他们可能无意或有意地删除某些重要文件。我警告过你了!

那么这就是全部的内容了。希望这个能够给你带来帮助。更多精彩内容即将呈现,请保持关注!

干杯!


via: https://www.ostechnix.com/run-particular-commands-without-sudo-password-linux/

作者:SK 选题:lujun9972 译者:FSSlc 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在我们安装完一个 Linux 系统后最为常见的任务便是网络配置了。当然,你可以在安装系统时进行网络接口的配置。但是,对于某些人来说,他们更偏爱在安装完系统后再进行网络的配置或者更改现存的设置。众所周知,为了在命令行中进行网络设定的配置,我们首先必须知道系统中有多少个可用的网络接口。本次这个简单的指南将列出所有可能的方式来在 Linux 和 Unix 操作系统中找到可用的网络接口。

在 Linux 中找到可用的网络接口

我们可以使用下面的这些方法来找到可用的网络接口。

方法 1 使用 ifconfig 命令

使用 ifconfig 命令来查看网络接口仍然是最常使用的方法。我相信还有很多 Linux 用户仍然使用这个方法。

$ ifconfig -a

示例输出:

enp5s0: flags=4098<BROADCAST,MULTICAST> mtu 1500
    ether 24:b6:fd:37:8b:29 txqueuelen 1000 (Ethernet)
    RX packets 0 bytes 0 (0.0 B)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 0 bytes 0 (0.0 B)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
    inet 127.0.0.1 netmask 255.0.0.0
    inet6 ::1 prefixlen 128 scopeid 0x10<host>
    loop txqueuelen 1000 (Local Loopback)
    RX packets 171420 bytes 303980988 (289.8 MiB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 171420 bytes 303980988 (289.8 MiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

wlp9s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 192.168.225.37 netmask 255.255.255.0 broadcast 192.168.225.255
    inet6 2409:4072:6183:c604:c218:85ff:fe50:474f prefixlen 64 scopeid 0x0<global>
    inet6 fe80::c218:85ff:fe50:474f prefixlen 64 scopeid 0x20<link>
    ether c0:18:85:50:47:4f txqueuelen 1000 (Ethernet)
    RX packets 564574 bytes 628671925 (599.5 MiB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 299706 bytes 60535732 (57.7 MiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

如上面的输出所示,在我的 Linux 机器上有两个网络接口,它们分别叫做 enp5s0(主板上的有线网卡)和 wlp9s0(无线网卡)。其中的 lo 是环回网卡,被用来访问本地的网络的服务,通常它的 IP 地址为 127.0.0.1

我们也可以在许多 UNIX 变种例如 FreeBSD 中使用相同的 ifconfig 来列出可用的网卡。

方法 2 使用 ip 命令

在最新的 Linux 版本中, ifconfig 命令已经被弃用了。你可以使用 ip 命令来罗列出网络接口,正如下面这样:

$ ip link show

示例输出:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp5s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 24:b6:fd:37:8b:29 brd ff:ff:ff:ff:ff:ff
3: wlp9s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
    link/ether c0:18:85:50:47:4f brd ff:ff:ff:ff:ff:ff

你也可以使用下面的命令来查看。

$ ip addr
$ ip -s link

你注意到了吗?这些命令同时还显示出了已经连接的网络接口的状态。假如你仔细查看上面的输出,你将注意到我的有线网卡并没有跟网络线缆连接(从上面输出中的 DOWN 可以看出)。另外,我的无线网卡已经连接了(从上面输出中的 UP 可以看出)。想知晓更多的细节,可以查看我们先前的指南 在 Linux 中查看网络接口的已连接状态

这两个命令(ifconfigip)已经足够在你的 LInux 系统中查看可用的网卡了。

然而,仍然有其他方法来列出 Linux 中的网络接口,下面我们接着看。

方法 3 使用 /sys/class/net 目录

Linux 内核将网络接口的详细信息保存在 /sys/class/net 目录中,你可以通过查看这个目录的内容来检验可用接口的列表是否和前面的结果相符。

$ ls /sys/class/net

示例输出:

enp5s0 lo wlp9s0

方法 4 使用 /proc/net/dev 目录

在 Linux 操作系统中,文件 /proc/net/dev 中包含有关网络接口的信息。

要查看可用的网卡,只需使用下面的命令来查看上面文件的内容:

$ cat /proc/net/dev

示例输出:

Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
wlp9s0: 629189631 566078 0 0 0 0 0 0 60822472 300922 0 0 0 0 0 0
enp5s0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
lo: 303980988 171420 0 0 0 0 0 0 303980988 171420 0 0 0 0 0 0

方法 5 使用 netstat 命令

netstat 命令可以列出各种不同的信息,例如网络连接、路由表、接口统计信息、伪装连接和多播成员等。

$ netstat -i

示例输出:

Kernel Interface table
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
lo 65536 171420 0 0 0 171420 0 0 0 LRU
wlp9s0 1500 565625 0 0 0 300543 0 0 0 BMRU

请注意 netstat 被弃用了, netstat -i 的替代命令是 ip -s link。另外需要注意的是这个方法将只列出激活的接口,而不是所有可用的接口。

方法 6 使用 nmcli 命令

nmcli 是一个用来控制 NetworkManager 和报告网络状态的命令行工具。它可以被用来创建、展示、编辑、删除、激活、停用网络连接和展示网络状态。

假如你的 Linux 系统中安装了 NetworkManager,你便可以使用下面的命令来使用 nmcli 列出可以的网络接口:

$ nmcli device status

或者

$ nmcli connection show

现在你知道了如何在 Linux 中找到可用网络接口的方法,接下来,请查看下面的指南来知晓如何在 Linux 中配置 IP 地址吧。

假如你知道其他快捷的方法来在 Linux 中找到可用的网络接口,请在下面的评论部分中分享出来,我将检查你们的评论并更新这篇指南。

这就是全部的内容了,更多精彩内容即将呈现,请保持关注!

干杯!


via: https://www.ostechnix.com/how-to-find-available-network-interfaces-on-linux/

作者:SK 选题:lujun9972 译者:FSSlc 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在市场上能找到许多用来保护文件的文档加密工具。我们已经介绍过其中一些例如 CryptomaterCryptkeeperCryptGoCryptrTomb,以及 GnuPG 等加密工具。今天我们将讨论另一款叫做 “toplip” 的命令行文件加密解密工具。它是一款使用一种叫做 AES256 的强大加密方法的自由开源的加密工具。它同时也使用了 XTS-AES 设计以保护你的隐私数据。它还使用了 Scrypt,一种基于密码的密钥生成函数来保护你的密码免于暴力破解。

优秀的特性

相比于其它文件加密工具,toplip 自带以下独特且杰出的特性。

  • 非常强大的基于 XTS-AES256 的加密方法。
  • 合理的推诿 Plausible deniability
  • 加密并嵌入文件到图片(PNG/JPG)中。
  • 多重密码保护。
  • 可防护直接暴力破解。
  • 无可辨识的输出标记。
  • 开源(GPLv3)。

安装 toplip

没有什么需要安装的。toplip 是独立的可执行二进制文件。你所要做的仅是从 产品官方页面 下载最新版的 toplip 并赋予它可执行权限。为此你只要运行:

chmod +x toplip

使用

如果你不带任何参数运行 toplip,你将看到帮助页面。

./toplip

请允许我给你展示一些例子。

为了达到指导目的,我建了两个文件 file1file2。我同时也有 toplip 可执行二进制文件。我把它们全都保存进一个叫做 test 的目录。

加密/解密单个文件

现在让我们加密 file1。为此,运行:

./toplip file1 > file1.encrypted

这行命令将让你输入密码。一旦你输入完密码,它就会加密 file1 的内容并将它们保存进你当前工作目录下一个叫做 file1.encrypted 的文件。

上述命令行的示例输出将会是这样:

This is toplip v1.20 (C) 2015, 2016 2 Ton Digital. Author: Jeff Marrison A showcase piece for the HeavyThing library. Commercial support available Proudly made in Cooroy, Australia. More info: https://2ton.com.au/toplip file1 Passphrase #1: generating keys...Done 
Encrypting...Done

为了验证文件是否的确经过加密,试着打开它你会发现一些随机的字符。

为了解密加密过的文件,像以下这样使用 -d 参数:

./toplip -d file1.encrypted

这行命令会解密提供的文档并在终端窗口显示内容。

为了保存文档而不是写入到标准输出,运行:

./toplip -d file1.encrypted > file1.decrypted

输入正确的密码解密文档。file1.encrypted 的所有内容将会存入一个叫做 file1.decrypted 的文档。

请不要用这种命名方法,我这样用仅仅是为了便于理解。使用其它难以预测的名字。

加密/解密多个文件

现在我们将使用两个分别的密码加密每个文件。

./toplip -alt file1 file2 > file3.encrypted

你会被要求为每个文件输入一个密码,使用不同的密码。

上述命令行的示例输出将会是这样:

This is toplip v1.20 (C) 2015, 2016 2 Ton Digital. Author: Jeff Marrison A showcase piece for the HeavyThing library. Commercial support available Proudly made in Cooroy, Australia. More info: https://2ton.com.au/toplip 
file2 Passphrase #1 : generating keys...Done 
file1 Passphrase #1 : generating keys...Done 
Encrypting...Done

上述命令所做的是加密两个文件的内容并将它们保存进一个单独的叫做 file3.encrypted 的文件。在保存中分别给予各自的密码。比如说如果你提供 file1 的密码,toplip 将复原 file1。如果你提供 file2 的密码,toplip 将复原 file2

每个 toplip 加密输出都可能包含最多四个单独的文件,并且每个文件都建有各自独特的密码。由于加密输出放在一起的方式,一下判断出是否存在多个文档不是一件容易的事。默认情况下,甚至就算确实只有一个文件是由 toplip 加密,随机数据都会自动加上。如果指定了多于一个文件,每个都有自己的密码,那么你可以有选择性地独立解码每个文件,以此来否认其它文件存在的可能性。这能有效地使一个用户在可控的暴露风险下打开一个加密的捆绑文件包。并且对于敌人来说,在计算上没有一种低廉的办法来确认额外的秘密数据存在。这叫做“ 合理的推诿 Plausible deniability ”,是 toplip 著名的特性之一。

为了从 file3.encrypted 解码 file1,仅需输入:

./toplip -d file3.encrypted > file1.encrypted

你将会被要求输入 file1 的正确密码。

为了从 file3.encrypted 解码 file2,输入:

./toplip -d file3.encrypted > file2.encrypted

别忘了输入 file2 的正确密码。

使用多重密码保护

这是我中意的另一个炫酷特性。在加密过程中我们可以为单个文件提供多重密码。这样可以保护密码免于暴力尝试。

./toplip -c 2 file1 > file1.encrypted

这里,-c 2 代表两个不同的密码。上述命令行的示例输出将会是这样:

This is toplip v1.20 (C) 2015, 2016 2 Ton Digital. Author: Jeff Marrison A showcase piece for the HeavyThing library. Commercial support available Proudly made in Cooroy, Australia. More info: https://2ton.com.au/toplip 
file1 Passphrase #1: generating keys...Done
file1 Passphrase #2: generating keys...Done 
Encrypting...Done

正如你在上述示例中所看到的,toplip 要求我输入两个密码。请注意你必须提供两个不同的密码,而不是提供两遍同一个密码。

为了解码这个文件,这样做:

$ ./toplip -c 2 -d file1.encrypted > file1.decrypted 
This is toplip v1.20 (C) 2015, 2016 2 Ton Digital. Author: Jeff Marrison A showcase piece for the HeavyThing library. Commercial support available Proudly made in Cooroy, Australia. More info: https://2ton.com.au/toplip 
file1.encrypted Passphrase #1: generating keys...Done
file1.encrypted Passphrase #2: generating keys...Done
Decrypting...Done

将文件藏在图片中

将一个文件、消息、图片或视频藏在另一个文件里的方法叫做隐写术。幸运的是 toplip 默认包含这个特性。

为了将文件藏入图片中,像如下所示的样子使用 -m 参数。

$ ./toplip -m image.png file1 > image1.png
This is toplip v1.20 (C) 2015, 2016 2 Ton Digital. Author: Jeff Marrison A showcase piece for the HeavyThing library. Commercial support available Proudly made in Cooroy, Australia. More info: https://2ton.com.au/toplip 
file1 Passphrase #1: generating keys...Done 
Encrypting...Done

这行命令将 file1 的内容藏入一张叫做 image1.png 的图片中。

要解码,运行:

$ ./toplip -d image1.png > file1.decrypted This is toplip v1.20 (C) 2015, 2016 2 Ton Digital. Author: Jeff Marrison A showcase piece for the HeavyThing library. Commercial support available Proudly made in Cooroy, Australia. More info: https://2ton.com.au/toplip 
image1.png Passphrase #1: generating keys...Done 
Decrypting...Done

增加密码复杂度

为了进一步使文件变得难以破译,我们可以像以下这样增加密码复杂度:

./toplip -c 5 -i 0x8000 -alt file1 -c 10 -i 10 file2 > file3.encrypted

上述命令将会要求你为 file1 输入十条密码,为 file2 输入五条密码,并将它们存入单个叫做 file3.encrypted 的文件。如你所注意到的,我们在这个例子中又用了另一个 -i 参数。这是用来指定密钥生成循环次数。这个选项覆盖了 scrypt 函数初始和最终 PBKDF2 阶段的默认循环次数 1。十六进制和十进制数值都是允许的。比如说 0x800010 等。请注意这会大大增加计算次数。

为了解码 file1,使用:

./toplip -c 5 -i 0x8000 -d file3.encrypted > file1.decrypted

为了解码 file2,使用:

./toplip -c 10 -i 10 -d file3.encrypted > file2.decrypted

参考 toplip 官网以了解更多关于其背后的技术信息和使用的加密方式。

我个人对所有想要保护自己数据的人的建议是,别依赖单一的方法。总是使用多种工具/方法来加密文件。不要在纸上写下密码也不要将密码存入本地或云。记住密码,阅后即焚。如果你记不住,考虑使用任何了信赖的密码管理器。

今天就到此为止了,更多好东西后续推出,请保持关注。

顺祝时祺!


via: https://www.ostechnix.com/toplip-strong-file-encryption-decryption-cli-utility/

作者:SK 译者:tomjlw 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Mozilla Firefox 多年来一直是我的默认 Web 浏览器,我每天用它来进行日常网络活动,例如访问邮件,浏览喜欢的网站等。今天,我在使用 Firefox 时遇到了一个奇怪的错误。我试图在 Reddit 平台上分享我们的一个指南时,在 Firefox 上出现了以下错误消息:

Network Protocol Error

Firefox has experienced a network protocol violation that cannot be repaired.

The page you are trying to view cannot be shown because an error in the network protocol was detected.

Please contact the website owners to inform them of this problem.

老实说,我有点慌,我以为可能是我的系统受到了某种恶意软件的影响。哈哈!但是我发现我错了。我在 Arch Linux 桌面上使用的是最新的 Firefox 版本,我在 Chromium 浏览器中打开了相同的链接,它正确显示了,我猜这是 Firefox 相关的错误。在谷歌上搜索后,我解决了这个问题,如下所述。

出现这种问题主要是因为“浏览器缓存”,如果你遇到此类错误,例如 “Network Protocol Error” 或 “Corrupted Content Error”,遵循以下任何一种方法。

方法 1:

要修复 “Network Protocol Error” 或 “Corrupted Content Error”,你需要在重新加载网页时绕过缓存。为此,按下 Ctrl + F5Ctrl + Shift + R 快捷键,它将从服务器重新加载页面,而不是从 Firefox 缓存加载。这样网页就应该可以正常工作了。

方法 2:

如果方法 1 不起作用,尝试以下方法。

打开 “Edit - > Preferences”,在 “Preferences” 窗口中,打开左窗格中的 “Privacy & Security” 选项卡,单击 “Clear Data” 选项清除 Firefox 缓存。

确保你选中了 “Cookies and Site Data” 和 “Cached Web Content” 选项,然后单击 “Clear”。

完成!现在 Cookie 和离线内容将被删除。注意,Firefox 可能会将你从登录的网站中注销,稍后你可以重新登录这些网站。最后,关闭 Firefox 浏览器并重新启动系统。现在网页加载没有任何问题。

希望这对你有帮助。更多好东西要来了,敬请关注!

干杯!


via: https://www.ostechnix.com/how-to-fix-network-protocol-error-on-mozilla-firefox/

作者:SK 选题:lujun9972 译者:MjSeven 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

你是否遇到过需要 SSH 登录到远程服务器并立即 cd 到一个目录来继续交互式作业?你找对地方了!这个简短的教程描述了如何直接 SSH 登录到远程 Linux 系统的特定目录。而且不仅是 SSH 登录到特定目录,你还可以在连接到 SSH 服务器后立即运行任何命令。这些没有你想的那么难。请继续阅读。

SSH 登录到远程系统的特定目录

在我知道这个方法之前,我通常首先使用以下命令 SSH 登录到远程系统:

$ ssh user@remote-system

然后如下 cd 进入某个目录:

$ cd <some-directory>

然而,你不需要使用两个单独的命令。你可以用一条命令组合并简化这个任务。

看看下面的例子。

$ ssh -t [email protected] 'cd /home/sk/ostechnix ; bash'

上面的命令将通过 SSH 连接到远程系统 (192.168.225.22) 并立即进入名为 /home/sk/ostechnix/ 的目录,并停留在提示符中。

这里,-t 标志用于强制分配伪终端,这是一个必要的交互式 shell。

以下是上面命令的输出:

你也可以使用此命令:

$ ssh -t [email protected] 'cd /home/sk/ostechnix ; exec bash'

或者,

$ ssh -t [email protected] 'cd /home/sk/ostechnix && exec bash -l'

这里,-l 标志将 bash 设置为登录 shell。

在上面的例子中,我在最后一个参数中使用了 bash。它是我的远程系统中的默认 shell。如果你不知道远程系统上的 shell 类型,请使用以下命令:

$ ssh -t [email protected] 'cd /home/sk/ostechnix && exec $SHELL'

就像我已经说过的,它不仅仅是连接到远程系统后 cd 进入目录。你也可以使用此技巧运行其他命令。例如,以下命令将进入 /home/sk/ostechnix/,然后执行命令 uname -a

$ ssh -t [email protected] 'cd /home/sk/ostechnix && uname -a && exec $SHELL'

或者,你可以在远程系统上的 .bash_profile 文件中添加你想在 SSH 登录后执行的命令。

编辑 .bash_profile 文件:

$ nano ~/.bash_profile

每个命令一行。在我的例子中,我添加了下面这行:

cd /home/sk/ostechnix >& /dev/null

保存并关闭文件。最后,运行以下命令更新修改。

$ source ~/.bash_profile

请注意,你应该在远程系统的 .bash_profile.bashrc 文件中添加此行,而不是在本地系统中。从现在开始,无论何时登录(无论是通过 SSH 还是直接登录),cd 命令都将执行,你将自动进入 /home/sk/ostechnix/ 目录。

就是这些了。希望这篇文章有用。还有更多好东西。敬请关注!

干杯!


via: https://www.ostechnix.com/how-to-ssh-into-a-particular-directory-on-linux/

作者:SK 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出