❶ linux下的umask、特殊許可權與ACL許可權
在了解到Linux系統上的文件目錄許可權,有時候你會發現為什麼剛創建的文件是 -rw-r--r-- 這個許可權,目錄是 drwxr-xr-x 許可權,有些是 -rwsr-xr-x ,又有些是 drwsrws--T ?這些則與umask、特殊許可權有關。
什麼是umask?umask一般是用在你初始創建一個目錄或者文件的時候賦予他們的許可權。它與chmod的效果剛好相反,umask設置的是許可權「補碼」,而chmod設置的是文件許可權碼。一般在/etc/profile、
或用戶家目錄下的.bash_profile或.profile中設置umask值。
默認的umask是0022,0022四個數字代表是賦值初始化准備丟棄的許可權。(相對應文件來說,x許可權就算沒說明出來丟棄一樣必須默認丟棄)
第一個0代表suid 丟棄的許可權;
第二個0代表本文件/目錄擁有者什麼許可權都沒丟棄;
第三個2代表本文件/目錄的用戶組丟棄了w許可權;
第四個2代表本文件/目錄的文件/目錄的用戶組丟棄了w許可權。
一般我們會這樣表示:
umask +default permission(默認許可權) =777(目錄)/666(文件)
但存在特殊情況如果把umask設為135呢?
要了解特殊許可權需對安全上下文有一個概念:
前提:進程有屬主和屬組;文件有屬主和屬組
(1) 任何一個可執行程序文件能不能啟動為進程,取決發起者對程序文件是否擁有執行許可權
(2) 啟動為進程之後,其進程的屬主為發起者,進程的屬組為發起者所屬的組
(3) 進程訪問文件時的許可權,取決於進程的發起者
(a) 進程的發起者,同文件的屬主:則應用文件屬主許可權
(b) 進程的發起者,屬於文件屬組;則應用文件屬組許可權
(c) 應用文件「其它」許可權
1.SUID 許可權僅對二進製程序(binary program)有效;
2.執行者對於該程序需要具有x 的可執行許可權;
3.本許可權僅在執行該程序的過程中有效(run-time);
4.執行者將具有該程序擁有者(owner) 的許可權。
5.SUID設置在目錄上無意義
許可權設定:
chmod u+s FILE...
chmod u-s FILE...
s 標志在文件擁有者的x 項目為SUID,那s 在群組的x 時則稱為Set GID
[root@centos7 ~]# ls -l /usr/bin/locate
-rwx--s--x. 1 root slocate 40496 Jun 10 2014 /usr/bin/locate
與SUID 不同的是,SGID 可以針對文件或目錄來設定!如果是對文件來說, SGID 有如下的功能:
-1.SGID 對二進製程序有用;
-2.程序執行者對於該程序來說,需具備x 的許可權;
-3.執行者在執行的過程中將會獲得該程序群組的支持!
[root@centos7 ~]# ll /usr/bin/locate /var/lib/mlocate/mlocate.db
-rwx--s--x. 1 root slocate 40496 Jun 10 2014 /usr/bin/locate
-rw-r-----. 1 root slocate 2349055 Jun 15 03:44 /var/lib/mlocate/mlocate.db
與SUID 非常的類似,使用xiaoming 這個賬號去執行locate 時,那xiaoming將會取得slocate 群組的支持, 因此就能夠去讀取 mlocate.db 。
SGID 也能夠用在目錄上,這也是非常常見的一種用途
目錄設定了SGID 的許可權後,他將具有如下的功能:
-1. 用戶若對於此目錄具有r 與x 的許可權時,該用戶能夠進入此目錄;
-2.用戶在此目錄下的有效群組(effective group)將會變成該目錄的群組;
-3.用途:若用戶在此目錄下具有w 的許可權(可以新建文件),則使用者所建立的新文件,該新文件的群組與此目錄的群組相同。
這個 Sticky Bit, SBIT 目前只針對目錄有效,sticky 設置在文件上無意義。SBIT 對於目錄的作用是:
-1.當用戶對於此目錄具有w, x 許可權,亦即具有寫入的許可權時;
-2.當用戶在該目錄下建立文件或目錄時,僅有自己與root 才有權力刪除該文件
SUID/SGID/SBIT 許可權設定
-rwSrwSrwT 1 root root 0 Jun 16 02:53 test
設定許可權成為 -rws--x--x 的模樣:
[root@centos7 tmp]# chmod u=rwxs,go=x test; ls -l test
-rws--x--x 1 root root 0 Jun 16 02:53 test
承上,加上 SGID 與 SBIT 在上述的文件許可權中!
[root@centos7 tmp]# chmod g+s,o+t test; ls -l test
-rws--s--t 1 root root 0 Jun 16 02:53 test
1】ACL 是Access Control List 的縮寫,主要的目的是在提供傳統的owner,group,others 的read,write,execute 許可權之外的細部許可權設定。ACL 可以針對單一使用者,單一文件或目錄來進行
ACL 主要可以針以下來控制許可權呢:
1.使用者 (user):可以針對使用者來設定許可權;
2.群組 (group):針對群組為對象來設定其許可權;
3.默認屬性(mask):還可以針對在該目錄下在建立新文件/目錄時,規范新數據的默認許可權;
及1.ACL:Access Control List,實現靈活的許可權管理;2.CentOS7默認創建的xfs和ext4文件系統具有ACL功能;3.CentOS7之前版本,默認手工創建的ext4文件系統無ACL功能,需手動增加tune2fs –o acl/dev/sdb1
mount –o acl/dev/sdb1 /mnt/test
4.ACL生效順序:所有者,自定義用戶,自定義組,其他人
為多用戶或者組的文件和目錄賦予訪問許可權rwx
2】ACL 的設定技巧: getfacl, setfacl
-x :刪除後續的 acl 參數,不可與 -m 合用;
-b :移除『所有的』 ACL 設定參數;
-k :移除『預設的』 ACL 參數,
-R :遞歸設定 acl ,亦即包括次目錄都會被設定起來;
-d :設定『預設 acl 參數』的意思!只對目錄有效,在該目錄新建的數據會引用此默認值
例:[root@centos7 ~]# touch acl_test1
[root@centos7 ~]# ll acl_test1
-rw-r--r--. 1 root root 0 Jul 21 17:33 acl_test1
[root@centos7 ~]# setfacl -m u:xiaoming:rx acl_test1
[root@centos7 ~]# ll acl_test1
-rw-r-xr--+ 1 root root 0 Jul 21 17:33 acl_test1
[root@centos7 ~]# setfacl -m u::rwx acl_test1
[root@centos7 ~]# ll acl_test1
-rwxr-xr--+ 1 root root 0 Jul 21 17:33 acl_test1
設定值中的 u 後面無使用者列表,代表設定該文件擁有者
2.getfacl 指令用法余setfacl一樣
例:[root@centos7 ~]# getfacl acl_test1
file: acl_test1 <==說明檔名而已!
owner: root <==說明此文件的擁有者,亦即 ls -l 看到的第三使用者欄位
group: root <==此文件的所屬群組,亦即 ls -l 看到的第四群組欄位
user::rwx <==使用者列表欄是空的,代表文件擁有者的許可權
user:xiaoming:r-x <==針對xiaoming 的許可權設定為 rx ,與擁有者並不同!
group::r-- <==針對文件群組的許可權設定僅有 r
mask::r-x <==此文件預設的有效許可權 (mask)
other::r--
3】特定的單一群組的許可權設定:『g:群組名:許可權』
4】主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 參數。但是tar等常見的備份工具是不會保留目錄和文件的ACL信息
getfacl -R /tmp/dir1 > acl.txt
setfacl -R -b /tmp/dir1
清除dir目錄的ACL許可權
setfacl -R --set-file=acl.txt /tmp/dir1
setfacl --restore acl.txt
getfacl -R /tmp/dir1
❷ linux的許可權掩碼
就是umask ,umask是控制生成文件的預設屬性。
1.一般來說,文件的默認許可權是666,目錄的回許可權是777。(我認為是答在umask 為000的情況下)
2.如果umask設置為002,則新增文件的許可權為664,目錄的許可權是775。
一般默認為 022
目錄是777-umask(022)就是新建一個目錄許可權為755
文件是666-umask(022)就是新建一個文件默認許可權為644
但是不管umask怎樣設置,文件都不會得到execute許可權。
對於umask來說可以設置4為的比如:0022 但是有效的設定值只有後三位數。
❸ 如何用數字表示Linux目錄或文件的許可權
目錄文件的許可權設置。對目錄文件來說,「可讀」表示能夠讀取目錄內的文件列表;「可寫」表示能夠在目錄內新增、刪除、重命名文件;而「可執行」則表示能夠進入該目錄。
文件的讀、寫、執行許可權可以簡寫為rwx,亦可分別用數字4、2、1來表示,文件所有者,所屬組及其他用戶許可權之間無關聯,如表5-5所示。
表1-1 文件許可權的字元與數字表示
圖1-2通過ls命令查看到的文件屬性信息
在圖1-2中,包含了文件的類型、訪問許可權、所有者(屬主)、所屬組(屬組)、佔用的磁碟大小、修改時間和文件名稱等信息。通過分析可知,該文件的類型為普通文件,所有者許可權為可讀、可寫(rw-),所屬組許可權為可讀(r--),除此以外的其他人也只有可讀許可權(r--),文件的磁碟佔用大小是34298位元組,最近一次的修改時間為4月2日的凌晨23分,文件的名稱為install.log。
❹ linux文件或目錄中,許可權後面的數字1或2是什麼意思
Linux文件許可權字元串後面的數字是表示這個文件的硬連接文件數目,如果是1就表示這個文件沒有硬連接文件,如果是2就表示這個文件的硬連接是1個,如果是3就表示這個文件的硬連接是2個,如果是4就表示這個文件的硬連接數目是3個,以此類推。
❺ linux系統中無法修改文件許可權
八進制數:645。文件的屬性是:所有者有讀寫許可權,組有讀取許可權,其他人有讀取和執行許可權。
其中r:讀許可權,w:寫許可權,x:執行。屬於:U:所有者,G:屬群,O:其他。Rw-r-r-x 9位,分為三段,每段三位,後面是R、W、X許可權,三段分別是所有者、組、其他三類許可權。
數字也可以表示許可權,R用4表示,W用2表示,X用1表示,rwx用二進製表示,如果你有許可權,用1代替0。具體來說,只要對應的位有許可權,二進制為1,那麼這三位組合起來,然後數字就可以計算出二進制到十進制的許可權。
擴展信息:
許可權規定:
X(X許可權的特殊形式)的功能,為目錄增加X許可權。
2.對於文件:沒有執行的文件不會增加X許可權。任何三種有執行許可權的人也會增加X許可權。
3.目錄許可權的含義:
只讀:只能查看目錄文件列表,不能訪問文件,不能cd目錄(查看,刪除)。僅執行:可以通過cd訪問目錄中的文件,而不是ls。執行是基本許可權。寫許可權:只有X許可權才有效。新目錄:777-umask值是新目錄的默認許可權;管理員的umask是022;普通用戶的umask是002。
來源:搜狗網路-文件系統許可權
❻ linux下文件夾許可權設置
1、Linux許可權說明
linux的文件夾也有三種許可權分別是:
r(Read 讀取):對文件有讀取文件內容的許可權(cat指令);對目錄有查看目錄下內容的許可權(ls命令)。
x(eXecute 執行):對文件有執行文件的許可權(./指令);對目錄該有進入目錄的許可權(cd命令)。
w(Write 寫入):對文件有增加、刪除、修改文件內容的許可權;對目錄有增加、刪除、修改目錄下內容的許可權。w 是可以在目錄下創建、修改、刪除文件,不僅可以修改自己的文件也可以修改別人的文件,因此增加了一個t 許可權對 x 許可權進行了限制,表示只可以修改自己的文件。
umask 命令可以設置系統的許可權掩碼,即可以控制文件夾、文件生成時的默認許可權。文件夾的默認許可權是755、文件的許可權644.root 帳號的umask是022,而普通用戶的umask是002,這代表root用戶的文件對於其他用戶來說默認的許可權更少。文件的默認許可權是用666減umask,而文件夾的默認許可權是用777減umask,這樣的話相當於無論何時生成的文件的默認許可權都是不可能有運行的許可權。umask的設置可以在配置文件 /etc/bashrc 中進行設置、更改。
2、改變許可權
改變擁有者chown(change owner):
chown yly tmp //改變文件tmp的擁有者為yly用戶
chown -R yly:yly tmp //改變tmp文件及其下的文件和子目錄的許可權為yly用戶:yly組
說明:要改變的文件擁有者,也就是用戶名必須存在於/etc/passwd文件中,否則就會顯示錯誤。另外用戶密碼
是保存在/etc/shadow文件夾中的。
改變群組chgrp(change group):
chgrp yly tmp //改變tmp文件的群組為yly組
說明:要改變的目標群組名稱必須在於/etc/group文件中存在,否則就會顯示錯誤。
注意:當使用cp指令復制文件時,被復制的文件擁有者和群組仍沒有改變,此時需要使用以上指令進行設置。
改變文件許可權chmod
❼ umask設置為022,預設的創建文件的許可權是什麼
unmask制定了新文件創建時的許可權,unmask是個8進制的數字。root的預設unmask是022,一般用戶是002。如果用戶的umask為000,則創建的文件許可權為666,目錄許可權為777,運行umask命令可以查看用戶自己的umask值。
當我們登錄系統之後創建一個文件總是有一個默認許可權的,那麼這個許可權是怎麼來的呢?這就是umask乾的事情。umask設置了用戶創建文件的默認 許可權,它與chmod的效果剛好相反,umask設置的是許可權"補碼",而chmod設置的是文件許可權碼。一般可在/etc/profile、/etc/bashrc、$ [HOME]/.bash_profile、$[HOME]/.profile或$[HOME]/.bashrc中設置umask值。具體取決於Linux發行版,比如Fedora19下要更改自己的umask值,在$[HOME]/.profile或$[HOME]/.bash_profile下的增加umask的值覆蓋不了/etc/profile中的配置值的,必須在$[HOME]/.bashrc下增加umask值才可以永久定義自己的umask值。
❽ linux的umask命令
這是Linux中的umask函數
我們創建文件的默認許可權是怎麼來的?如何改變這個默認許可權呢?
umask是什麼?
當我們登錄系統之後創建一個文件總是有一個默認許可權的,那麼這個許可權是怎麼來的呢?這就是umask乾的事情。umask設置了用戶創建文件的默認許可權,它與chmod的效果剛好相反,umask設置的是許可權「補碼」,而chmod設置的是文件許可權碼。一般在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中設置umask值。
如何計算umask值?
umask命令允許你設定文件創建時的預設模式,對應每一類用戶(文件屬主、同組用戶、其他用戶)存在一個相應的umask值中的數字。對於文件來說,這一數字的最大值分別是6。系統不允許你在創建一個文本文件時就賦予它執行許可權,必須在創建後用chmod命令增加這一許可權。目錄則允許設置執行許可權,這樣針對目錄來說,umask中各個數字最大可以到7。
該命令的一般形式為:umask nnn
其中nnn為umask置000 - 777。
我們只要記住u m a s k是從許可權中「拿走」相應的位即可。下表是umask值與許可權的對照表:
umask 文件 目錄
--------------------
0 6 7
1 6 6
2 4 5
3 4 4
4 2 3
5 2 2
6 0 1
7 0 0
--------------------
如:umask值為022,則默認目錄許可權為755,默認文件許可權為644。