最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux用戶與最小權(quán)限原則解析

 更新時(shí)間:2017年04月13日 11:31:24   作者:Vamei  
這篇文章主要為大家解析了Linux用戶與最小權(quán)限原則,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

Linux的用戶在登錄(login)之后,就帶有一個(gè)用戶身份(user ID, UID)和一個(gè)組身份(group ID, GID)。在Linux文件管理背景知識(shí)中,我們又看到,每個(gè)文件又有九位的權(quán)限說(shuō)明,用來(lái)指明該文件允許哪些用戶執(zhí)行哪些操作(讀、寫(xiě)或者執(zhí)行)。

(參考Linux文件管理背景知識(shí))

一般來(lái)說(shuō),Linux的用戶信息保存在/etc/passwd中,組信息保存在/etc/group中,文件的每一行代表一個(gè)用戶/組。早期的Linux將密碼以名碼的形式保存在/etc/passwd中,而現(xiàn)在則多以暗碼(也就是加密之后的形式)的形式保存在/etc/shadow中。將密碼存儲(chǔ)在/etc/shadow中提高了密碼的安全性,因?yàn)?etc/passwd允許所有人查看,而/etc/shadow只允許root用戶查看。 

進(jìn)程權(quán)限

但是,在Linux中,用戶的指令是在進(jìn)程的范圍內(nèi)進(jìn)行的。當(dāng)我們向?qū)δ硞€(gè)文件進(jìn)行操作的時(shí)候,我們需要在進(jìn)程中運(yùn)行一個(gè)程序,在進(jìn)程中對(duì)文件打開(kāi),并進(jìn)行讀、寫(xiě)或者執(zhí)行的操作。因此,我們需要將用戶的權(quán)限傳遞給進(jìn)程,以便進(jìn)程真正去執(zhí)行操作。例如我們有一個(gè)文件a.txt, 文件中為一個(gè)字符串:

Hello world!

我以用戶Vamei的身份登錄,并在shell中運(yùn)行如下命令:

$cat a.txt

整個(gè)運(yùn)行過(guò)程以及文件讀取如下:

 

我們可以看到,整個(gè)過(guò)程中我們會(huì)有兩個(gè)進(jìn)程,一個(gè)是shell本身(2256),一個(gè)是shell復(fù)制自身,再運(yùn)行/bin/cat (9913)。圖中的fork, exec, PID可參看Linux進(jìn)程基礎(chǔ)。第二個(gè)進(jìn)程總共對(duì)文件系統(tǒng)進(jìn)行了兩次操作,一次是執(zhí)行(x)文件/bin/cat,另外一次是讀取(r)文件a.txt。使用$ls -l 查看這兩個(gè)文件的權(quán)限:

$ls -l /bin/cat
-rwxr-xr-x 1 root root 46764 Apr 1 2012 /bin/cat


$ls -l a.txt
-rw-rw-r-- 1 Vamei Vamei 14 Oct 7 09:14 a.txt

從上面可以看到(參考Linux文件管理背景知識(shí)),/bin/cat讓所有用戶都享有執(zhí)行的權(quán)利,而Vamei作為a.txt的擁有者,對(duì)a.txt享有讀取的權(quán)利。

讓我們進(jìn)入更多的細(xì)節(jié) (The devil is in the details)。在進(jìn)行這兩次操作的時(shí)候,盡管用戶Vamei擁有相應(yīng)的權(quán)限,但我們發(fā)現(xiàn),真正做工作的是進(jìn)程9913。我們要讓這個(gè)進(jìn)程得到相應(yīng)的權(quán)限。實(shí)際上,每個(gè)進(jìn)程會(huì)維護(hù)有如下6個(gè)ID:

真實(shí)身份:real UID,  real GID

有效身份: effective UID,  effective GID

存儲(chǔ)身份:saved UID,  saved GID

其中,真實(shí)身份是我們登錄使用的身份,有效身份是當(dāng)該進(jìn)程真正去操作文件時(shí)所檢查的身份,存儲(chǔ)身份較為特殊,我們等一下再深入。當(dāng)進(jìn)程fork的時(shí)候,真實(shí)身份和有效身份都會(huì)復(fù)制給子進(jìn)程。大部分情況下,真實(shí)身份和有效身份都相同。當(dāng)Linux完成開(kāi)機(jī)啟動(dòng)之后,init進(jìn)程會(huì)執(zhí)行一個(gè)login的子進(jìn)程。我們將用戶名和密碼傳遞給login子進(jìn)程。login在查詢了/etc/passwd和/etc/shadow,并確定了其合法性之后,運(yùn)行(利用exec)一個(gè)shell進(jìn)程,shell進(jìn)程真實(shí)身份被設(shè)置成為該用戶的身份。由于此后fork此shell進(jìn)程的子進(jìn)程都會(huì)繼承真實(shí)身份,所以該真實(shí)身份會(huì)持續(xù)下去,直到我們登出并以其他身份再次登錄(當(dāng)我們使用su成為root的時(shí)候,實(shí)際上就是以root身份再次登錄,此后真實(shí)身份成為root)。

最小權(quán)限原則

每個(gè)進(jìn)程為什么不簡(jiǎn)單地只維護(hù)真實(shí)身份,卻選擇費(fèi)盡麻煩地去維護(hù)有效身份和存儲(chǔ)身份呢?這牽涉到Linux的“最小特權(quán)”(least priviledge)的原則。Linux通常希望進(jìn)程只擁有足夠完成其工作的特權(quán),而不希望賦予更多的特權(quán)給它。從設(shè)計(jì)上來(lái)說(shuō),最簡(jiǎn)單的是賦予每個(gè)進(jìn)程以super user的特權(quán),這樣進(jìn)程就可以想做什么做什么。然而,這對(duì)于系統(tǒng)來(lái)說(shuō)是一個(gè)巨大的安全漏洞,特別是在多用戶環(huán)境下,如果每個(gè)用戶都享有無(wú)限制的特權(quán),就很容易破壞其他用戶的文件或者系統(tǒng)本身。“最小特權(quán)”就是收縮進(jìn)程所享有的特權(quán),以防進(jìn)程濫用特權(quán)。

然而,進(jìn)程的不同階段可能需要不同的特權(quán)。比如一個(gè)進(jìn)程最開(kāi)始的有效身份是真實(shí)身份,但運(yùn)行到中間的時(shí)候,需要以其他的用戶身份讀入某些配置文件,然后再進(jìn)行其他的操作。為了防止其他的用戶身份被濫用,我們需要在操作之前,讓進(jìn)程的有效身份變更回來(lái)成為真實(shí)身份。這樣,進(jìn)程需要在兩個(gè)身份之間變化。

存儲(chǔ)身份就是真實(shí)身份之外的另一個(gè)身份。當(dāng)我們將一個(gè)程序文件執(zhí)行成為進(jìn)程的時(shí)候,該程序文件的擁有者(owner)和擁有組(owner group)可以被,存儲(chǔ)成為進(jìn)程的存儲(chǔ)身份。在隨后進(jìn)程的運(yùn)行過(guò)程中,進(jìn)程就將可以選擇將真實(shí)身份或者存儲(chǔ)身份復(fù)制到有效身份,以擁有真實(shí)身份或者存儲(chǔ)身份的權(quán)限。并不是所有的程序文件在執(zhí)行的過(guò)程都設(shè)置存儲(chǔ)身份的。需要這么做的程序文件會(huì)在其九位(bit)權(quán)限執(zhí)行位的x改為s。這時(shí),這一位(bit)叫做set UID bit或者set GID bit。

$ls -l /usr/bin/uuidd
-rwsr-sr-x 1 libuuid libuuid 17976 Mar 30 2012 /usr/sbin/uuidd

當(dāng)我以root(UID), root(GID)的真實(shí)身份運(yùn)行這個(gè)程序的時(shí)候,由于擁有者(owner)有s位的設(shè)定,所以saved UID被設(shè)置成為libuuid,saved GID被設(shè)置成為libuuid。這樣,uuidd的進(jìn)程就可以在兩個(gè)身份之間切換。 

我們通常使用chmod來(lái)修改set-UID bit和set-GID bit:

$chmod 4700 file

我們看到,這里的chmod后面不再只是三位的數(shù)字。最前面一位用于處理set-UID bit/set-GID bit,它可以被設(shè)置成為4/2/1以及或者上面數(shù)字的和。4表示為set UID bit, 2表示為set GID bit,1表示為sticky bit (暫時(shí)不介紹)。必須要先有x位的基礎(chǔ)上,才能設(shè)置s位。 

作為一個(gè)Linux用戶來(lái)說(shuō),我們并不需要特別關(guān)心上面的機(jī)制。但是,當(dāng)我們?nèi)ゾ帉?xiě)一個(gè)Linux應(yīng)用程序的時(shí)候,就要注意在程序中實(shí)現(xiàn)以上切換(有必要的前提下),以便讓我們的程序符合"最小權(quán)限"的原則,不給系統(tǒng)留下可能的安全隱患。給你的程序過(guò)度的權(quán)限的話,就像是吃下去下面的漢堡:

 

容易讓人吃傷的漢堡: 過(guò)度的“權(quán)限” 

總結(jié)

real/effective/saved UID/GID

saved UID/GID bit

“最小權(quán)限”原則

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Linux之UDP協(xié)議及其編程全流程

    Linux之UDP協(xié)議及其編程全流程

    這篇文章主要介紹了Linux之UDP協(xié)議及其編程全流程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 解決linux下vim中文亂碼的方法

    解決linux下vim中文亂碼的方法

    在vim中編輯一個(gè)中文文本時(shí),有時(shí)候看起來(lái)有亂碼,以前都是修修補(bǔ)補(bǔ)的弄沒(méi)有亂碼了就不管了,這個(gè)問(wèn)題一直都很困擾我。突然想到這個(gè)問(wèn)題想把它給解決掉,在網(wǎng)上有很多這方面的資料,但是說(shuō)得不是很到位,經(jīng)過(guò)了一天的折騰并做了一些小測(cè)試終于搞定了。下面來(lái)一起看看吧。
    2016-12-12
  • linux中如何添加用戶并賦予root權(quán)限詳解

    linux中如何添加用戶并賦予root權(quán)限詳解

    這篇文章主要先是給大家介紹了linux中如何添加用戶并賦予root權(quán)限,而后有詳細(xì)的介紹了Linux系統(tǒng)用戶組的管理,文中通過(guò)示例代碼介紹的很詳細(xì),相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,有需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2016-11-11
  • 詳解Linux內(nèi)核進(jìn)程調(diào)度函數(shù)schedule()的觸發(fā)和執(zhí)行時(shí)機(jī)

    詳解Linux內(nèi)核進(jìn)程調(diào)度函數(shù)schedule()的觸發(fā)和執(zhí)行時(shí)機(jī)

    這篇文章主要介紹了詳解Linux內(nèi)核進(jìn)程調(diào)度函數(shù)schedule()的觸發(fā)和執(zhí)行時(shí)機(jī),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • centos 7中firewall防火墻的常用命令總結(jié)

    centos 7中firewall防火墻的常用命令總結(jié)

    大家都知道centos 7中防火墻是一個(gè)非常的強(qiáng)大的功能了,但對(duì)于centos 7中在防火墻中進(jìn)行了升級(jí)了,下面這篇文章主要介紹了centos 7中firewall防火墻的常用命令,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-03-03
  • Linux查看History記錄加時(shí)間戳的小技巧

    Linux查看History記錄加時(shí)間戳的小技巧

    今天小編就為大家分享一篇關(guān)于Linux查看History記錄加時(shí)間戳的小技巧,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • 在CoreOS上搭建一個(gè)WordPress程序操作實(shí)例

    在CoreOS上搭建一個(gè)WordPress程序操作實(shí)例

    你可能聽(tīng)過(guò)服務(wù)器操作系統(tǒng)CoreOS的名字,那你試過(guò)在上面建立個(gè)小程序么?今天,我們就來(lái)手把手地教你建立一個(gè)簡(jiǎn)單的WordPress程序
    2014-03-03
  • 深入理解Linux負(fù)載均衡LVS

    深入理解Linux負(fù)載均衡LVS

    LVS是Linux Virtual Server 的簡(jiǎn)稱(chēng),也就是linux虛擬服務(wù)器。LVS 是一個(gè)實(shí)現(xiàn)負(fù)載均衡集群的開(kāi)源軟件項(xiàng)目,LVS架構(gòu)從邏輯上可分為調(diào)度層、Server集群層和共享存儲(chǔ)
    2021-06-06
  • 通過(guò)yum升級(jí)CentOS/RHEL最小化安裝的方法

    通過(guò)yum升級(jí)CentOS/RHEL最小化安裝的方法

    下面小編就為大家?guī)?lái)一篇通過(guò)yum升級(jí)CentOS/RHEL最小化安裝的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • Linux deepin 刪除多余內(nèi)核的實(shí)現(xiàn)方法

    Linux deepin 刪除多余內(nèi)核的實(shí)現(xiàn)方法

    這篇文章主要介紹了Linux deepin 刪除多余內(nèi)核的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12

最新評(píng)論

华宁县| 彭州市| 肃宁县| 昆明市| 富顺县| 突泉县| 澄迈县| 遵化市| 上杭县| 康平县| 旅游| 马公市| 红河县| 扶风县| 淮南市| 简阳市| 开阳县| 普安县| 库车县| 北宁市| 斗六市| 黄平县| 郑州市| 垣曲县| 宝清县| 石首市| 柘城县| 焦作市| 嵊州市| 克东县| 木兰县| 健康| 文水县| 西昌市| 基隆市| 乌海市| 安阳县| 郁南县| 连南| 昭觉县| 陆良县|