小编hum*_*ace的帖子

没有密码的自动 ssh-keygen,如何?

我想制作一个自动脚本,该脚本调用ssh-keygen并创建一些稍后将使用的发布/私有密钥对。原则上一切正常....
ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q
...除了它要求我提供加密密钥的密码。这使得 - 目前 - 自动化变得困难。

我可以通过命令行参数提供密码-N thepassphrase,以防止出现提示。我什至不希望拥有密钥——另外通过加密保护——并且希望密钥对是明文。

这个问题的(最佳)解决方案是什么?

-q据称意味着“安静/静音”的选项仍然无法避免密码短语交互。我也没有找到这样的东西
ssh-keygen ... -q --no-passphrase

请不要开始说教或教导我“缺少密码”的利弊,我知道这一点。在交互式表单中(不是作为脚本),用户只需按两次 [ENTER],密钥将被保存为纯文本。这就是我想在这样的脚本中实现的目标:

#!/bin/bash

命令 1
命令 2
var=$(command3)

# 这不应该停止脚本并要求输入密码
ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q

scripting ssh

146
推荐指数
4
解决办法
18万
查看次数

命令行程序可以防止其输出被重定向吗?

我已经习惯了这样做: someprogram >output.file

每当我想将程序生成的输出保存到文件时,我都会这样做。我也知道这个IO 重定向的两个变体:

  • someprogram 2>output.of.stderr.file (对于标准错误)
  • someprogram &>output.stderr.and.stdout.file (对于 stdout+stderr 组合)

今天我遇到了一个我认为不可能的情况。我使用以下命令xinput test 10,正如预期的那样,我有以下输出:

用户@主机名:~$ xinput 测试 10
按键 30 
密钥释放 30 
按键 40 
密钥释放 40 
按键 32 
密钥发布 32 
按键 65 
密钥发布 65 
按键 61 
密钥发布 61 
按键 31 
^C
用户@主机名:~$ 

我希望这个输出可以像往常一样保存到一个文件中,比如使用xinput test 10 > output.file. 但是当与我的期望相反时,文件 output.file 仍然是空的。这也是正确的,xinput test 10 &> output.file只是为了确保我不会错过 stdout 或 stderr 上的某些内容。

我真的很困惑,因此在这里询问该xinput程序是否有办法避免其输出被重定向?

更新

我看过源码。似乎输出是由这段代码生成的(见下面的片段)。在我看来,输出将由普通的 printf 生成

//在文件test.c中

static void print_events(Display *dpy) …

io-redirection xinput

50
推荐指数
3
解决办法
5791
查看次数

退出后,某些工具(例如 nano ,less)如何设法在终端中不留下任何内容?

每当我在 shell 中使用类似寻呼机less或编辑器nano(我的 shell 是 GNU bash)时,我都会看到一种我无法完全解释的行为,这与我可以使用其他工具(如catls. 我想问一下这种行为是怎么产生的。

不容易解释的行为是,通常所有输出到 stdout/stderr 最终都被记录在终端模拟器后台缓冲区中,所以我可以向后滚动,而在使用lessor的情况下(对我来说不太正常)nano,输出由终端模拟器显示,但在退出程序时,内容“神奇地消失”。

我想举两个例子:

  • seq 1 200 (在后台缓冲区中生成 200 行)
  • seq 1 200 | less (让我翻页 200 行,但最终“清理”并在后台缓冲区中没有记录任何内容)

我的怀疑是某种转义代码在起作用,我很感激有人指出我对这种观察到的行为差异的解释。

由于一些评论和答案是措辞的,就好像我希望改变行为一样,这“很高兴知道”,但实际上所需的答案应该是对机制的描述,而不是改变它的方法。

pager terminal escape-characters

41
推荐指数
3
解决办法
2948
查看次数

为什么 x86 和 x86_64 中的 Linux 系统调用号不同?

我知道系统调用接口是在低级别实现的,因此依赖于体系结构/平台,而不是“通用”代码。

然而,我无法清楚地看到为什么 Linux 32 位 x86 内核中的系统调用在类似架构 Linux 64 位 x86_64 中具有不保持相同的编号?这个决定背后的动机/原因是什么?

我的第一个猜测是后台原因是保持 32 位应用程序可在 x86_64 系统上运行,以便通过对系统调用号的合理偏移,系统将知道用户空间是 32 位还是 64 位分别。然而事实并非如此。至少在我看来,在 x86_64 中 read() 是系统调用号 0 不能与这种想法保持一致。

另一种猜测是更改系统调用号可能有安全/强化背景,我无法确认这一点。

由于不知道实现依赖于体系结构的代码部分的挑战,我仍然想知道如何更改系统调用号,当似乎没有必要时(因为即使是 16 位寄存器也会存储更多,而不是当前的 ~346 个数字来表示所有调用),将有助于实现任何事情,除了破坏兼容性(尽管通过库 libc 使用系统调用可以缓解它)。

linux system-calls

38
推荐指数
2
解决办法
5812
查看次数

是否可以使用正在运行的内核的 /sys 获取设备树的信息?

通常对于 arm 系统,设备树向内核 (Linux) 提供硬件信息。这些设备树作为编译并加载到内核的 dts(设备树源)文件存在。问题是我无权访问这样的dts文件,甚至无法访问dtb文件。

我可以访问/sys/proc在机器上,我想问一下这是否允许我“猜测正确的值”以在 dts 中使用?

如果这个问题的答案还取决于是否首先使用了设备树接口(即 adtb被创建并提供给内核),而不是一些更多的黑客攻击,那么潜在的答案也可以突出另一个方面“我们只是从 vanilla 转移并修补内核以解决我们内核的设备信息问题“-解决方案?

linux arm linux-kernel device-tree reverse-engineering

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

linux内核的系统关闭如何在内部工作?

我对用户空间和初始化系统(无论是经典的 init sysV /upstart/systemd)如何在系统关闭时工作有一个粗略的想法。(本质上有“停止!”、“请真正停止”、“过程我需要杀死你才能停止”和等待......事情正在进行中的顺序)。

无论如何,我非常不知道系统关闭在内核中是如何工作的(肯定还有很多事情要做)?

我试图查看内核文档https://www.kernel.org/doc/htmldocs/,甚至使用NSA 的 pal 搜索工具让我先了解它是如何工作的。

我还搜索了 SE U+L 并没有发现任何东西(我是否忽略了它?)

无论如何,这个问题虽然可能有点挑战性,但值得在这个问答网络中得到答案,因为我认为更多的人有兴趣了解关闭时 linux 内核中发生的情况。

可能还有更改以链接到一些更详细的解释。

答案可能包括使用了哪些系统调用和哪些内核信号?

https://github.com/torvalds/linux/blob/b3a3a9c441e2c8f6b6760de9331023a7906a4ac6/arch/x86/kernel/reboot.c 似乎是与重启相关的 x86 使用文件(已经接近关闭,嗯?)

也许在这里找到的片段http://lxr.free-electrons.com/source/kernel/reboot.c#L176 可以用来解释

第176话
177 {
第178话
第179话
第180话
第181话
第182话
183 pr_emerg(“断电\n”);
184 kmsg_dump(KMSG_DUMP_POWEROFF);
第185话
第186话
第187话

shutdown linux-kernel

35
推荐指数
2
解决办法
4万
查看次数

如何在 debugfs 中的 ext4 文件系统上删除名为“filen/ame”(带斜杠)的文件?

玩 e2fsprogs debugfs,由于更改/意外,filen/ame创建了一个名为的文件。显然,正斜杠字符/用作路径名中的特殊分隔符。

仍在使用debugfs我想删除名为 的文件filen/ame,但我没有成功,因为该/字符没有被解释为文件名的一部分?

debugfs 是否提供删除包含斜杠的文件的方法?如果是这样怎么办?

我用了:

cd /tmp
echo "content" > contentfile
dd if=/dev/zero of=/tmp/ext4fs bs=1M count=50
mkfs.ext4 /tmp/ext4fs
debugfs -w -R "write /tmp/contentfile filen/ame" /tmp/ext4fs
debugfs -w -R "ls" /tmp/ext4fs
Run Code Online (Sandbox Code Playgroud)

输出:

debugfs 1.43.4 (31-Jan-2017)
 2  (12) .    2  (12) ..    11  (20) lost+found    12  (980) filen/ame
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法来删除filen/ame文件:

debugfs 1.43.4 (31-Jan-2017)
 2  (12) .    2  (12) ..    11  (20) lost+found    12  (980) filen/ame
Run Code Online (Sandbox Code Playgroud)

但这不起作用,只会产生:

debugfs …
Run Code Online (Sandbox Code Playgroud)

slash ext4 debugfs

26
推荐指数
1
解决办法
2244
查看次数

为什么在 Vanilla 内核中不包含 grsecurity 补丁?

grsecurity默认情况下,内核中不包含补丁(或其带来的安全功能)的原因是什么?在考虑安全性的好处时,香草内核似乎非常不安全。

如果这是一种权衡(某些应用程序您想避免安全措施),似乎grsecurity可以在 vanilla 内核中启用它。

主流 vanilla 内核中有这么多东西,我很难理解为什么社区不想包含grsecurity.

linux kernel grsecurity

22
推荐指数
2
解决办法
7596
查看次数

有没有最快的方法关闭系统?

或者是shutdown -h now它可以得到的最快的?

我寻找一些 syscall 或类似的东西,它们将允许跳过在关闭之前完成的大量工作(特别是关心正在运行的过程)。

充其量我想要一个与内核相关的解决方案,对init-middleware(如systemdupstart)一无所知。

与即直接杀死所有服务(如cups/apache/pulseaudio 等)相关的风险......我不在乎......

备注:解决方案应该是软件副。在设备上按下按钮不是我想要的。

shutdown performance

21
推荐指数
3
解决办法
8827
查看次数

在哪里可以找到有关 xkb_symbols 的信息(即 dead_acute、KP_1、Delete、Down)

我在哪里可以找到xkb_symbols的列表及其含义?

为了澄清,让我举一些xkb_symbols 的例子:

  • dead_acute
  • dollar
  • Down
  • Delete
  • adiaeresis
  • Adiaeresis
  • dead_circumflex
  • KP_0 KP_可能是“数字键盘”符号的前缀)
  • KP_divide
  • .... (还有很多)

阅读这个Arch Wiki,我明白xkb_symbols实际上是数字。xkb_symbols 的那些数字被分配给某个地方的一些字符串表示(这主要是问题:在哪里?)。例如,您可以查看以下/usr/include/X11/keysymdef.h#defines一个:

#define XK_KP_0 0xffb0 

虽然至少有我能找到XK_KP_0,这似乎重新取样KP_0(即简单又前缀),我仍然没有关于类似(即所有其他符号信息dead_circumflexdollar等...)。
例如,我需要这样一个定义的字符串表示列表来创建、调整或修改键盘布局。当然,我可以从查看预先存在的键盘布局文件中获得一些见解,但需要参考它。因此,我会在这里请人指点我。

更多背景

在用于定义、调整和修改位于此处的键盘布局的文件中,/usr/share/X11/xkb/symbols/例如de(德语)键盘布局/usr/share/X11/xkb/symbols/dexkb_symbols被大量使用。

原则上这是这样一个文件的样子(取de文件的一部分):

// 基于来自“xkb/symbols/de”文件的键盘映射

默认
xkb_symbols“基本”{

    包括“拉丁语(type4)”

    名称[Group1]="德语";

    键 { [ 2, 引用bl, twosuperior, oneeightth ] };
    key { [ …

xkb keyboard-layout

19
推荐指数
1
解决办法
7746
查看次数