Linux

當我們使用 nodev 選項掛載文件系統時,預設行為是什麼?

  • February 21, 2019

我在“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]#

首先…

我發現我們無法將特殊字元設備與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.

引用自:https://unix.stackexchange.com/questions/502057