“一切皆是文件”是Unix/Linux的基本哲學之一,目錄、字符設備、塊設備、套接字等在Unix/Linux都是以文件的形式存在。面對眾多的文件,如何理解和管理他們的讀、寫、執行權限呢?
在Windows下,可以通過鼠標右擊文件,在屬性欄查看文件的權限。Linux下的文件“哲學”是否與Windows相同呢?我們從以下幾點分析。
一、文件權限設定的作用
文件權限的設定是為了保護系統及用戶數據的安全性。對于用戶來說,最重要的事情就是數據、文件的私密性及安全性。從系統管理員到普通用戶,從文件屬性到文件特殊加密 ,無不圍繞著一個主題:權限管理。若一個關鍵文件被意外寫入,輕則數據丟失,重則系統崩潰。
以根目錄下的/proc目錄文件為例,該文件是linux內核提供的一種虛擬文件系統,可訪問內核內部數據結構、改變內核設置的機制。其中swaps 為交換空間的使用情況,tty 保存tty設備信息,version Linux內核版本和gcc版本。我們可以發現,這些與系統緊密關聯的文件全部為只讀,即使對于root用戶。

圖1 /proc下的部分文件
二、文件權限的劃分
Linux下的權限管理從訪問者方面來看大致可分為三塊,分別是用戶、用戶組、管理員。如圖2,打開當前用戶目錄下的文件列表細節。大部分時候我們使用此命令僅僅是關注右半部分的信息,比如文件名、日期、大小等。左半部分展現的就是對應文件的權限信息了。

圖2 文件屬性細節
Linux系統對用戶的權限有著嚴格的管理。如圖3,可將一個文件的權限分為三部分:對文件所有者權限、對所有者所在用戶組權限、對其他用戶權限。其中,用戶組(group)就是具有相同特征的用戶的集合體。

圖3 文件權限
用戶和用戶組的信息分別在/etc目錄下的passwd、group文件內,可以使用cat命令直接讀取。

圖4 用戶/用戶組信息
三、文件權限更改方法
Linux提供chmod命令用于改變或者設置文件的權限。命令格式如圖5,將hello 文件的其它用戶權限可執行屬性去掉:vmuser@Linux-host: hello$ chmod o-x hello。如果同時設置 u/g/o,可用 a 表示,例如為 hello 增加全部用戶可執行權限:vmuser@Linux-host: ~$ chmoda+x hello。

圖5 文件權限更改(一)
前面我們說到,linux的文件權限管理是一種“哲學美”,chmod命令還提供更間接的使用方式。如圖6,分別將r、w、x對應為數字4、2、1,用數字之和代表該組權限值,比如rwx可用 7 表示, r-x 可用 5 表示。若想將hello文件設置為最寬松的權限,可直接使用命令chmod 777 hello。

圖6 文件權限更改(二)
那么除了先創建文件再修改權限,是否可直接創建特定權限的文件呢?答案是肯定的,我們可以通過修改umask的值管理對應用戶默認權限。可以直接輸入umask獲取當前用戶的權限默認值,當然也可以使用umask=xxx去修改它。此外,若想永久設置umask的值,可以修改~/.bashrc或者./bash_profile。Umask的值與文件的權限并不是一一對應的,感興趣到的讀者可以查閱相關資料。

圖7 用戶默認權限更改
四、如何保護重要文件
文件的保護可以從量方面入手:文件的權限管理、文件及時備份。
權限管理方面,在更改文件權限時不可隨意,比如直接chmod 777 filename。以系統或APP的工作日志文件為例,它對絕大部分可登錄用戶僅可讀,若對其覆蓋寫入將永久丟失日志信息。在復雜的多用戶協同系統中,要嚴格管理單用戶權限、組用戶權限,慎用root用戶權限。

圖8 只讀日志文件
對于標準的rootfs,不建議普通用戶直接去更改它,在uboot掛載該文件系統時直接賦予它只讀權限。將bootargs的最后一項賦值為“ro”即為read only。若需臨時修改為讀寫模式,可使用mount -o remount,rw /,用于臨時修改為可讀寫模式,盡量避免修改uboot代碼。

圖9 文件系統權限更改
文件備份時保護重要文件的另一種手段,在嚴格的權限管理機制也不能保證萬無一失。重要文件可使用腳本自動化、定時備份,必要時還可以將文件保存到其他物理存儲介質或云盤中。在涉及到扣費、計費時,數據及文件的安全性顯得尤為重要。

圖10 文件系統雙備份
-
Linux
+關注
關注
88文章
11758瀏覽量
219004 -
arm9
+關注
關注
2文章
290瀏覽量
56360
發布評論請先 登錄
Linux文件刪除的底層原理和恢復方法
飛凌嵌入式ElfBoard-Linux系統中的文件分類
Linux新手通關!5分鐘掌握文件/目錄管理,告別“找不到北”
在Windows和Linux環境下分別使用Olimex和蜂鳥調試器下載程序
在Windows10上運行vivado使用tcl文件創建E203項目路徑錯誤的問題
飛凌嵌入式ElfBoard-Vim編輯器之windows與ubuntu系統互傳文件
Linux三大主流文件系統解析
Linux系統目錄結構全面剖析
聚徽廠家解碼——工控機操作系統選擇:Windows、Linux、QNX 如何匹配工業場景
不借助Linux系統,在Windows下如何搭建ZMC900E交叉編譯環境
Linux下文件“哲學”是否與Windows相同?
評論