Articles of Linux操作系统

GDB没有这样的文件或目录

我正在关注OpenSecurityTraining的这些经验教训。 我已经到了实验室,在那里我要用CMU炸弹训练自己。 他们提供了一个x86_64编译的CMU炸弹,你可以在这里find: CMU炸弹x86-64最初来自CMU实验室计算机系统:程序员的视angular(CS:APP)第一版 32位炸弹。 我有一个虚拟化的64位基本操作系统发行版,我可以毫不费力的使用GDB反汇编CMU Bomb。 现在,我有一个64位的Ubuntu 14.04 LTS(未虚拟化),当我试图重现为什么我做了我的基本操作系统,我得到了着名的错误。 我运行这些命令: gdb ./bomb-x64 (gdb) b main Breakpoint 1 at 0x400dbd: file bomb.c, line 37. — why bomb.c ? (gdb) r … bomb.c: no such file or directory 编辑:我可以在CMU炸弹的其他function上创build断点,并按预期工作。 例如: (gdb) b phase_1 Breakpoint 3 at 0x400f00 (gdb) r Breakpoint 1, 0x0000000000400f00 in phase_1 () (gdb) […]

/ proc / sys / kernel / sched_child_runs_first是否工作?

我知道在/proc/sys/kernel/sched_child_runs_first中设置一个非零值会强制subprocess在父进程之前运行。 不过,我认为这似乎没有奏效。 这是我的代码: #include <stdio.h> #include <sys/types.h> int main(int argc, char **argv) { pid_t child_pid; switch(child_pid = fork()) { case 0: printf("In Child\n"); exit(0); case -1: printf("Could not fork()\n"); default: printf("In parent\n"); } return 0; } 我得到的输出总是: In parent In Child 我在这里期待什么错吗? PS:我只是试着看看它是否有效,所以请不要提出其他的同步机制,或者为什么这是一个坏主意,等等。

docker:SSH直接访问容器

到目前为止,我们使用几个Linux用户: system_foo @服务器 system_bar @服务器 … 我们想把系统用户放到docker容器中。 linux用户system_foo – >容器system_foo 服务器内部的更改没有问题,但远程系统使用这些用户向我们发送数据。 我们需要让ssh system_foo@server工作。 远程系统不能改变。 如果每个Linux操作系统只有一个系统(通过端口22到容器),那么我会非常容易。 但有几个。 我们如何才能从旧的scheme更改为docker集装箱,并保持服务的ssh system_foo@server可用,而无需在远程站点的变化? 如果你不明白这个问题,请留下评论。 谢谢。

用acksearch多个模式(单词)?

我想在包含recursive directories和files的directory中search多个patterns 。 我知道grep命令如下 grep -e '(pattern1)|(pattern2)' 要么 grep -r -E 'string1|string2|string3' /var/www/http 对于使用ack或ag的命令是什么?

如何使用克隆系统调用分配新的TLS区域

问题的短版本:如果我想为我正在创build的线程分配一个新的TLS区域,则需要在x86_64 Linux系统上传递给clone系统调用的参数。 长版本 : 我正在研究一个研究项目,对于我正在做的一些尝试,我想用clone系统调用来创build线程,而不是使用pthread_create 。 不过,我也希望能够使用线程本地存储。 我现在不打算创build多个线程,所以我可以为我使用克隆系统调用创build的每个线程创build一个新的TLS区域。 我正在查看clone的手册页,它包含有关TLS参数标志的以下信息: CLONE_SETTLS (since Linux 2.5.32) The newtls argument is the new TLS (Thread Local Storage) descriptor. (See set_thread_area(2).) 于是我看了set_thread_area的手册页,注意到以下看起来很有希望的内容: When set_thread_area() is passed an entry_number of -1, it uses a free TLS entry. If set_thread_area() finds a free TLS entry, the value of u_info->entry_number is set upon […]

如何用QEMU和KGDBdebuggingLinux内核?

我已经能够使用以下方式启动一个基于powerpc的系统(MPC8544DS具体)来调用qemu(v1.7.0) qemu-system-ppc -M mpc8544ds -m 512 -kernel zImage -s -nographic -initrd busyboxfs.img -append "root=/dev/ram rdinit=/bin/sh kgdboc=ttyS0,115200 kgdbwait" 其中zImage是一个自定义交叉编译的Linux Kernel(v2.6.32),它已经启用并编译了KGDB(用于启动代码debugging),而busyboxfs.img是基于busybox的rootfs。 因为我使用-s标志到Qemu,所以我可以使用cross gdb插入到内核中,如下所示: (gdb) target remote localhost:1234 Remote debugging using localhost:1234 mem_serial_in (p=<value optimized out>, offset=5) at drivers/serial/8250.c:405 405 } 但是,如果我删除-s标志并试图通过/dev/ttyS0破解内核,它会给我一个权限被拒绝的错误: (gdb) set remotebaud 115200 (gdb) target remote /dev/ttyS0 permission denied 是因为它被Qemu所控制吗? 另外,在互联网上的例子中,kgdboc已经被设置为ttyAMA0 ,我已经理解了代表AMBA总线,这是基于ARM的系统特有的。 我们有类似的PowerPC吗? 我在这里做错了什么?

使用curl 7.33.0的–http2.0选项提供不受支持的协议

我使用的是centos 6.2,我需要在服务器请求中使用curl —http2.0,但是在看了http://curl.haxx.se/docs/manpage.html给出的7.19.6后我说–http2.0选项只支持curl 7.33.0,所以为了克服这个问题,我已经安装curl 7.33.0按照http://www.linuxfromscratch.org/blfs/view/svn /basicnet/curl.html安装curl后,我试图使用,但它仍然给我的错误作为curl(1):不支持的协议 ,我检查了我的curl版本使用: curl –version这是给我 : curl 7.33.0 (x86_64-unknown-linux-gnu) libcurl/7.33.0 OpenSSL/1.0.0 zlib/1.2.3 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp Features: AsynchDNS IPv6 Largefile NTLM NTLM_WB SSL libz 我需要使用这个–http2.0,但没有得到任何事情,我怎么能做到这一点? 由于curl7.19被安装,并且我重新安装更高版本的curl,这是否有任何问题?

单声道替代名为Mutex

在Windows / .NET上,可以使用命名的Mutex来同步多个进程。 不幸的是,Mono在Linux上不太支持。 他们的发行说明说,Linux不支持这个Windowsfunction,它将是不可靠的模拟它。 无论如何,似乎最好避免build议的入侵。 那么有什么build议的select? 我需要使我的程序安全地同时运行,只有一小段需要与其他实例同步。 该应用程序最终需要部署在Ubuntu Linux与Mono 2.10,但为了testing,将不胜感激,如果它也适用于.NET 4的Windows 7。

如何使用具有Boost Asio套接字的特定networking接口/ Ip?

我有一个Debian / Linux服务器有几个IP地址,全部分配到同一个物理网卡。 /etc/network/interfacesconfiguration文件看起来像这样(xx代表数字) auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 176.xx.xx.144 netmask 255.255.255.0 network 176.xx.xx.0 broadcast 176.xx.xx.255 gateway 176.xx.xx.254 auto eth0:0 allow-hotplug eth0:0 iface eth0:0 inet static address 46.xx.xx.57 netmask 255.255.255.255 broadcast 46.xx.xx.57 auto eth0:1 allow-hotplug eth0:1 iface eth0:1 inet static address 94.xx.xx.166 netmask 255.255.255.255 broadcast 94.xx.xx.166 //IPv6 […]

检查RPM依赖关系

在Ubuntu上使用.deb软件包安装编程时,可以使用Ubuntu软件包search来检查软件包的依赖关系。 例如,我可以从这里看到Wireshark的依赖关系。 正如你所看到的,由红色子弹标记的依赖关系。 如果你知道所有的程序包依赖于你,你可以下载它们并安装dpkg 。 有没有其他的RPM软件包的网站? 特别针对RHEL? 我知道我可以通过其他方法获得这些软件包的名字,比如使用rpm -i安装RPM软件包,但是这不是用户友好的,需要访问运行linux。