每個用戶在登錄linux系統後,都會創建屬於自己的文件,也都會有屬於個人隱私的資料等,而Linux是一個多任務,多用戶的系統,註定了會有很多用戶登錄使用,linux的每個文件也都有很多屬性,爲了保證用戶個人隱私或者公司不同部門間的數據安全,我們必須爲每個文件設置其應有的權限設置,就像現實中的張三不能隨便進入李四的家,更不能隨便把李四家的車開出去賣了一樣。
在Linux中,將使用系統資源的用戶分爲4類:超級用戶、文件或目錄的屬主、屬主的同組用戶以及其他用戶。在linux系統中,用戶的系統賬號默認保存在/etc/passwd文件中,用戶的密碼文件保存在/etc/shadow文件中,用戶的組信息保存在/etc/group文件中。所以這三個文件絕對不能隨意修改或者刪除。當然一般情況下,普通用戶默認也不具備這樣的權限,但是就如生活中一樣,總有些某些“萬能的天神”可以隨意的對任何管轄範圍內的人民封其口舌,閉其眼目、限制其自由一樣,Linux系統中也有這樣一位“天神”,那就是root,他基本上可以爲所欲爲,不受他人控制。所以使用root身份時,一定要慎之又慎!
要了解linux的文件屬性,我們可以先使用ls -l命令查看下文件的權限。
[root@xlogin data]# ls -l authority -rw-r--r--. 1 root root 6 12月 13 17:40 authority 文件屬性 文件被硬鏈接的次數 文件擁有者 文件所屬用戶組 文件大小 文件最近一次的修改日期 文件名
當一個用戶或進程訪問一個文件時,如果他的用戶ID或進程ID屬主與文件的屬主相同,則他具有文件屬主的權限;
當不滿足屬主條件時,則檢查進程的屬主是否屬於文件的屬組;如果滿足屬組條件,則應用屬組權限;
如果當屬主和屬組都不滿足時,就只能應用other用戶的權限了!
這三個一組共9個字符,代表的意義如下:
r(Read,讀取):對文件而言,具有讀取文件內容的權限;對目錄來說,具有瀏覽目錄的權限。
w(Write,寫入):對文件而言,具有新增、修改文件內容的權限;對目錄來說,具有刪除、移動目錄內文件的權限。
x(excute,執行):對文件而言,具有執行文件的權限;對目錄了來說該用戶具有進入目錄的權限。
-:表示不具有該項權限。
一、更改操作權限(chmod)
系統管理員和文件屬主可以根據需要來設置文件的權限,有兩種設置方法:文字設定法和數值設定法。
(1)文字設定法
chomd的文字設定法的格式爲:chmod [ugoa][+-=][rwx],[ugoa][+-=][rwx] File_Name
第1個選項表示要賦予權限的用戶,具體說明如下:
u:屬主
g:所屬組用戶
o:其他用戶
a:所有用戶
第2個選項表示要進行的操作,具體說明如下:
+:增加權限
-:刪除權限
=:分配權限,同時將原有權限刪除
第3個選項是要分配的權限,具體說明如下:
r/x/w:允許讀取/寫入/執行
(2)數值設定法
chmod的數值設定法的格式爲:chmod A1B2C3 File_Name
其中A1、B2、C3分別代表屬主的權限、組用戶的權限和其他用戶的權限,這三個選項都是八進制數字。
權限組合機制:
--- 000 0 --x 001 1 -w- 010 2 -wx 011 3 r-- 100 4 r-x 101 5 rw- 110 6 rwx 111 7
[root@xlogin data]# ll 總用量 4 ----------. 1 root root 6 12月 13 17:40 authority [root@xlogin data]# chmod 124 authority [root@xlogin data]# ll 總用量 4 ---x-w-r--. 1 root root 6 12月 13 17:40 authority [root@xlogin data]# chmod 600 authority [root@xlogin data]# ll 總用量 4 -rw-------. 1 root root 6 12月 13 17:40 authority
注意:如果想一次性修改某個目錄下所有文件的權限,包括子目錄中的文件權限也要修改,可以使用-R參數,表示使用遞歸修改處理目錄下全部文件的權限;
普通用戶僅能修改屬主爲自己的那些文件的權限。
[root@xlogin /]# ll data/ 總用量 4 -rw-------. 1 root root 6 12月 13 17:40 authority drwxr-xr-x. 2 root root 17 12月 13 20:51 backup [root@xlogin /]# ll data/backup/ 總用量 0 ---x------. 1 root root 0 12月 13 20:51 test [root@xlogin /]# chmod -R 644 /data/ [root@xlogin /]# ll data/ 總用量 4 -rw-r--r--. 1 root root 6 12月 13 17:40 authority drw-r--r--. 2 root root 17 12月 13 20:51 backup [root@xlogin /]# ll /data/backup/ 總用量 0 -rw-r--r--. 1 root root 0 12月 13 20:51 test
二、更改文件屬主、屬組(chown)
改變文件的屬主和屬組使用用chown命令。
命令格式爲:chown [-R]
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
[root@xlogin data]# ll 總用量 8 -rw-r--r--. 1 root root 6 12月 13 17:40 authority -rw-r--r--. 1 root root 6 12月 13 22:01 linux ---x-w-r--. 1 root root 5 12月 13 21:56 test [root@xlogin data]# chown xlogin authority [root@xlogin data]# chown magedu.xlogin test [root@xlogin data]# ll 總用量 12 -rw-r--r--. 1 xlogin root 6 12月 13 17:40 authority -rw-r--r--. 1 root root 6 12月 13 22:01 linux ---x-w-r--. 1 magedu xlogin 5 12月 13 21:56 test [root@xlogin data]# chown --reference=/data/authority linux [root@xlogin data]# ll 總用量 12 -rw-r--r--. 1 xlogin root 6 12月 13 17:40 authority -rw-r--r--. 1 xlogin root 6 12月 13 22:01 linux ---x-w-r--. 1 magedu xlogin 5 12月 13 21:56 test [root@xlogin data]# ll 總用量 12 -rw-r--r--. 1 xlogin root 6 12月 13 17:40 authority -rw-r--r--. 1 xlogin root 6 12月 13 22:01 linux ---x-w-r--. 1 magedu xlogin 5 12月 13 21:56 test [root@xlogin data]# chown -R linux.magedu /data/ [root@xlogin data]# ll 總用量 12 -rw-r--r--. 1 linux magedu 6 12月 13 17:40 authority -rw-r--r--. 1 linux magedu 6 12月 13 22:01 linux ---x-w-r--. 1 linux magedu 5 12月 13 21:56 test
三、設置文件和目錄的生成掩碼
當我們登錄系統之後創建一個文件總是有一個默認權限的,那麼這個權限是怎麼來的呢?這就是umask乾的事情。umask又叫文件的權限反向掩碼,遮罩碼,umask是從權限777中“拿走”相應的位,且文件創建時不能賦予執行權限。用戶可以使用umask命令設置文件夾的默認生成掩碼。默認的生成掩碼會告訴操作系統當創建一個新的文件或目錄時不應該賦予哪些權限。
umask設置了用戶創建文件的默認權限,它與chmod命令的設定剛好相反,umask設置的是權限“補碼”,而chmod設置的是文件權限碼。
對於文件而言,系統不允許創建之初就對其賦予可執行權限,因此文件權限的最高限定是6,目錄爲7。將最高可選值減去umask中的值即是默認文件創建權限。因此當umask爲022時,默認創建文件的權限爲644,而默認創建目錄的權限爲755。
此類設定僅對當前shell進程有效,一般可在/etc/profile、/etc/bashrc、$ [HOME]/.bash_profile、$[HOME]/.profile或$[HOME]/.bashrc中設置umask值。例如用戶將umask命令放在環境文件(.bash_profile)中(具體取決於你使用的Linux發行版),就可以在下次系統重啓後繼續控制所有新建文件或目錄的訪問權限。
命令格式爲:umask [A1B2C3]
其中,A1、B2、C3分別表示的是不允許屬主、屬組、和其他用戶有的權限。
用法非常簡單,只需執行umask 777 命令,便代表屏蔽所有的權限,因而之後建立的文件或目錄,其權限都變成000,依次類推。
例如:
umask #顯示當前的默認生成掩碼
umask 022 #設置不允許同一屬組用戶和其他用戶有寫權限
root用戶的umask值爲022: 1) 文件的最大權限 rwx rwx rwx (777) 2) umask值爲022 ----w--w- 3) 目錄權限 rwxr-xr-x (755) 這就是目錄創建缺省權限 4) 文件權限 rw-r--r-- (644) 這就是文件創建缺省權限 [root@xlogin data]# id uid=0(root) gid=0(root) 組=0(root) 環境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [root@xlogin data]# umask 0022 [root@xlogin ~]# touch 1 [root@xlogin ~]# mkdir 2 [root@xlogin data]# umask 777 [root@xlogin data]# touch test [root@xlogin ~]# ll 總用量 4 -rw-r--r--. 1 root root 0 12月 13 23:06 1 drwxr-xr-x. 2 root root 6 12月 13 23:06 2 ----------. 1 root root 0 12月 13 22:55 test 普通用戶的umask值爲002: 1) 文件的最大權限 rwx rwx rwx (777) 2) umask值爲002 -------w- 3) 目錄權限 rwxrwxr-x (775) 這就是目錄創建缺省權限 4) 文件權限 rw-rw-r-- (664) 這就是文件創建缺省權限 [root@xlogin ~]# su - linux 上一次登錄:日 12月 13 22:45:20 CST 2015pts/1 上 [linux@xlogin ~]$ id uid=1002(linux) gid=1002(linux) 組=1002(linux) 環境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [linux@xlogin ~]$ umask 0002 [linux@xlogin ~]$ touch 3 [linux@xlogin ~]$ mkdir 4 [linux@xlogin ~]$ ll 總用量 0 -rw-rw-r--. 1 linux linux 0 12月 13 23:08 3 drwxrwxr-x. 2 linux linux 6 12月 13 23:08 4