91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

UNIX一切皆文件的思想正確嗎

發布時間:2020-06-20 09:52:15 來源:網絡 閱讀:449 作者:dog250 欄目:系統運維

一切皆XX,這一看就是本質論以及整體論信徒的吶喊!

引.關于樹型模型

樹型模型和一切皆文件沒有直接的關系,只是它們的經歷很類似。
近期看了一本老婆買的書,《視覺繁美》。在古代,人們對樹情有獨鐘,最終包括組織架構,包括分類都變成了樹,讀到了后面的章節,我才發現,原來樹型模型并不是一切的本質,它是在公元前10000左右的美索不達米亞的新月地帶人為產生的,即農業革命導致了人們產生了樹型模型的觀念。
樹型模型,很有秩序感,任意兩節點之間都是單向連通,任何節點都可以追溯和被追溯,一切顯得很完美。它甚至可以囊括世間萬物。以分類學為例子,古希臘哲學家波菲利的樹是一個典型,他事先定義了一切的屬性,然后用“有該屬性”還是“沒有該屬性”對事物進行分類,最終所有的東西都可以在這棵樹上找到一個葉子作為自己的位置。
當一切在樹型模型下都運行得很美好的時候(包括經濟,政治,公司經營等),人們發現了原來更本質的思想是互聯的思想,于是當鏈接成了一切的時候,樹型模型就不再適用了。今天,我們處在一個復雜網絡的時代,復雜網絡無所不在,包括交際圈,城市,股票,氣象,以及我們的大腦本身。然而并不能因此否定提出“一切都是樹”的古人,正是因為他們的模型簡單,人類文明才會誕生并發展,今天我們迷茫于混沌,最終我們會發現,混沌是有序的混沌。
我想說的是,雖然一些觀點最終被證明是錯的,但是一開始的時候必須那么說,因為簡單是引起前進的動力,當遇到阻礙物或者瓶頸的時候,事情會橫向發展,即朝著復雜和混亂方面發展,但是復雜和混亂不是目標,而是試圖找一個繼續向上的洞,或許要做些調整,然后越過障礙后繼續簡單向上,正如植物生長一樣,生機勃勃。一切皆文件是UNIX的信條之一,如今它也遇到了一些挑戰。

關于一切皆文件的反例

procfs,進程文件系統。是UNIX系統中展示進程狀態以及相關數據的一個內存文件系統。它有著古老的歷史,可能在最開始就成了“一切皆文件”的事實上的布道者,你看,就連進程狀態也都可以表現成文件。
一切皆文件,其最原始的含義是這樣的,即文件操作擁有統一且簡單的接口,在計算機的公元前10000年那個年代,人們把所有的操作都可以歸結為讀,寫,控制,因此read,write,ioctl就成了最古老的文件操作集,如果試圖將所有的操作都歸到文件操作,那就要建立一系列的映射,這些映射抽象出了機制和策略,這個映射是一對多的,一個統一的操作原語表示機制,而多個不同的操作實現表現為策略,最終,VFS誕生了!
有了VFS,人們就方便了,將一切都實現為一個文件系統。直到今天Linux還在做這樣的事,并且好像不像UNIX那樣會停下來,當然,這是后話。當這種事情做的足夠多的時候,當安全需求越來越多的時候,正如IP網絡后來面對的問題一樣,簡單的基于屬主的ACL便不足以映射一切的安全控制規則。問題的關鍵在于,VFS導致出現的文件系統類型以及數量是不受控制的,而UNIX的文件ACL卻是確定的,因此就需要作平行于VFS的另一個映射,也就是另一個機制到策略的映射,如果可以,我可以管它叫VACL。
然而,沒有出現VACL,因為ACL的粒度太粗,其語義僅僅針對文件屬主,它只是說“能還是不能”,并無法表示“能的話,必須怎么做”,可是后來,出現了類似波菲利樹型分類的一個東西,叫做“能力”,就是說,將能想到的所有的操作都用一個二進制位表示,如果一個實體有這個操作的權限,則其為1,否則為0,這樣就產生了UNIX的能力模型,即POSIX Cap,一切都顯得很完美。但是,不同于后來的大眾分類索引法取代樹型分類索引法(實際上,直到今天還有人鼓吹樹型模型!),POSIX Cap并不是很好用。procfs同樣也不適合用Cap來管理安全性!
procfs中應有盡有。該文件系統的內容是自動生成的,每一個進程在里面有一個目錄,目錄下存在該進程的屬性,試問,誰來定義針對這些文件的操作的Cap,如果是系統,那么系統在生成一個進程的時候,如何知道怎么定義;如果是用戶,那么無疑在fork/exec和procfs之間增加了一個HOOK,這太復雜了。procfs的本來的目的很簡單,有兩類:
1.導出系統信息
2.導出進程信息

不管怎樣都是為了增強其調試功能。不管怎樣,都不能試圖使用procfs來做一些違反UNIX原則的事。第一個問題在于procfs導出的信息包括進程的地址空間,隔離進程地址空間是UNIX乃至所有操作系統的根本原則,只要將其展示在procfs,就可能會被read,write,mmap...很多的UNIX,包括BSD,都因為這個出過事情,因此后來的版本就干脆去掉了procfs;第二個問題在于內核空間該不該處理信息格式的問題,由于VFS是HOOK在內核態的,因此各種實際文件系統的操作也在內核態實現,于是就會有大量的格式化的操作在內核進行,然而不應該再內核做這些,如果直接導出二進制數據,卻又違反了procfs的本意。為什么不修補漏洞和問題而干脆讓procfs下課,這正是體現了UNIX設計上的純粹主義,與之相反是Linux的折中主義。
圍繞著procfs的去留,有很多的辯論,辯論圍繞兩方面:
1.procfs應該下課
完全使用sysctl接口來代替procfs。既然作為進程屬性一部分的地址空間無法導出,那么何必保留另外90%+呢?
2.procfs應該保留
考慮到sysctl并不是在每一個UNIX系統都是標準的工具集的一部分導致的互操作的問題,建議保留統一接口的procfs
不管怎樣,都是圍繞著UNIX哲學問題的爭論。Linux卻完全拋開這些,實現了自己的procfs。

Linux的折中

Linux沒有拋棄procfs,而是修補了它的關鍵問題,至于另外一些不關鍵的問題,Linux社區并不在意。在procfs的VFS操作集的定義上,Linux采用了以下的定義:
#define mem_write NULL
#ifndef mem_write
//一個嚇人的注釋!
/* This is a security hazard */
static ssize_t mem_write(struct file * file, const char * buf,
...
#endif
static struct file_operations proc_mem_operations = {
    .llseek        = mem_lseek,
//read操作有很多限制,不允許訪問別的進程的地址空間
    .read        = mem_read,
//NULL定義write操作
    .write        = mem_write,
    .open        = mem_open,
//沒有mmap的實現
};
這就避免了安全問題!
Linux正在一切皆文件的路上越走越遠,并且還將繼續走下去,如今你能看到很多非常規的FS,比如procfs,sysfs,devfs,debugfs,cpuset,cgroup,sockfs等等...Linux小心翼翼地對包括procfs在內的一切非常規文件系統進行管理,哪些可以read,哪些可以write,哪些要嚴禁怎樣等等,都要經過周密考慮,想來也只有Linux這種開放的開發平法平臺才敢這么做吧,有了任何漏洞可以馬上被找出來然后最快的速度給與修正!


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

华宁县| 广河县| 海南省| 错那县| 东山县| 宜都市| 漳平市| 滨海县| 临夏县| 昌都县| 太康县| 江源县| 疏勒县| 贵阳市| 辽阳县| 彭阳县| 绥阳县| 西乌珠穆沁旗| 平顶山市| 广汉市| 拜泉县| 舞阳县| 平江县| 盐池县| 甘德县| 三河市| 九台市| 集安市| 普兰店市| 象山县| 深圳市| 平顶山市| 山东省| 五莲县| 连江县| 宁津县| 永吉县| 会理县| 安福县| 莱芜市| 亚东县|