AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 502057
Accepted
root
root
Asked: 2019-02-22 03:40:05 +0800 CST2019-02-22 03:40:05 +0800 CST 2019-02-22 03:40:05 +0800 CST

当我们使用 `nodev` 选项挂载文件系统时,默认行为是什么?

  • 772

我在“RH413 Red Hat Server Hardening”课程中读到了这一点,我们挂载了nodev不允许从其中挂载特殊文件/设备的文件系统。但是,它没有显示示例。

dd但是,我在我的 RHEL 机器上做了以下事情,我发现当文件系统使用 nodev 选项挂载时,我们无法将特殊字符设备与命令创建的任何文件相关联。我后来删除了nodev选项,并且能够将字符设备与新创建的文件与dd命令相关联。

这是我们使用nodev选项安装 FS 时预期的行为,还是我缺少其他东西?

这里去命令:

[root@server Special]# mount | grep /Special
/dev/mapper/home on /Special type ext4 (rw,nodev,relatime,seclabel,data=ordered)
[root@server Special]#

[root@server Special]# ls -l
total 16
drwx------. 2 root root 16384 Feb 20 01:40 lost+found
crw-r--r--. 1 root root  1, 5 Feb 21 04:53 spFile
[root@server Special]#

[root@server Special]# dd if=spFile of=newDev bs=1K count=20000
dd: failed to open ‘spFile’: Permission denied
[root@server Special]#

nodev通过添加删除exec。

[root@server ~]# mount | grep /Special
/dev/mapper/home on /Special type ext4 (rw,relatime,seclabel,data=ordered)
[root@server ~]# 

[root@server Special]# dd if=spFile of=newDev bs=1K count=20000
20000+0 records in
20000+0 records out
20480000 bytes (20 MB) copied, 0.527708 s, 38.8 MB/s
[root@server Special]#

[root@server Special]# ls -l
total 20016
drwx------. 2 root root    16384 Feb 20 01:40 lost+found
-rw-r--r--. 1 root root 20480000 Feb 21 05:10 newDev
crw-r--r--. 1 root root     1, 5 Feb 21 04:53 spFile
[root@server Special]#

[root@server Special]# mkdir /spDev
[root@server Special]# mount newDev /spDev/

[root@server Special]# df -h /spDev/
Filesystem      Size  Used Avail Use% Mounted on
/dev/loop0       18M  326K   17M   2% /spDev
[root@server Special]#
linux mount
  • 2 2 个回答
  • 624 Views

2 个回答

  • Voted
  1. Best Answer
    Philip Couling
    2019-02-22T04:49:37+08:002019-02-22T04:49:37+08:00

    首先...

    我发现我们无法将特殊字符设备与dd命令创建的任何文件相关联

    您展示的实验不会使用 .创建文件dd,它会尝试使用 . 写入特殊字符设备dd。


    1) 什么是设备文件?

    设备文件可以被认为是内核中设备的链接。虽然它们存储在磁盘上,但它们描述的实际设备与存储的文件系统无关。在这方面,将它们视为类似于指向内核内部某些东西的符号链接。

    文件名无关紧要;就像符号链接可以任意命名并放置在任何位置一样,设备文件可以任意命名并存储在仍然指向同一设备的任何位置。

    2) 为什么它们是安全问题?

    出于显而易见的原因,不仅仅是任何人都可以直接连接到设备。例如,您不希望普通用户只读取您的硬盘驱动器,而忽略文件系统及其权限。

    如果您将驱动器插入计算机并仅安装它,则该磁盘上存在具有不安全权限的设备文件的风险。这些可能指向一些应该被保护的东西。因此,通过插入磁盘,您可能会错误地让某人访问设备。

    3)nodev做什么?

    这堵住了安全漏洞。它告诉操作系统禁止任何程序通过存储在该文件系统上的设备文件访问设备。

    在您的实验中,您使用 DD 尝试使用设备文件(链接到该设备)写入设备。因为在第一种情况下,您安装nodev的操作系统被禁止dd(以及所有其他程序)使用该设备文件。


    编辑:关于设备文件的更多信息

    上面我提到设备文件类似于符号链接。对于设备文件,主要和次要编号用于指定它们链接到的内容。如果我们举一个由操作系统自动创建的示例:

    $ ls -l /dev/zero /dev/random /dev/sda /dev/sda1
    crw-rw-rw- 1 root root 1, 8 Feb 16 23:24 /dev/random
    brw-rw---- 1 root disk 8, 0 Feb 16 23:24 /dev/sda
    brw-rw---- 1 root disk 8, 1 Feb 16 23:24 /dev/sda1
    crw-rw-rw- 1 root root 1, 5 Feb 16 23:24 /dev/zero
    

    所以在我的系统上,如果我打电话,mknod foo c 1 8我应该得到一个与/dev/random. 需要明确的是,它是同一个设备,只是指向它的不同文件。

    根据您问题中的打印输出,它具有 major number 1minor number 5。在我的系统上,这是/dev/zero.

    • 2
  2. ilkkachu
    2019-02-22T04:37:17+08:002019-02-22T04:37:17+08:00

    nodev只是意味着该文件系统上的设备节点不起作用。它们可以从以前存在,你可以创建它们,但你不能打开它们。

    # mount -ttmpfs -onodev tmpfs /tmp/test
    # cd /tmp/test/
    # cp -a /dev/sda .
    # ls -l
    total 0
    brw-rw---- 1 root disk 8, 0 Dec 16 18:24 sda
    # head -c512 ./sda | od -c
    head: cannot open './sda' for reading: Permission denied
    

    这与您尝试打开时相同spFile。当然,如果你删除它确实有效nodev。(exec与此无关,它控制在文件系统之外执行程序,这是另一回事。)

    # mount -oremount,dev .
    # head -c512 ./sda |od -c
    0000000 372 270  \0 ...
    

    至于“将特殊字符设备与 dd 创建的文件关联”是什么意思,我不知道你的意思。

    • 1

相关问题

  • 有没有办法让 ls 只显示某些目录的隐藏文件?

  • 使用键盘快捷键启动/停止 systemd 服务 [关闭]

  • 需要一些系统调用

  • astyle 不会更改源文件格式

  • 通过标签将根文件系统传递给linux内核

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve