新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 淺析linux權(quán)限管理

淺析linux權(quán)限管理

作者:ZLG致遠電子 時間:2018-06-29 來源:電子產(chǎn)品世界 收藏

  “一切皆是文件”是/的基本哲學(xué)之一,目錄、字符設(shè)備、塊設(shè)備、套接字等在/都是以文件的形式存在。面對眾多的文件,如何理解和管理他們的讀、寫、執(zhí)行權(quán)限呢?

本文引用地址:http://2s4d.com/article/201806/382535.htm

  在Windows下,可以通過鼠標右擊文件,在屬性欄查看文件的權(quán)限。下的文件“哲學(xué)”是否與Windows相同呢?我們從以下幾點分析。

  1 . 文件權(quán)限設(shè)定的作用

  文件權(quán)限的設(shè)定是為了保護系統(tǒng)及用戶數(shù)據(jù)的安全性。對于用戶來說,最重要的事情就是數(shù)據(jù)、文件的私密性及安全性。從系統(tǒng)管理員到普通用戶,從文件屬性到文件特殊加密,無不圍繞著一個主題:權(quán)限管理。若一個關(guān)鍵文件被意外寫入,輕則數(shù)據(jù)丟失,重則系統(tǒng)崩潰。

  以根目錄下的/proc目錄文件為例,該文件是linux內(nèi)核提供的一種虛擬文件系統(tǒng),可訪問內(nèi)核內(nèi)部數(shù)據(jù)結(jié)構(gòu)、改變內(nèi)核設(shè)置的機制。其中swaps 為交換空間的使用情況,tty 保存tty設(shè)備信息,version Linux內(nèi)核版本和gcc版本。我們可以發(fā)現(xiàn),這些與系統(tǒng)緊密關(guān)聯(lián)的文件全部為只讀,即使對于root用戶。

  圖1 /proc下的部分文件

  2 . 文件權(quán)限的劃分

  Linux下的權(quán)限管理從訪問者方面來看大致可分為三塊,分別是用戶、用戶組、管理員。如圖2,打開當前用戶目錄下的文件列表細節(jié)。大部分時候我們使用此命令僅僅是關(guān)注右半部分的信息,比如文件名、日期、大小等。左半部分展現(xiàn)的就是對應(yīng)文件的權(quán)限信息了。

  圖2 文件屬性細節(jié)

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

  圖3文件權(quán)限

  用戶和用戶組的信息分別在/etc目錄下的passwd、group文件內(nèi),可以使用cat命令直接讀取。

  圖4用戶/用戶組信息

  3 . 文件權(quán)限更改方法

  Linux提供chmod命令用于改變或者設(shè)置文件的權(quán)限。命令格式如圖5,將hello 文件的其它用戶權(quán)限可執(zhí)行屬性去掉:vmuser@Linux-host: hello$ chmod o-x hello。如果同時設(shè)置 u/g/o,可用 a 表示,例如為 hello 增加全部用戶可執(zhí)行權(quán)限:vmuser@Linux-host: ~$ chmoda+x hello。

  圖5文件權(quán)限更改(一)

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

  圖6文件權(quán)限更改(二)

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

  圖7 用戶默認權(quán)限更改

  4 . 如何保護重要文件

  文件的保護可以從量方面入手:文件的權(quán)限管理、文件及時備份。

  權(quán)限管理方面,在更改文件權(quán)限時不可隨意,比如直接chmod 777 filename。以系統(tǒng)或APP的工作日志文件為例,它對絕大部分可登錄用戶僅可讀,若對其覆蓋寫入將永久丟失日志信息。在復(fù)雜的多用戶協(xié)同系統(tǒng)中,要嚴格管理單用戶權(quán)限、組用戶權(quán)限,慎用root用戶權(quán)限。

  圖8只讀日志文件

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

  圖9 文件系統(tǒng)權(quán)限更改

  文件備份時保護重要文件的另一種手段,在嚴格的權(quán)限管理機制也不能保證萬無一失。重要文件可使用腳本自動化、定時備份,必要時還可以將文件保存到其他物理存儲介質(zhì)或云盤中。在涉及到扣費、計費時,數(shù)據(jù)及文件的安全性顯得尤為重要。ZLG致遠電子“公共交通的移動支付—公交POS”方案中使用的ARM9核心板采用雙備份文件系統(tǒng)及UPS掉電保護設(shè)計來保證扣費數(shù)據(jù)的可靠。

  圖10文件系統(tǒng)雙備份



關(guān)鍵詞: Unix Linux

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉