小编Bru*_*ger的帖子

更改 Apache httpd "Server:" HTTP 标头

Apachehttpd与响应数据一起发回的 HTTP 标头之一是“服务器”。例如,我的 Web 服务器机器是相对最新的 Arch Linux。它发送回与以下内容非常相似的标头:

HTTP/1.1 404 Not Found
Date: Thu, 10 Apr 2014 17:19:27 GMT
Server: Apache/2.4.9 (Unix)
Content-Length: 1149
Connection: close
Content-Type: text/html
Run Code Online (Sandbox Code Playgroud)

ServerSignature off/etc/httpd/conf/httpd.conf,但“服务器:”字段仍然出现。我已经尝试过mod_headers。我启用了它,并且尝试了一些操作:

<IfModule headers_module>
Header set ProcessingTime "%D"
Header set Server BigJohn
</IfModule>
Run Code Online (Sandbox Code Playgroud)

停止并启动httpd上述配置后,HTTP 标头包含类似 的内容ProcessingTime: 1523,但“Server:”标头行保持不变。所以我知道“mod_headers”已安装并启用,并且可以正常工作,但不是我想要的。

我看到一个叫做“mod_security”的东西声称可以做到这一点,但我不想要 mod_security 携带的所有其他包袱。

更新:

一旦你mod_security安装,你只需要几个指令:

<IfModule security2_module>
SecRuleEngine on
ServerTokens Full
SecServerSignature "Microsoft-IIS/6.0"
</IfModule>
Run Code Online (Sandbox Code Playgroud)

这是mod_security2.7.7

http apache-httpd

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

systemd 如何在 kill -9 中存活下来?

在最近的“为什么 'kill -9 0' 结束我的控制台会话”和“如何获得内核恐慌”问题之间,我在我的马鞍下有一个毛刺,并尝试kill -9 1了一个最新的 Arch linux 笔记本电脑。我是作为用户 ID“root”来做的。

我完全预料到会发生某种崩溃、恐慌或关机,但什么也没发生。我又做了kill -9 1一次,没有效果。

Arch linux 机器systemd这些天都systemd在运行,所以:如何在 kill -9中幸存下来?我希望在 Linux 3.7 内核中有特殊情况代码,但也许存在一些我没有想到的其他原因。

用 PID 1 运行的其他东西呢?init我相信Slackware 仍在使用,但我害怕在我的生产 Slackware 服务器上尝试它。我的无线路由器上的 DD-WRT 运行某种形式的 /sbin/init。

process kill signals systemd init

33
推荐指数
1
解决办法
9090
查看次数

使用 systemd Arch Linux 接收系统日志消息

我觉得我忽略了显而易见的事情,但我不知道如何让我的 Arch Linux 服务器使用systemdsyslog从远程系统接收和记录消息。

我有一个 Cisco 678 DSL 调制解调器和一个 DD-WRT WAP,两者都可以配置为将 syslog 格式的消息发送到其他机器。我希望那台机器成为我的 Arch Linux 服务器。

我四处搜索,我发现的只是“systemd 替换了 syslog”,或者我不再需要运行syslog或与我的问题同样无关的东西。

更新

我在Arch 论坛上问过,但没有得到相关的答案。我安装了 syslog-ng 只是为了侦听 UDP 端口 514。syslog-ng 从我的 Cisco 678 和我有的 DD-WRT WAP 写入消息。不幸的是,这些消息并没有出现在 systemd 的日志中,而是出现在平面文件中。因此,没有确切的解决方案,而是一种解决方法。我宁愿将系统日志消息放在日志中,而不是平面文件中。

syslog systemd systemd-journald

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

/proc/self/maps - 第三个映射文件?

我在我的笔记本电脑上运行 Arch linux,它现在是内核 3.12.9。内核在动态链接的可执行文件中映射的方式发生了一些变化,我无法弄清楚。这是示例:

% /usr/bin/cat /proc/self/maps
...
00400000-0040b000 r-xp 00000000 08:02 1186756             /usr/bin/cat
0060a000-0060b000 r--p 0000a000 08:02 1186756             /usr/bin/cat
0060b000-0060c000 rw-p 0000b000 08:02 1186756             /usr/bin/cat
00d6c000-00d8d000 rw-p 00000000 00:00 0                   [heap]
7f29b3485000-7f29b3623000 r-xp 00000000 08:02 1182988     /usr/lib/libc-2.19.so
...
Run Code Online (Sandbox Code Playgroud)

我的问题是:来自 的第三个映射是什么/usr/bin/cat

基于readelf -l /usr/bin/cat,有一个 0x1f8 字节的可加载段应该映射到 0x400000。在 0x60ae10 处有一个 0xae10 字节的可加载段。这两个文件对应于 00400000-0040b000 映射和 0060a000-0060b000 映射。但是第三个映射,声称文件偏移量为 0xb000 字节,似乎不对应任何 Elf64_Phdr。实际上,elf 头只有 2 个 PT_LOAD 段。

我通读fs/binfm_elf.c了内核 3.13.2 源代码,除了 PT_LOAD 段之外,我没有看到内核映射到任何其他内容。如果我运行strace -o trace.out /usr/bin/cat /proc/self/maps,我看不到任何 …

linux executable proc

7
推荐指数
1
解决办法
6389
查看次数

sigaction(7):siginfo_t 的 si_code 成员的语义

我有一个长时间运行的程序(通过 daemon(3) 调用变成一个守护进程),它每隔一段时间就会在 Signal 11(分段违规)上退出。我说不清为什么。因此,我编写了一个 SIGSEGV 处理程序,使用sigaction()系统调用进行设置。我设置了处理程序函数,使它具有这个原型:void (*sa_sigaction)(int, siginfo_t *, void *)这意味着它获得一个指向siginfo_t结构的指针作为形式参数。

在神秘的 SIGSEGV 之际,si_code元素的siginfo_t值为 0x80,这意味着,根据 sigaction 手册页,“内核”发送了信号。这是在 Red Hat RHEL 系统上:Linux blahblah 2.6.18-308.20.1.el5 #1 SMP Tue Nov 6 04:38:29 EST 2012 x86_64 x86_64 x86_64 GNU/Linux

为什么内核会发送 SIGSEGV?这是来自著名的 OOM-Killer,还是存在获得 SIGSEGV 的其他原因?作为这个系统的普通用户,我看不到/var/log/message,而且系统管理员有点冷漠,可能是因为他们来自 Windows 背景。

故意生成的 SIGSEGV(取消引用 NULL 指针)不会获得si_code0x80的值,而是获得 0x1,这意味着“地址未映射到对象”。

signals segmentation-fault linux-kernel

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

Gnu nroff - 在行首输出带点的行

我试图用原始(无宏)GNU 编写一个自我复制程序(“quine”)nroff。诚然,这是毫无意义和古怪的,但以前似乎没有这样做过。我没有这样做。

我很确定,成功编写无宏nroff输入语言 quine 的任何人都需要定义字符串、宏或“框”。为此,您需要编写如下请求:

.as s "just assigned this to string s
.de xxx
.nop "\*s"
..
.xxx
Run Code Online (Sandbox Code Playgroud)

也就是说,nroff输入中的每个请求都有一个 '.' 在行的开头。

由于 quines 只是输出他们的源代码(没有作弊),输出可能必须有 '.' 作为几个输出行的第一个字符。

你到底怎么让 GNUnroff输出一个 '.' 行首的字符?据我所知,没有多少间接或转义可以做到。是否有一些隐藏的请求输出“。” 在一行的开头?

我正在使用最近同步的 Arch Linux,它安装了 Groff 1.22.3。

text-processing groff

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