Linux運維之路基礎學習四

當文件的權限不能滿足某個用戶時,ACL是一個好辦法

一、訪問控制列表

1.ACL的作用

訪問控制列表(ACL,Access Control List),在基本的文件的權限管理之上,實現了靈活的權限管理。一個文件設置了ACL,那么除了文件的所有者,所屬組和其他人,可以為更多的用戶設置ACL權限,使之可以對文件進行或者不進行權限的操作。

Centos7默認創建的xfsext4文件系統具有ACL功能,Centos7之前版本,默認手工穿件的ext4文件系統無ACL,需要手動增加

?????? tune2fs -o acl /dev/sdb1

?????? mount -o acl .dev/sdb1 /mnt/test

ACL的內容格式為(可用getfacl FILENAME查看ACL):

# file: FILENAME

# owner:

# group:

user::權限

group::權限

other::權限

?????? ACL的設置格式:setfacl -m [d [efault]] [u [ser]] uid [perms] FILENAME

?????? 從格式可以看出,ACL可以為多個用戶或組設置文件和目錄的訪問權限rwx

?????? 2.ACL中的umask

?????? ACL中有一個umask值,通常它是添加的ACL權限中權限最多的值,它限制著添加的ACL的權限,由于這個值可以修改,因此在某些ACL中可以看到某一條的ACL條目后會加上注釋用以說明其有效權限。比如對某個文件添加一個權限比umask大的ACL,此時使用-n選項讓系統不更新umask的值,那么添加進去的ACL將會有注釋它的有效權限。也就是說這ACL的有效權限只有在umask存在的權限,例外ACL是不會給某條ACL添加上ACL沒有而umask有的權限。

3.默認ACL權限

?????? 默認的ACL權限用于目錄,在該目錄下創建的文件都有默認的ACL權限,但是給目錄默認x權限,目錄內文件不會繼承x權限。

4.ACL的備份和恢復

?????? cpmv都支持ACLcp命令需要加上-p參數,tar等參見的備份工具不會保留目錄和文件的ACL信息

基本格式 getfacl -R /tmp/dir1 >acl.txt

????????????? Setfacl -R –set-file=acl.txt /tmp/dir1

?

二、文件權限的字母法和數字法

1.???? 文件權限的字母法

·文件的權限一般有讀、寫、執行三種,分別用rw、x表示。文件所有者、文件所屬組用戶、其他用戶都可以使用rwx三個權限。Linux中用a表示文件所有者、文件所屬組用戶、其他用戶,u表示文件所有者,g表示文件所屬組用戶,o表示其他用戶修改文件的權限命令為chmod,為某個文件修改權限的格式為:

chmod [a|u|g|o][+|-][r|w|x] FILENAME

使用字母法可以很清晰的指明文件修改哪些權限

2.???? 文件權限的數字法

文件的權限可以按照字母設置對應的數字,即— 000? –x 001? -w- 010? r–100,這樣就可以將某個用戶的權限加起來用數字表示,例如rw==100+010==4+2=6;rx==100+001==4+1=5;

所以設置格式可以為

chmod xxx(計算好的權限) FILENAME

linux中有一個用于新建文件和目錄的默認權限的umask值,一般情況下非特權用戶的umask002,rootumask022,在命令行界面也可以輸出入umask來查看這個值,一般情況下,新建的文件權限為666-umask,新建DIR權限為777-umask,如果因為修改umask值二導致文件權限計算出來的結果存在執行(奇數)權限,則將其權限加1

?

三、重定向和管道

1.???? 重定向

Linux提供給程序三種I/O設備,分別是:

標準輸入(stdin)默認接受來自鍵盤的輸入,數字上用0表示

標準輸出(stdout)默認輸出到終端窗口,數字上用1表示

標準錯誤(stderr)默認輸出到終端窗口,數字上用2表示

將這三種發I/O設備改變默認位置,稱之為重定向,三種I/O設備的操作符號:

>stdout重定向到文件,此時文件若有內容則會被覆蓋,可使用set -C 禁止覆蓋文件,但是可以追加,使用>|可以強制覆蓋,>>可用于向文件追加內容,<<XX ……..<<XX用于多行重定向

????????????? 2>stderr重定向到文件,文件內容會被覆蓋,使用2>>可以追加

????????????? &>把所有輸出重定向到文件,文件內容會被覆蓋,使用&>>可以追加

????????????? 使用小括號()可以將多個程序的輸出合并

2.???? 管道

管道用于連接命令,管道將前一個程序的標準輸出作為后一個程序的標準輸入(在程序前加xargs,可逐條傳遞前一個命令的標準輸出)。

Stderr默認不能通過管道轉發,可以使用2>&1或者|&實現,即將標準錯誤轉換成正確再用管道。

?????? ?????? tee用于將前一條命令的stdout作為后一條命令的stdin,并且輸出到標準輸出流,類似于一個T

?????????????

附:幾個小命令的學習

?????? chown:?? 設置文件的所有者

?????? chown [OPTION]… [OWNER][:[GROUP]] FILE…

? ??? or:? chown [OPTION]… –reference=RFILE FILE…

?????? -c:更改所有者完成后,給出提示信息,在命令沒有錯誤并且執行后時會提示更改了所有者

?????? -f:屏蔽大部分命令的錯誤信息,更改的所有者不存在的錯誤不能屏蔽,文件不存在的錯誤可以屏蔽

?????? -v:為每個處理的文件輸出一個診斷信息

?????? -h:只更改軟鏈接(符號鏈接)的所有者,而不會影響鏈接所指向文件的所有者,也就是說不使用這個選項修改軟鏈接的所有者,那么只會更改對應的文件的所有者,而不會改變軟鏈接的所有者

?????? -R:遞歸的操作文件或文件和目錄,修改某個目錄的所有者時,該目錄下的所有的文件的所有者都會被遞歸修改

?????? ?–reference:將后一個文件file的所有者修改成前一個文件rfile的所有者

chgrp:???? 設置文件的所屬組

?????? chogrp [OPTION]… GROUP FILE…

? ??? or:? chgrp [OPTION]… –reference=RFILE FILE…

?????? -c:更改所屬組完成后,給出提示信息,在命令沒有錯誤并且執行后時會提示更改了所屬組

?????? -f:屏蔽大部分命令的錯誤信息,更改的所屬組不存在的錯誤不能屏蔽,文件不存在的錯誤可以屏蔽

?????? -v:為每個處理的文件輸出一個診斷信息

?????? -h:只更改軟鏈接(符號鏈接)的所屬組,而不會影響鏈接所指向文件的所屬組,也就是說不使用這個選項修改軟鏈接的所屬組,那么只會更改對應的文件的所屬組,而不會改變軟鏈接的所屬組

?????? -R:遞歸的操作文件或文件和目錄,修改某個目錄的所屬組時,該目錄下的所有的文件的所屬組都會被遞歸修改

?????? –reference:將后一個文件file的所屬組修改成前一個文件rfile的所屬組

chmod:?? 修改文件權限,修改軟鏈接的權限時修改的是軟鏈接指向的文件的權限

?????? chmod [OPTION]… MODE[,MODE]… FILE…

? ??? or:? chmod [OPTION]… OCTAL-MODE FILE…

? ??? or:? chmod [OPTION]… –reference=RFILE FILE…

?

?????? -c:更改權限完成后,給出提示信息,在命令沒有錯誤并且執行后時會提示更改成什么樣的權限

?????? -f:屏蔽大部分命令的錯誤信息,更改的權限錯誤不能屏蔽,文件不存在的錯誤可以屏蔽

?????? -v:為每個處理的文件輸出一個診斷信息

?????? -R:遞歸的操作文件或文件和目錄,修改某個目錄的權限時,該目錄下的所有的文件的權限都會被遞歸修改

?????? –reference:將后一個文件file的權限修改成前一個文件rfile的權限

umask:?? 顯示或設置文件模式掩碼,創建的文件或目錄的權限與之相關

?????? -p:輸出可被調用,可以用于輸入

?????? -S:以模式的形式顯示,即“u=rwx,g=rx,o=rx”形式

chattr:???? 字母“aAcCdDeijsStTu”選擇文件的新屬性:僅追加(a),沒有 一次更新(A),壓縮(c),(C)沒有拷貝,沒有轉儲(d), 同步目錄更新(D),范圍格式(e),不可變(i)(j),安全 刪除(s),同步沒有更新(S),沒有尾部合并(T),頂部目錄層次結構(T),和不可取消(u

lsatrr:????? 顯示通過chatrr加的特定的屬性

setfacl:設置文件訪問控制列表

?????? ACL條目

?????? [d [efault]] [u [ser]] uid [perms]

?????? 指定用戶的權限,如果uid為空,則擁有文件所有者的權限

?????? [d [efault]] g [group]gid [perms]

?????? 指定組的權限,如果gid為空,則擁有組的權限

?????? [d[efault]:] m[ask][:] [:perms]

?????? 有效的權限掩碼

?????? [d[efault]:]o[ther] [:] [:perms]

?????? 他人的權限

?????? -m:設置文件的ACL規則

?????? -M:將某個文件中設置好ACL條目設置為指定文件的ACL

?????? -x:移除某個文件中的某條ACL,不會移除mask

?????? -X:從指定文件中移除存放ACL條目的文件中的ACL

?????? -b:移除所有的ACL條目,包括mask

?????? -k:移除默認的ACL條目,默認的ACL只能對目錄使用,使用后新建的文件都會有默認的ACL條目,刪除目錄的默認ACL條目后,目錄下的文件的ACL條目不會改變

?????? -n:設置ACL條目時不更新mask,即以前的mask不會應為ACL新加的文件原來沒有的權限而修改mask

?????? -d:設置文件的默認ACL條目僅對目錄有效

?????? -R:將對目錄設置ACL條目遞歸到子目錄中,包括目錄和文件

?????? -L:會為只有符號鏈接在目錄下的文件設置ACL,R連用

?????? -P:遵循物理路徑,與R連用,如果一個文件的真實文件不在目錄下而是一個符號鏈接,那么在為這個目錄設置ACL時會跳過這種符號鏈接,即不會為符號鏈接指向的文件設置目錄的ACL條目

getfacl:查看文件的ACL

?????? -a:僅顯示文件的ACL條目

?????? -d:僅顯示默認的ACL,即ACL條目最上面的那幾條注釋

?????? -c:僅顯示文件的ACL,會顯示ACLeffective注釋,ACL條目最上面的默認ACL的注釋不會顯示

?????? -e:打印所有的有效權限

?????? -E:不打印有效權限

?????? -s:跳過只有基本條目的文件

?????? -R:遞歸查看子目的ACL,可用于備份ACL

?????? -L:可以查看符號鏈接指向的文件的ACL,與R連用

?????? -P:不會查看只有符號鏈接在目錄下的文件或目錄的ACL

?????? -n:使用表格輸出格式

?????? -p:查看文件ACL時不刪除前導的“/”

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/89393

(0)
風墨曲風墨曲
上一篇 2017-12-03
下一篇 2017-12-03

相關推薦

  • 處理文本的工具sed,vim 編輯器的使用 Linux版

    處理文本的工具sed Stream EDitor 行編輯器 sed一次處理一行的內容,處理時,將當前處理的行存儲在臨時緩沖區,稱為“模式空間”,接著用sed命令處理緩沖區中的內容,處理完成后,將緩沖區的內容送往屏幕,接著處理下一行不斷重復,直到末尾。            一次處理一行 文件&#82…

    Linux干貨 2016-08-11
  • N22-南京-修 第一周作業

    一、計算機的組成     計算機由硬件系統和軟件系統組成;         硬件系統:運算器、控制器、存儲器、輸入設備、輸出設備; (運算器、控制器):統稱為CPU,它是一個具有特定功能的芯片,通過其內部含有的微指令集對從內存中讀取來的數據…

    Linux干貨 2016-08-15
  • Linux Basics–part6

    1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; tmp]# cp /etc/rc.d/init.d/rc.sysinit /tmp/rc.sysinit tmp]# vim rc.sysinit : 進入末行模式 %s@^[[:space:]]\+@#@g 2…

    Linux干貨 2017-08-24
  • linux發展簡史

    前言 為什么要寫這么一篇文章呢?我發現我雖然知道linux的一些知識,卻不知道linux方面的歷史,所以今天寫一篇關于linux方面歷史的文章,用來總結這段時間自己所學習到的關于linux的歷史與linux的知識。關于說起linux的歷史,就不得不介紹計算機的歷史,與其他相關操作系統的一些歷史,所以本文中的會簡單介紹Linux與其他操作系統的關系。主要講li…

    Linux干貨 2017-02-16
  • rpm和yum

     1、rpm的安裝 rpm {-i|–install} [install-options] PACKAGE_FILE… -v: verbose -h: 以#顯示程序包管理執行進度 rpm -ivh PACKAGE_FILE … [install-options] …

    Linux干貨 2016-08-21
  • Centos6上安裝cobbler及cobbler常見參數詳解

    前言 Cobbler是一個自動化和簡化系統安裝的工具,通過使用網絡引導來控制和啟動安裝。Cobbler的特性包括存儲庫鏡像、Kickstart模板和連接電源管理系統。使用Cobbler之前需要先了解下PXE和Kickstart的基本原理,文章包含了Cobbler工作原理和Cobbler部署實踐兩部分內容,交叉關聯性的內容還是蠻多的,遇到報錯也不要怕,都會一步…

    Linux干貨 2016-11-11
欧美性久久久久