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_security
2.7.7
在最近的“为什么 '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。
我觉得我忽略了显而易见的事情,但我不知道如何让我的 Arch Linux 服务器使用systemd
,syslog
从远程系统接收和记录消息。
我有一个 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 的日志中,而是出现在平面文件中。因此,没有确切的解决方案,而是一种解决方法。我宁愿将系统日志消息放在日志中,而不是平面文件中。
我在我的笔记本电脑上运行 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
,我看不到任何 …
我有一个长时间运行的程序(通过 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_code
0x80的值,而是获得 0x1,这意味着“地址未映射到对象”。
我试图用原始(无宏)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。
signals ×2
systemd ×2
apache-httpd ×1
executable ×1
groff ×1
http ×1
init ×1
kill ×1
linux ×1
linux-kernel ×1
proc ×1
process ×1
syslog ×1