今天來講講linux里面權限的問題,在linux系統中,有這么幾類權限,r,w,x,s,t這么幾類權限,系統中為什么要有權限這個東西
呢,linux一切皆文件,有些文件不想讓某些人看到,那么這個時候就需要設置文件的訪問的權限了,文件的擁有者一般都是有權力修改刪除文件的,但擁有者
以外的人未必就能刪除修改了,這是為了防止文件被陌生人破壞了,好說了這么多,今天來講講linux的權限管理相關的知識。
一個文件的信息有這么機箱,文件的屬主,屬組,文件引用的次數,文件大小,文件的創建時間和文件名
那么有些文件的存在那我們怎么去改變文件的屬性呢?首先我們來更改文件的所有者,和屬組的信息,下面會介紹到兩個命令chown,chgrp
修改文件的屬主chown,這個命令的目的是為了改變某一個文件的擁有者,有這么個場景,企業中有個人離職,那么新來的同事來接手這份工作,那么這時候我們就需要將文件的屬主修改,命令的具體用法如下:
chown [OPTION]… [OWNER][:[GROUP]] FILE…修改文件的屬主
owner:代表的就是用戶
chown hadoop /tmp/passwd
其實這個chown這個命令也是可以同時更改屬主和屬組的,中間用:分隔或者用"."分隔
owner:group或者owner.group
chown hadoop:xks /tmp/issue
-R:遞歸,當我們想改某個目錄的屬主時,同時也想改目錄下的某些文件或目錄就需要用到-R來遞歸了
chown -R hadoop /tmp/testdir/
還有一種用法如上所述,根據某個文件的權限來給目標文件設置相同的權限,也就是根據某個文件的權限為模版來給目標文件設置相同的權限,用法如下:
chown [OPTION]… –reference=RFILE FILE…
chown –reference=/etc/shadow /tmp/passwd
chgrp修改文件的屬組,也就是修改文件的屬組,有些用戶已經在admins組里了,當那些用戶對這個文件沒有任何權限,但是他們想訪問這個文件,這時候改變文件的屬組為那些用戶所屬的組,那么這些用戶就可以訪問文件了
chgrp [OPTION]… GROUP FILE…
chgrp admins /tmp/passwd
chgrp和chown一樣也有-R選項這里我就不詳細闡述了用法如下
chgrp -R groupname filename
chgrp [OPTION]… –reference=RFILE FILE…這個用法也是跟chown一樣
文件權限
在linux系統中文件的權限主要針對三類對象進行定義的分別是owner:屬主,u;group:屬組,g;other:其他,o,一共有9個權限位,
三個一組,分別對應的屬主,屬組,其他人,如:rwxrw—-表示的就是文件的屬主擁有讀寫執行的權限,屬組擁有讀寫的權限,而其他人沒有任何權限
每個文件針對每類訪問者都定義了三種權限
r:readable,只讀
w:writable:可寫
x:excutable:可執行
這三種權限對文件和目錄分別有不同的意義,內容如下:
文件:
r:可以利用cat等文件查看命令,來查看文件的內容
w:可以編輯或刪除此文件
x:可以在命令提示符下當做命令提交給內核運行
目錄:
r:可以對此目錄執行ls以列出目錄下的文件,一般和x權限一起使用
w:可以在此目錄下創建、刪除文件,也需要配合x權限一起使用
x:可以使用cd命令切換進目錄,也可以使用ls -l查看目錄下文件的詳細信息
注意:在linux系統中,對于文件而言可以單個權限出現,但對于目錄而言吧,一般配合x執行權限來會用,否則沒有意義。
文件權限操作
文件權限可以會用英文字母r,w,x來表示,也可以使用八進制的數字來表示,
r:4
w:2
x:1
rw-
如圖
八進制數字表示
— 000 0
—x 001 1
-w- 010 2
-wx 011 3
r– 100 4
r-x 101 5
rw- 110 6
rwx 111 7
chmod文件權限的修改,使用此命令可以修改文件的屬主,屬組,以及其他人的權限
chmod [OPTION]… MODE[,MODE]… FILE…
修改三類用戶的權限
a+,a-, +, –
修改某類用戶或某些類用戶權限
u=, g= ,o=
修改某類用戶某位或某些位的權限
u+, u-,g+,g-,o+,o-
chmod [OPTION]… OCTAL-MODE FILE…
chmod a+x /tmp/passwd,chmod a-r /tmp/passwd ,chmod +x /tmp/passwd,chmod -w /tmp/passwd,經過試驗在+w權限的時候三類卻不是全部+w權限,而只是屬主+w
chmod [OPTION]… –reference=RFILE FILE…用法同chown用法一樣
chmod –reference=/etc/shadow /tmp/passwd
新建文件和目錄的默認權限
umask值可以用來保留在創建文件的權限,在linux系統新建文件新建文件的默認權限是666,新建目錄的權限是777,但文件最終的實際權限是要減去umask值的,umask 從最大權限中屏蔽相應的權限,從而得出默認權限
root的umask是022,而非特權用戶是002,我們知道了umask之后,那么我們怎么去查看umask的值呢
umask:直接在命令行敲這條命令,會顯示當前的umask值,如果umask 后面跟了一個數值那么就是臨時設置umask值
umask 027
umask -S模式方式顯示,就是以具體的權限來顯示如u=rwx,g=rx,o=
umask -p 輸出可被調用
我們如果想要設置umask永久生效那么我們只能去配置文件里面去設置,分別有兩個配置文件/etc/profile全局設置,對所有用戶都會生效, 用戶設置:~/.bashrc只針對某類用戶生效
特殊權限
特殊權限有三類:SUID,SGID,Sticky
三種常用的權限:r,w,x user ,group,other
安全上下文
有一個前提進程必須要有屬主和屬組,文件有屬主和屬組,在linux里面遵循這么一個法則,
任何一個可執行程序文件能否啟動為進程取決于發起者對程序文件是否有執行權限
啟動為進程之后,其進程的屬主為發起者;進程的屬組為發起者所屬的組
進程訪問文件的權限時,取決于進程的發起者
進程的發起者,同文件的屬主:則應用文件屬主權限
進程的發起者,屬于文件的屬組;則應用文件屬組權限
如果前兩者都不是那么就會應用其他人的權限
SUID
任意一個可執行程序文件能否啟動為進程,取決發起者對程序文件是否擁有執行權限,舉個例子,我們想查看某個文件的內容,那我們可以使用cat名,cat命
令的路徑,它的權限是-rwxr-xr-x. 1 root root 48568 May 11 16:59
/bin/cat,文件的屬主root對cat有執行權限那么root就可以使用cat命令,文件屬組和其他人都有權限,那么這些人都能執行cat這個命
令
啟動為進程之后,期進程的屬主為原程序文件的屬主
SUID只對二進制可執行程序有效,SUID設置在目錄上無意義,一般目錄都會有執行權限,前面講到過。那怎樣來設定SUID呢?可以使用chmod命令
chmod u+s filename 添加SUID權限
chmod u-s filename 刪除SUID權限
chmod u+s /tmp/passwd
chmod u-s /tmp/passwd
如果文件的屬主沒有執行權限那么,添加SUID之后屬主的x權限位會顯示為S,相反,如果有執行權限,那么會顯示s
SGID
任何一個可執行程序文件能否否啟動為程序:取決發起者對程序有沒有執行權限
啟動為進程之后,其進程的屬主為原程序文件的屬組
權限的設定方法
chmod g+s filename
chmod g-s filename
如果文件的屬組沒有執行權限那么,添加SUID之后屬主的x權限位會顯示為S,相反,如果有執行權限,那么會顯示s
默認情況下,用戶創建文件時,其屬組為此用戶所屬的主組一旦某目錄被設定了SGID,則對此目錄有寫權限的用戶在此目錄中創建的文件所屬的組為此目錄的屬組通常用于創建一個公共目錄,那么是怎樣設定的呢,設定方法如下:
chmod -R g+s directory
chmod -R g-s directory
sticky權限
具有寫權限的目錄通常用戶可以刪除該目錄中的任何文件,大家都可以同時往里面寫數據,但是這樣就有個問題,可以寫就寫的權限了,那么就可以刪除文件了,自
己的文件刪除了無所謂,如果不小心把別人的文件刪了豈不是亂套了,所以這時候就要有一套機制來顯示只有root用戶和文件的屬主才能刪除自己的文件或者目
錄,無論該文件的權限或擁有權在目錄設置Sticky 位,只有文件的所有者或root可以刪除該文件,sticky
設置在文件上無意義,因為文件本身就只有root和屬主才能刪除,這樣做多此一舉。
權限設定方法
chmod o+t directory
chmod o-t directory
特殊權限八進制數字表示法
SUID SGID STICKY
000 0 沒有任何特殊權限
001 1 只有sticky權限
010 2 有SGID權限
011 3 有SGID和sticky權限
100 4 有SUID權限
101 5 有SUID和sticky權限
110 6 有SUID和SGID權限
111 7 三者都有
比如:chmod 6755 /tmp/passwd表示的意思就是將/tmp/passwd設置有SUID,SGID并且屬主有讀寫執行的權限,屬組有讀執行的權限,其他人有讀執行的權限。
如果文件的屬主沒有執行權限那么,添加sticky之后其他人的x權限位會顯示為T,相反,如果有執行權限,那么會顯示t
設定特定屬性
chattr +i 不能刪除,改名,更改內容,就算root也不能修改
chattr -i 取消權限設定
chattr +a(append)只能追加內容
訪問控制列表
ACL(Access Control List),實現靈活的權限管理,除了文件所有者,所屬組和其它人,可以對更多的用戶設置權限,centos7是默認創建的文件系統是支持ACL的功能,之前的6,5是默認不支持的需要手動開啟,方法如下:
tune2fs -o acl /dev/sdb1
mount -o acl /dev/sdb1 /media
ACL生效的順序:所有者,自定義用戶,自定義用戶,其他人
getfacl查看文件的訪問控制列表
getfacl filename
setfacl設置訪問控制列表
setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file …
-m:設定訪問控制權限
setfacl -m u:hadoop:rwx filename
-x:取消訪問控制權限
setfacl -x u:hadoop filename 需要強調是再取消訪問控制權限時權限格式后面不需要帶權限
-M:將權限的格式寫到文件里面使用-M選項來添加訪問控制權限,文件內容格式u:hadoop:rwx
setfacl -M 1.acl filename
-X:與-M選項相反的意思,取消訪問控制權限,文件內容格式u:hadoop
setfacl -X 2.acl filename
-Rm:遞歸,給目錄下的文件及目錄設置訪問控制權限
setfacl -Rm u:hadoop:rwx directory
setfacl -m d:u:wang:rx directory 設置某個目錄下新建文件是默認wang用戶就有rx權限
setfacl-k directory 刪除默認ACL權限
setfacl-b filename 清除所有ACL權限
mask只影響除所有者和other的之外的人和組的最大權限,mask需要與用戶的權限進行邏輯與運算后,才能變成有限的權限(Effective Permission)
setfacl -m mask::rx file
原創文章,作者:fszxxxks,如若轉載,請注明出處:http://www.www58058.com/27593