小编Cir*_*郝海东的帖子

如何允许非超级用户挂载任何文件系统?

是否可以允许某些特定用户(例如组成员)在 Linux 上没有超级用户权限的情况下挂载任何文件系统?

另一个问题可能是“用户可以通过哪些方式通过挂载文件系统来损害系统?”

linux mount not-root-user

60
推荐指数
4
解决办法
17万
查看次数

如何在目录中递归查找所有二进制可执行文件?

如果我使用这样的find命令:

find /mydir/mysubdir -executable -type f
Run Code Online (Sandbox Code Playgroud)

列出所有可执行文件(不包括目录),包括可执行脚本文件(如 script.sh 等)。我想要做的是只列出二进制可执行文件。

find binary files

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

如何在没有root权限的情况下挂载图像文件?

我可以在没有 root 权限的情况下挂载文件系统映像吗?通常我会这样做:

mount -o loop DISK_IMAGE FOLDER
Run Code Online (Sandbox Code Playgroud)

不使用 sudo 或设置 suid on mount,有没有合适的方法来做到这一点?

我知道我可以使用fusermount一些 ISO 映像,但这非常有限,即使对于 ISO 映像,我的某些映像也无法安装,但mount始终有效。

mount

54
推荐指数
4
解决办法
9万
查看次数

如何使用 QEMU 从主机到访客 SSH?

如何使用 qemu 设置从主机到来宾的 ssh?我可以在没有任何特殊参数的情况下启动 VM 时使用端口重定向,如下所示:

/usr/bin/qemu-system-x86_64 -hda ubuntu1204 -m 512 -redir tcp:7777::8001
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用以下内容启动时:

/usr/bin/qemu-system-x86_64 \
-m 1024 \
-name vserialtest \
-hda ubuntu1204 \
-chardev socket,host=localhost,port=7777,server,nowait,id=port1-char \
-device virtio-serial \
-device virtserialport,id=port1,chardev=port1-char,name=org.fedoraproject.port.0 \
-net user,hostfwd=tcp:7777::8001
Run Code Online (Sandbox Code Playgroud)

我收到以下错误并且 VM 无法启动:

qemu-system-x86_64: -net user,hostfwd=tcp:7777::8001: invalid host
forwarding rule 'tcp:7777::8001'
qemu-system-x86_64: -net user,hostfwd=tcp:7777::8001: Device 'user'
could not be initialized
Run Code Online (Sandbox Code Playgroud)

请注意,我可以在没有-net参数的情况下启动 VM,没有任何问题,但是,我想设置从主机到来宾的 ssh。从来宾到主机的 ssh 按预期工作正常。

编辑

我试过使用

-net user,hostfwd=tcp::7777-:8001
Run Code Online (Sandbox Code Playgroud)

-net user,hostfwd=tcp::7777:8001
Run Code Online (Sandbox Code Playgroud)

但错误仍然存​​在并且虚拟机无法启动。

networking ssh qemu

51
推荐指数
3
解决办法
13万
查看次数

如何测试 Linux 二进制文件是否被编译为位置无关代码?

我最近了解到(至少在 Fedora 和 Red Hat Enterprise Linux 上),编译为位置独立可执行文件 (PIE) 的可执行程序会获得更强的地址空间随机化 (ASLR) 保护。

那么:如何在 Linux 上测试特定的可执行文件是否被编译为位置无关的可执行文件?

linux security fedora executable

49
推荐指数
5
解决办法
5万
查看次数

如何找到一个img文件的类型并挂载它?

我必须挂载一个 .img 文件,但我不知道它是什么类型的 .img。我怎样才能弄清楚它是什么类型的 .img 文件?

# mount -t auto -o ro,loop gmapsupp.img /mnt/iso/
mount: you must specify the filesystem type
# file -k gmapsupp.img 
gmapsupp.img: x86 boot sector, code offset 0x0
#
Run Code Online (Sandbox Code Playgroud)

filesystems partition mount

46
推荐指数
4
解决办法
13万
查看次数

为什么 Linux 内核策略永远不会破坏用户空间?

我开始在 Linux 内核邮件列表上的礼仪上下文中考虑这个问题。作为世界上最著名、可以说是最成功和最重要的自由软件项目,Linux 内核受到了很多媒体的关注。项目创始人兼领导者 Linus Torvalds 在这里显然不需要介绍。

Linus 偶尔会因为他在 LKML 上的火爆而引起争议。他自己承认,这些火焰经常与破坏用户空间有关。这让我想到了我的问题。

我可以从历史的角度来解释为什么破坏用户空间是一件坏事吗?据我了解,破坏用户空间需要在应用程序级别进行修复,但如果它改进了内核代码,这是一件坏事吗?

据我了解,Linus 声明的政策是不破坏用户空间胜过其他一切,包括代码质量。为什么这如此重要,这种政策的利弊是什么?

(这种一贯适用的政策显然有一些缺点,因为 Linus 偶尔会与他在 LKML 上的高级副手在这个话题上发生“分歧”。据我所知,他在这件事上总是有自己的方式。)

history linux-kernel

44
推荐指数
3
解决办法
1万
查看次数

应在“/”中的何处安装额外的永久磁盘?

根据维基百科

http://en.wikipedia.org/wiki/Unix_directory_structure

http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard

不应该/mnt/根据第一个链接安装额外的磁盘,但根据第二个链接不应该接缝。

两人都说认为他们不应该在/media

那么应该在哪里安装额外的永久磁盘呢?

linux freebsd mount directory-structure

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

为什么 set -e 在带有括号 () 后跟 OR 列表 || 的子shell 中不起作用?

我最近遇到了一些这样的脚本:

( set -e ; do-stuff; do-more-stuff; ) || echo failed
Run Code Online (Sandbox Code Playgroud)

这对我来说看起来不错,但它不起作用!将set -e不适用,当你添加的||。没有它,它工作正常:

$ ( set -e; false; echo passed; ); echo $?
1
Run Code Online (Sandbox Code Playgroud)

但是,如果我添加||set -e则忽略:

$ ( set -e; false; echo passed; ) || echo failed
passed
Run Code Online (Sandbox Code Playgroud)

使用真正的、单独的 shell 可以按预期工作:

$ sh -c 'set -e; false; echo passed;' || echo failed
failed
Run Code Online (Sandbox Code Playgroud)

我已经在多个不同的 shell(bash、dash、ksh93)中尝试过这个,并且都以相同的方式运行,所以这不是一个错误。有人可以解释一下吗?

shell shell-script

42
推荐指数
2
解决办法
9427
查看次数

如何在 Linux 中跟踪新创建的进程?

我知道通过ps我可以看到系统中运行的当前进程的列表或树。但我想要实现的是“跟随”使用计算机时创建的新进程。

打个比方,当您使用tail -f跟踪附加到文件或任何输入的新内容时,我想保留当前正在创建的进程的跟踪列表。

这甚至可能吗?

linux process

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