眾所周知,linux是多使用者多工的作業系統,linux有很多使用者和使用者組,這就決定某些檔案不想讓某個使用者讀取或者寫入,所以呢我們要建立檔案許可權的概念。
1.檢視檔案屬性:
以第一列資料為例我們來分析一下:
- rw-r--r-- 1 root root 2229 jan 20 2015 anaconda-ks.cfg
檔案型別檔案許可權 連線數檔案所屬使用者 檔案所屬組 檔案大小 最後一次修改日期檔名稱第乙個字元是檔案型別 - 表示檔案 ,d 表示目錄 , l 表示連線檔案 , b 表示裝置檔案裡邊可供儲存的介面塊裝置, c 表示裝置檔案裡的串列埠裝置(如鍵盤,滑鼠等)
第二列為檔案許可權分user、group、others3種身份,我們用u, g,o來代表三種身份,每個使用者有讀取(r),寫入(w),執行(x)三種許可權
第三列為連線數,當是檔案時,表示檔案的連線數(一般為硬鏈結)至於為什麼是硬鏈結不是軟連線這裡暫不做介紹,明白軟硬鏈結的區別就懂了。當是目錄時表示該目錄下檔案的個數
2.修改檔案屬性與許可權:
chown username filename # 修改檔案所有人
chgrp username filename # 修改檔案所屬組
chmod ugo+-=rwx filename #修改檔案許可權
改變檔案所有者:
[root@burgess ~]# chown bin test #將檔案所有者改為bin
[root@burgess ~]# ll test
-rw-r--r-- 1 bin root 0 aug 2 15:30 test
[root@burgess ~]# chown root:root test #將檔案所有人和所屬組改為root
[root@burgess ~]# ll test
-rw-r--r-- 1 root root 0 aug 2 15:30 test
改變檔案所屬組:
[root@burgess ~]# chgrp -r dirname/filename
引數:-r 表示遞迴,連同子目錄下的檔案目錄
[root@burgess ~]# ll test
-rw-r--r-- 1 root users 0 aug 2 15:30 test
改變檔案許可權:檔案的許可權數值表示為 r :4 , w: 2 , x:1
每種身份的許可權分數是要累加的,例如當某個檔案許可權是【-rwxrw-r--】則相應的分數為:
owner = rwx = 4+2+1 = 7
group = rw- = 4+2+0 = 6
others = r-- = 4+0+0 = 4
既可以使用數字也可以用符號進行許可權的修改
[root@burgess ~]# ll tcps.c
-rw-r--r-- 1 root root 1018 may 1 14:31 tcps.c
[root@burgess ~]# chmod u=rwx,go=rx tcps.c #修改檔案許可權
[root@burgess ~]# ll tcps.c
-rwxr-xr-x 1 root root 1018 may 1 14:31 tcps.c
[root@burgess ~]# chmod a-x tcps.c
[root@burgess ~]# ll tcps.c
-rw-r--r-- 1 root root 1018 may 1 14:31 tcps.c
[root@burgess ~]# chmod 644 tcps.c
[root@burgess ~]# ll tcps.c
-rw-r--r-- 1 root root 1018 may 1 14:31 tcps.c
3.檔案預設許可權umask:umask是指目前使用者在建立新檔案或者目錄時的預設許可權值
[root@burgess ~]# umask
0022
[root@burgess ~]# umask -s
u=rwx,g=rx,o=rx
umask的後三位與一般許可權有關。第一位與特殊許可權有關暫時不考慮
使用者建立「檔案」時,則預設沒有可執行許可權(x),即只有r、w,也就是最大為666 【-rw-rw-rw-】
若使用者新建「目錄」,則由於x與是否可以進入目錄有關,因此預設所有許可權開放777【drwxrwxrwx】
umask值是「預設值要減掉的許可權」,r、w、x分別是4、2、1也就是說要拿掉讀許可權就是4,拿掉寫許可權就是2
預設root使用者umask值為022,也就是說所屬使用者並沒有被拿掉任何許可權,group和others被拿掉了2(也就是寫許可權)
新建檔案時:(-rw-rw-rw-)- ( -----w--w- ) ==>-rw-r--r--
新建目錄時:(drwxrwxrwx)- (d----w--w-)==>drwxr-xr-x
umask對新建檔案與目錄的預設許可權有很大關係,在計算時盡量遵照上面的按符號計算的方式來算,不可直接用數值進行計算
假設umask為003,去掉的許可權應該是-------wx,因此
新建檔案:(-rw-rw-rw-)-(-------wx)= -rw-rw-r--
新建目錄:(drwxrwxrwx)-(--------wx) = drwxrwxr--
但是要用檔案預設屬性666與目錄預設屬性777來與umask進行想減運算這個時候就會有問題
所以在進行運算是最好採用符號計算。
修改umask值
vim /etc/bashrc #71行是普通使用者的更改,73是超級使用者的更改
vim /etc/profile #60行是普通使用者的更改,62是超級使用者的更改
source /etc/bashrc /etc/profile ##讓更改立即生效
4.檔案隱藏屬性:chattr 和 lsattr
chattr設定檔案隱藏屬性用法:
chattr 【+-=】 【asacdistu】 filename/dirname
a 屬性設定之後,這個檔案只能增加資料,不能刪除也不能修改資料
i 屬性可以使檔案不能刪除改名
[root@burgess ~]# chattr +i attrtest
[root@burgess ~]# rm -f attrtest
rm: cannot remove 'attrtest': operation not permitted #加上i屬性後檔案不可刪除
[root@burgess ~]# lsattr attrtest #檢視隱藏屬性
----i----------- attrtest
注意:chattr命令只能在ext2/ext3的檔案系統上面生效5.檔案特殊許可權:<1> suidu+s###針對檔案,檔案記錄動作在執行時是以檔案所有人身份執行的,與是誰發起的無關
chmod u+s file
chmod 4777 file
<2> sgid
g+s##對於目錄,在目錄中建立的檔案都自動歸屬到目錄所在組,
##對於二進位制檔案,檔案內記錄的程式在執行時和執行者的組身份沒有關係,而是以二進位制檔案的所有組的身份執行的
chmod g+s file|directory
chmod 2777 file|directory
<3>sticky bit
o+t###只針對目錄有效,當乙個目錄上有t許可權時,這個目錄中的檔案只能被檔案擁有者刪除
t=1chmod o+t directroy
chmod 1777 directory
Linux檔案許可權
linux使用者分為 擁有者 組群 group 其他 other linux系統中,預設的情況下,系統中所有的帳號與一般身份使用者,以及root的相關資訊,都是記錄在 etc passwd檔案中。每個人的密碼則是記錄在 etc shadow檔案下。此外,所有的組群名稱記錄在 etc group內!圖...
Linux檔案許可權
linux使用者分為 擁有者 組群 group 其他使用者 other linux系統中,預設的情況下,系統中所有的帳號與一般身份使用者,以及root的相關資訊,都是記錄在 etc passwd檔案中。每個人的密碼則是記錄在 etc shadow檔案下。此外,所有的組群名稱記錄在 etc group...
linux檔案許可權
檔案的許可權由三個部分組成 u user g group o other 每個部分的許可權又分別 r 4讀 w 寫2 x 執行1 下面以 var www資料夾設定許可權,了解如何設定檔案許可權 chmod a x var www 所有人都可進入 chmod a x var www 所有人都不可進入 ...