Linux文件系統上的權限

Linux文件系統上的權限

首先我們來看一下如何修改文件的屬主和屬組

修改文件的屬主:chown

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

用法

OWNER修改屬主

OWNER:GROUP修改屬主:屬組

:GROUP修改屬組

命令中的冒號可以用.替換

-R:遞歸

chowen [OPTION]… –reference=RFILE FILE…

參考RFILE文件的權限,將FILE文件的權限修改為與RFILE文件權限相同

修改文件的屬組:chgrp

chgrp[OPTION]… GROUP FILE…

chgrp[OPTION]… –reference=RFILE FILE…

-R:遞歸

下面我們來說一下在Linux系統中,文件的權限

文件系統中文件的權限是指文件系統上文件和目錄的權限,文件系統上的權限主要針對三類對象進行定義:

owner:屬主,u

group:屬組,g

other:其他,o

每個文件都針對每類訪問者定義了三種權限:

r:readable

w:writable

x:excutable

權限針對文件和目錄還有不同的含義:

文件:

r:可使用文件查看類工具獲取其內容

w:可修改其內容

x:可以把此文件提請內核啟動為一個進程

目錄:

r:可以使用ls查看此目錄中文件列表

w:可以在此目錄中創建文件,也可以刪除此目錄中的文件

x:可以使用ls-l查看此目錄中文件列表,可以cd進入此目錄

這里,我們補充一個X

X:只給目錄權限,不給文件x權限

這里,非常有必要說一下Linux文件系統中,權限應用模型:

以ls -l /etc/issue為例

-rw-r–r–. 1 root root 112 Jul 25 09:24 /etc/issue

然后執行 cat /etc/issue

1.首先看命令的發起者是否是文件的屬主既左三位的權限,如果是則應用左三位的權限,否則

2.查看命令的發起者是否是文件的屬組既中三位的權限,如果是則應用中三位的權限,否則

3.是使用右三位的權限

上面講到我們可以用rwx來表示權限,這里我們講一下另外一種表示方法

權限、二進制、八進制表示對應的表示方法

—000 0

–x 001 1

-w-010 2

-wx 011 3

r–100 4

r-x 101 5

rw-110 6

rwx 111 7

例如:

640: rw-r—–

rwxr-xr-x: 755

知道什么是文件權限,我們來說一下如何修改文件權限

chmod

chmod[OPTION]… OCTAL-MODE FILE…

    -R: 遞歸修改權限

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

    MODE:

修改一類用戶的所有權限:

u= g= o= ug= a= u=,g=

修改一類用戶某位或某些位權限

u+ u-g+ g-o+ o-a+ a-+ –

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

參考RFILE文件的權限,將FILE的修改為同RFILE;

注意:僅管理員可修改文件的屬主和屬組;

文件或目錄創建時的遮罩碼:umask

umask:文件的權限反向掩碼,遮罩碼;

    文件:

    666-umask

    目錄:

    777-umask

    注意:之所以文件用666去減,表示文件默認不能擁有執行權限:如果減得的結果中有執行權限,則需要將其加1;

    umask:023

    666-023=644

    777-023=754

    umask命令:

    umask:查看當前umask

    umask MASK:設置umask

    新建DIR權限: 777-umask

?

非特權用戶umask是002

root的umask是022

umask–S 模式方式顯示

umask–p 輸出可被調用

全局設置:/etc/bashrc用戶設置:~/.bashrc

    注意:此類設定僅對當前shell進程有效;

Linux文件系統上的特殊權限

在Linux文件系統上有三個特殊權限:SUID,GUID,Sticky

首先我們再次強調一下Linux權限模型是由mode和owner組成

mode:rwx

owner:ugo

這里我們有必要說一下安全上下文:

前提:進程有屬主和屬組;文件有屬主和屬組

1) 任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限

2) 啟動為進程之后,其進程的屬主為發起者;進程的屬組為發起者所屬的組

3) 進程訪問文件時的權限,取決于進程的發起者

a) 進程的發起者,同文件的屬主:則應用文件屬主權限

b) 進程的發起者,屬于文件屬組;則應用文件屬組權限

c) 應用文件“其它”權限

SUID:Set UID

前提:此類文件為有可執行權限的命令

任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限

啟動為進程之后,其進程的屬主為原程序文件的屬主(此進程的有效身份不是發起者,而是命令文件自身的屬主)

SUID只對二進制可執行程序有效

SUID設置在目錄上無意義

權限設定:

chmodu+s FILE…

chmodu-s FILE…

使用ls-l查看時,此s可能顯示為大寫或小寫兩種形式之一;

屬主原有執行權限時,顯示為小寫;

屬主原無執行權限時,顯示為大寫;

SGID:Set GID

可執行文件上SGID權限:(當SGID作用于文件時)

任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限

啟動為進程之后,其進程的屬主為原程序文件的屬組

權限設定:

chmodg+s FILE…

chmodg-s FILE…

目錄上的SGID權限:(當SGID作用于目錄時)

默認情況下,用戶創建文件時,其屬組為此用戶所屬的主組

一旦某目錄被設定了SGID,則對此目錄有寫權限的用戶在此目錄中創建的文件所屬的組為此目錄的屬組

通常用于創建一個協作目錄

權限設定:

chmodg+sDIR…

chmodg-s DIR…

Sticky:沾滯位

具有寫權限的目錄通常用戶可以刪除該目錄中的任何文件,無論該文件的權限或擁有權

在目錄設置Sticky 位,只有文件的所有者或root可以刪除該文件

sticky 設置在文件上無意義

權限設定:

chmodo+t DIR…

chmodo-t DIR…

例如:

?ls-ld/tmpdrwxrwxrwt12rootroot4096Nov215:44/tmp

剛才在前面我們講了權限數字法,同樣,

三個特殊位也組成一組權限,既suidsgidsticky,可表示為;

SUID SGID STICKY

000 0

001 1

010 2

011 3

100 4

101 5

110 6

111 7

?

例:chmod4777 /tmp/a.txt

權限位映射

SUID: user,占據屬主的執行權限位

s: 屬主擁有x權限

S:屬主沒有x權限

SGID: group,占據屬組的執行權限位

s: group擁有x權限

S:group沒有x權限

Sticky: other,占據other的執行權限位

t: other擁有x權限

T:other沒有x權限

設定文件特定屬性:

chattr +i 不能刪除,改名,更改

chattr +a 只能增加

lsattr 顯示特定屬性

訪問控制列表

ACL:Access Control List,實現靈活的權限管理

除了文件的所有者,所屬組和其它人,可以對更多的用戶設置權限

CentOS7.0默認創建的xfs和ext4文件系統有ACL功能。

CentOS7.X之前版本,默認手工創建的ext4文件系統無ACL功能。需手動增加:

tune2fs –o acl/dev/sdb1

mount –o acl/dev/sdb1 /mnt

ACL生效順序:所有者,自定義用戶,自定義組,其他人

為多用戶或者組的文件和目錄賦予訪問權限rwx

mount -o acl /directory

getfacl file |directory

setfacl -m u:wang:rwx file|directory

setfacl -Rm g:sales:rwX directory

setfacl -M file.acl file|directory

setfacl -m g:salesgroup:rw file| directory

setfacl -m d:u:wang:rx directory

setfacl -x u:wang file |directory

setfacl -X file.acl directory

ACL文件上的group權限是mask 值(自定義用戶,自定義組,擁有組的最大權限),而非傳統的組權限

getfacl可看到特殊權限:flags

默認ACL權限給了x,文件也不會繼承x權限。

base ACL 不能刪除

setfacl-k dir 刪除默認ACL權限

setfacl-b file1清除所有ACL權限

getfaclfile1 | setfacl–set-file=-file2 復制file1的acl權限給file2

mask只影響除所有者和other的之外的人和組的最大權限

Mask需要與用戶的權限進行邏輯與運算后,才能變成有限的權限(Effective Permission)

用戶或組的設置必須存在于mask權限設定范圍內才會生效。setfacl-m mask::rxfile

–set選項會把原有的ACL項都刪除,用新的替代,需要注意的是一定要包含UGO的設置,不能象-m一樣只是添加ACL就可以.如:

setfacl –set u::rw,u:wang:rw,g::r,o::-file1

備份和恢復ACL

主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 參數。但是tar等常見的備份工具是不會保留目錄和文件的ACL信息

#getfacl -R /tmp/dir1 > acl.txt

#setfacl -R -b /tmp/dir1

#setfacl -R –set-file=acl.txt /tmp/dir1

#getfacl -R /tmp/dir1

原創文章,作者:song_linux,如若轉載,請注明出處:http://www.www58058.com/27500

(0)
song_linuxsong_linux
上一篇 2016-08-04 14:40
下一篇 2016-08-04 14:40

相關推薦

  • 文本查看類命令

    文本查看相關的命令:1. ?cat – 串連文件,并以標準輸出顯示語法:cat [OPTION]… [FILE]… 常用選項 選項 | 含義—— | ——-n | 在顯示文件內容時打印行號示例:~]# cat -n /etc/rc.d/init.d/functions顯示/e…

    2017-09-07
  • 安裝RPM包 rpm與yum工具的使用

    1.認識yum與rpm工具.                 在windows下安裝一個軟件很輕松,只要雙擊.exe的文件,安裝提示連續 “下一步” 即可,然而linux系統下安裝一個軟件似乎并不那么輕松了,因為我們不是在圖形界面下。所以你要學會如何在linux下安裝一…

    Linux干貨 2016-08-26
  • N26-第七周作業-邢巖

    馬哥門徒-N26-邢巖      今天看了一本書《運維前線:一線運維專家的運維方法、技巧與實踐》,有一張運維全平臺規劃體系如下:      看完這張圖,瞬間覺得自動化運維真的是很龐大精深,我只是在運維這片海洋的岸邊,剛剛邁入一只腳步而已,究竟什么是山,什么是水,還不得而知。就讓我化身一條小魚,在這片…

    2017-03-11
  • 馬哥教育網絡班21期+第6周課程練習

    請詳細總結vim編輯器的使用并完成以下練習題 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; [root@localhost ~]#cp /etc/rc.d/rc.sysinit /tmp/ [root@localhost&nbs…

    Linux干貨 2016-07-29
  • 馬哥網絡教育班21期+第一周博客作業

    1、描述計算機的組成及其功能。   硬件:     CPU(運算器、控制器、一緩存(L1)、二級緩存(L2)):       運算器主要用來進行算數運算以及邏輯運算。       控制器主要是用來協調       一級緩存和二級緩存主要是用…

    Linux干貨 2016-07-12
  • shell腳本之函數相關

       本節主要是作業和select 與case的相關 一、作業 1、斐波那契數列又稱黃金分割數列,因數學家列昂納多·斐波那契以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:0、1、1、2、3、5、8、13、21、34、……,斐波納契數列以如下被以遞歸的方法定義:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-…

    Linux干貨 2016-08-22
欧美性久久久久