溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

linux如何做好文件權(quán)限管理

發(fā)布時(shí)間:2022-01-05 09:45:08 來(lái)源:億速云 閱讀:122 作者:小新 欄目:云計(jì)算

這篇文章給大家分享的是有關(guān)linux如何做好文件權(quán)限管理的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

Linux是典型的多用戶(hù)多任務(wù)操作系統(tǒng),因此對(duì)于linux來(lái)說(shuō),同一臺(tái)計(jì)算機(jī)資源可以提供給多個(gè)人使用是件很普通的事情,但是問(wèn)題來(lái)了,多個(gè)人同時(shí)使用一臺(tái)計(jì)算機(jī),會(huì)不會(huì)相互影響和干擾,如果其中有人不小心,做了破壞性的動(dòng)作,其他人是不是也要玩完?還有如果每個(gè)人都有一些隱私的文檔保存在這臺(tái)計(jì)算機(jī)上,那這些文檔會(huì)不會(huì)被其他人瀏覽或獲?。孔鳛橐粋€(gè)安全的操作系統(tǒng),Linux是如何解決這些問(wèn)題的呢?作為root用戶(hù),具有超級(jí)權(quán)限,那到底有哪些權(quán)限呢?

如何理解用戶(hù)權(quán)限呢

你可以將一臺(tái)計(jì)算機(jī)想象為一家酒店,那么這家酒店的root用戶(hù)是誰(shuí)呢?毫無(wú)疑問(wèn),當(dāng)然是酒店的老板,老板手下的員工可以認(rèn)為是管理員,而入住者可以認(rèn)為是普通用戶(hù),當(dāng)你在前臺(tái)付費(fèi)登記,定好了自己的房間后,前臺(tái)會(huì)給你指定房間的鑰匙或房卡,而這兩樣就相當(dāng)于你的賬戶(hù)密碼,有了鑰匙和房卡,你就可以打開(kāi)房門(mén),使用該房間提供的所有物品或者服務(wù),當(dāng)然你使用的東西只能局限于該房間內(nèi),你的房卡和鑰匙當(dāng)然不能打開(kāi)其他房間的房門(mén),除非你是老板。

這是個(gè)形象的比喻,也是個(gè)縮影,我們周?chē)写嬖诘馁Y源都是有限的,沒(méi)有人能夠無(wú)限制的使用,因此我們生活和工作的世界里,都存在著大大小小的規(guī)則來(lái)限制你行動(dòng)范圍和自由,你對(duì)資源的使用也需要付出一定的代價(jià)來(lái)獲取。計(jì)算機(jī)資源也是一樣的,對(duì)于多人共享的情況下,賬戶(hù)的管理和設(shè)計(jì)也要符合這種最基本的規(guī)則。

權(quán)限,從字面意思來(lái)理解,權(quán),就是你的權(quán)利,規(guī)定你能做什么,限,就是限制,規(guī)定了你不能做什么,在一定范圍內(nèi)行使你的權(quán)利。Linux賬戶(hù)可以根據(jù)權(quán)限大小的不同,分為超級(jí)用戶(hù)(root),管理員,普通用戶(hù)。不同用戶(hù)根據(jù)對(duì)系統(tǒng)資源的需求,會(huì)有不同的權(quán)限。那這些權(quán)限是誰(shuí)賦予的呢?這要看超級(jí)用戶(hù)(root)掌握在誰(shuí)手里,那他就是這些賬戶(hù)的分配者,包括管理員,都需要root用戶(hù)來(lái)分配,在這里管理員賬戶(hù)和普通賬戶(hù)其實(shí)沒(méi)有特別不同,只是一般管理員帳戶(hù)的權(quán)限可能會(huì)更多。

Linux的賬戶(hù)權(quán)限有很多種,最基本的就是對(duì)文件系統(tǒng)的訪問(wèn)權(quán)限,即文件或文件夾權(quán)限。sudo權(quán)限,可以賦予特定賬戶(hù)能夠執(zhí)行root賬戶(hù)的一些命令。ssh權(quán)限,控制用戶(hù)是否可以通過(guò)ssh遠(yuǎn)程登錄。

關(guān)于文件權(quán)限

由于Linux的設(shè)備和文檔都是以文件的形式存在,因此Linux最基本的安全控制就是對(duì)文件的訪問(wèn)控制。Linux文件或文件夾權(quán)限是用來(lái)控制用戶(hù)訪問(wèn)文件、文件夾或執(zhí)行程序的一套機(jī)制。

根據(jù)用戶(hù)對(duì)文件或目錄操作種類(lèi)的不同,linux定義了三種基本的權(quán)限:

  • 讀,用r標(biāo)識(shí),對(duì)文件來(lái)說(shuō),表示可以查看文件內(nèi)容,對(duì)文件夾來(lái)說(shuō),表示可以查看文件夾下的文件,可以用數(shù)值4來(lái)表示;

  • 寫(xiě),用w標(biāo)識(shí),對(duì)文件來(lái)說(shuō),表示可以向文件中寫(xiě)入或者插入內(nèi)容,對(duì)文件夾來(lái)說(shuō),表示可以在文件夾下刪除、添加或者修改文件名稱(chēng),可以用數(shù)值2來(lái)表示;

  • 執(zhí)行,用x標(biāo)識(shí),對(duì)文件來(lái)說(shuō),表示文件可以以程序來(lái)執(zhí)行,對(duì)文件夾來(lái)說(shuō),表示可以訪問(wèn)子目錄及文件及shell中cd到此目錄,可以用數(shù)值1來(lái)表示。

同時(shí),用戶(hù)和文件存在以下關(guān)系:

  • 文件所有者(owner):擁有文件的用戶(hù)。創(chuàng)建文件時(shí)是創(chuàng)建文件的用戶(hù)(可用whoami命令查看)。

  • 所屬組(group):文件所屬的組。創(chuàng)建文件時(shí)用戶(hù)的組(可用id命令查看)。

  • 其他用戶(hù)(other):既不是文件所有者,也不是文件所屬的組的成員的其他用戶(hù)。

一個(gè)文件或文件夾的權(quán)限,其實(shí)就是對(duì)這三種關(guān)系的用戶(hù)規(guī)定是否具有可讀,可寫(xiě),可執(zhí)行的權(quán)限,通常文件或文件夾的權(quán)限可以通過(guò)ls -l命令來(lái)查看:

  • mode:標(biāo)識(shí)了owner、group及other用戶(hù)對(duì)該文件的操作權(quán)限;

  • owner:規(guī)定文件的擁有者;

  • group:規(guī)定文件歸屬的用戶(hù)組。

mode用長(zhǎng)度為10的字符串來(lái)表示 “-rw-rw-r--”,第一位字符表示類(lèi)型“-”表示文件,“d”表示目錄,“l(fā)”表示鏈接文件。后面9位需要每三位為一組來(lái)理解:

每一組的第一位標(biāo)識(shí)是否具有讀權(quán)限,‘r’表示具有讀權(quán)限,‘-’表示禁止讀權(quán)限,第二位標(biāo)識(shí)是否具有寫(xiě)權(quán)限,‘w’表示具有寫(xiě)權(quán)限,‘-’表示禁止寫(xiě)權(quán)限,第三位標(biāo)識(shí)是否具有可執(zhí)行權(quán)限,‘x’表示具有可執(zhí)行權(quán)限,‘-’表示禁止可執(zhí)行權(quán)限。從左往右分為三組,第一組標(biāo)識(shí)owner的權(quán)限,第二組表示group的權(quán)限,第三組標(biāo)識(shí)其他用戶(hù)的權(quán)限。

舉個(gè)例子,如上圖所示的文件 public_excutable權(quán)限為"-rwxr-xr-x", 怎么理解呢?首先拆開(kāi)來(lái)看,owner的權(quán)限是"rwx",表示對(duì)文件具有可讀可寫(xiě)可執(zhí)行的權(quán)限,group的權(quán)限是"r-x",表示對(duì)該文件只有可讀和可執(zhí)行的權(quán)限,other用戶(hù)的權(quán)限也是"r-x",表示對(duì)該文件只有可讀和可執(zhí)行的權(quán)限。

文件權(quán)限除了用字符串表示外,也可使用八進(jìn)制數(shù)來(lái)表示權(quán)限,即用一個(gè)四位八進(jìn)制數(shù)來(lái)表示,其中最高位表示特殊權(quán)限,隨后的三位依次是所有者權(quán)限、組權(quán)限和其他人權(quán)限。每一個(gè)八進(jìn)制位的權(quán)限數(shù)值是文件具有的相應(yīng)權(quán)限所對(duì)應(yīng)的數(shù)值之和,還是以文件public_excutable為例子:

0755 = rwxr-xr-x = 0(4 + 2 + 1)(4 + 1)(4 + 1)

如果要查看文件的數(shù)值權(quán)限,可以通過(guò)stat命令進(jìn)行查看:

root@d076cf119be7:/ $ stat test_file
File: test_file
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 29h/41d Inode: 13429 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-07-26 02:26:26.723187697 +0000
Modify: 2018-07-26 02:26:26.723187697 +0000
Change: 2018-07-26 02:26:26.723187697 +0000
Birth: -

如何創(chuàng)建并修改文件權(quán)限呢?

umask

當(dāng)我們登錄系統(tǒng),創(chuàng)建一個(gè)新的文件或者目錄時(shí),會(huì)被分配一個(gè)默認(rèn)權(quán)限,這個(gè)最初的權(quán)限是如何被分配的呢?在Linux系統(tǒng)中,通常管理員通過(guò)設(shè)置umask值來(lái)定義創(chuàng)建目錄和文件時(shí)的默認(rèn)權(quán)限。

什么事umask?系統(tǒng)管理員必須要為你設(shè)置一個(gè)合理的 umask值,以確保你創(chuàng)建的文件具有所希望的缺省權(quán)限,防止其他非同組用戶(hù)對(duì)你的文件具有寫(xiě)權(quán)限。一般來(lái)說(shuō),umask命令是在/etc /profile文件中設(shè)置的,每個(gè)用戶(hù)在登錄時(shí)都會(huì)引用這個(gè)文件,所以如果希望改變所有用戶(hù)的umask,可以在該文件中加入相應(yīng)的條目。如果希望永久 性地設(shè)置自己的umask值,那么就把它放在自己$HOME目錄下的.profile或.bash_profile或.bashrc文件中。

umask值類(lèi)似于文件的權(quán)限值,使用三位八進(jìn)制數(shù)來(lái)表示,比如002,設(shè)置范圍(000~777),以掩碼的形式,定義需要禁止那些用戶(hù)的何種權(quán)限,第一位表示禁止owner的權(quán)限值,第二位表示禁止group用戶(hù)的權(quán)限值,第三位表示禁止other用戶(hù)的權(quán)限值。

如何通過(guò)umask值來(lái)計(jì)算默認(rèn)的文件或者目錄的權(quán)限?

以u(píng)mask值為002為例,翻譯成權(quán)限字符串 "--- --- -w-",表示禁止other用戶(hù)使用寫(xiě)權(quán)限,對(duì)于文件來(lái)說(shuō),默認(rèn)的最大權(quán)限為666 即"rw- rw- rw-",則根據(jù)掩碼,去掉other用戶(hù)的寫(xiě)權(quán)限,文件默認(rèn)的權(quán)限為"rw- rw- r--",值為664,對(duì)于文件夾來(lái)說(shuō),默認(rèn)的最大權(quán)限為777,即"rwx rwx rwx",則根據(jù)掩碼,去掉other用戶(hù)的寫(xiě)權(quán)限,文件的權(quán)限為"rwx rwx r-x", 值為775。

使用umask命令:

查詢(xún)系統(tǒng)umask值

root $ umask
0022

設(shè)置umask

root $ umask 033
root $ umask
0033

修改文件或文件夾權(quán)限

上文講述了如何通過(guò)umask來(lái)定義文件或者文件夾的默認(rèn)權(quán)限,那文件創(chuàng)建后,權(quán)限如何變更呢?Linux提供了chmod命令來(lái)修改文件權(quán)限,chmod可以給文件或者目錄的指定用戶(hù)增加或者降低權(quán)限,比如給owner和group增加執(zhí)行權(quán)限:

chmod ug+x test_file

以上的例子中u和g分別表示user,group,是用戶(hù)類(lèi)型:

  • u - user

  • g - group

  • o - other

  • a - all

'+' 表示增加權(quán)限,是執(zhí)行的動(dòng)作:

  • +  增加權(quán)限

  • -  降低權(quán)限

'x' 表示要增加的文件權(quán)限:

  • r 讀

  • w 寫(xiě)

  • x 可執(zhí)行

一些常見(jiàn)的例子:

給所有用戶(hù)增加寫(xiě)權(quán)限:

chmod a+w test_file

給other用戶(hù)增加執(zhí)行權(quán)限:

chmod o+x test_file

禁止group和other用戶(hù)的執(zhí)行權(quán)限:

chmod go-x test_file

禁止所有用戶(hù)的執(zhí)行權(quán)限:

chmod a-x test_file

也可以直接修改文件的權(quán)限值:

chmod 644 test_file

修改文件或文件夾的歸屬

文件的歸屬?zèng)Q定了文件屬于那個(gè)用戶(hù),隸屬于那個(gè)用戶(hù)組,創(chuàng)建一個(gè)文件時(shí),默認(rèn)的情況下,該文件的owner即為創(chuàng)建該文件的用戶(hù),group為該用戶(hù)的初始group,

root:/home/user5 $ su user5
user5:~ $ groups
user5
user5:~ $ touch test
user5:~ $ ls -la
-rw-r--r-- 1 user5 user5 0 Aug 2 01:11 test

通常情況下對(duì)于root和owner用戶(hù)來(lái)說(shuō),可以隨意修改文件的權(quán)限屬性,但是對(duì)owner來(lái)說(shuō),決定于該用戶(hù)是否可以訪問(wèn)chmod命令。

文件的歸屬可以被root賬戶(hù)修改,chown 命令修改文件的owner,chgrp 修改文件歸屬的group,

root:/home/user5 $ chown user4 test
root:/home/user5 $ ls -la
-rw------- 1 user4 user5 0 Aug 2 01:11 test

root:/home/user5 $ chgrp user2 test
root:/home/user5 $ ls -la
-rw------- 1 user4 user2 0 Aug 2 01:11 test

文件及文件夾權(quán)限的控制

如果一個(gè)用戶(hù)要訪問(wèn)一個(gè)文件或文件夾時(shí),Linux首先會(huì)檢查該用戶(hù)和訪問(wèn)文件之間的歸屬關(guān)系,其次檢查該用戶(hù)對(duì)文件的操作屬于什么操作(讀,寫(xiě),執(zhí)行),最后根據(jù)用戶(hù)的角色,檢查該角色對(duì)文件是否擁有所操作的權(quán)限,比如上例中 test 文件權(quán)限如下所示:

root:/home $ ls -la
-rw------- 1 user4 user2 0 Aug 2 01:11 test

那如果是user2 用戶(hù)想查看該文件,Linux是否會(huì)允許嗎?不妨做個(gè)實(shí)驗(yàn):

root:/home $ su user2
user2:/home $ cat test
cat: test: Permission denied

為什么會(huì)被拒絕呢?從以上權(quán)限來(lái)分析,雖然user2賬戶(hù)是屬于user2 group的,而且該文件也歸屬于user2 group,但是文件的權(quán)限只對(duì)owner 開(kāi)放了可讀,可寫(xiě)權(quán)限,group是沒(méi)有任何權(quán)限的,因此user2 是沒(méi)有讀權(quán)限的。

文件夾的權(quán)限比較特殊,x表示在shell中可以通過(guò)cd命令訪問(wèn)該目錄及子目錄,r表示可以瀏覽該目錄下的文件及子目錄,w表示可以在該文件夾下添加刪除文件。

drwx------ 3 testuser1 test2 4096 Aug 15 01:18 testuser1dir
drwx------ 2 testuser2 testuser2 4096 Jun 28 01:44 testuser2dir

比如以上文件夾testuser1dir的權(quán)限只對(duì)owner用戶(hù)testuser1開(kāi)放了讀寫(xiě)及訪問(wèn)權(quán)限,當(dāng)我們切換到testuser2,是否能訪問(wèn)testuser1dir呢,

testuser2@d1db4cc29365:/home $ cd testuser1dir
bash: cd: testuser1dir: Permission denied

實(shí)踐驗(yàn)證是不行的,原因是testuser1dir對(duì)于group用戶(hù)和other用戶(hù)是沒(méi)有開(kāi)放任何權(quán)限的,而testuser2屬于other用戶(hù)。如果需要other用戶(hù)能夠訪問(wèn)該目錄,我們應(yīng)該怎么做呢?

root@:/home $ chmod o+rx testuser1dir
root@:/home $ ls -la
drwx---r-x 3 testuser1 test2 4096 Aug 15 01:18 testuser1dir
testuser2@:/home $ cd testuser1dir/
testuser2@:/home/testuser1dir $ ls
testdir

首先切換到root賬戶(hù),對(duì)testuser1dir給other用戶(hù)增加可讀可訪問(wèn)權(quán)限,然后再切換到testuser2賬戶(hù),再次嘗試cd到該目錄,這次就OK了。

感謝各位的閱讀!關(guān)于“l(fā)inux如何做好文件權(quán)限管理”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI