文件和目錄權限
認識Linux文件屬性以及它的所有者和所屬組
[root@localhost ~]# ls -lh word1.txt
-rw-r--r--. 1 root root 0 12月 20 08:36 word1.txt
第一列:我們從一個杠(-)開始認識,第一個杠(-)是表示文件屬于哪種類型
*-表示該文件為普通文件*d表示該文件為目錄*l表示該文件為鏈接文件*b表示該文件為塊設備文件(比如/dev/sda就是這樣的文件,硬盤*c表示該文件為串行端口設備文件(又稱字符設備文件),比如鼠標额衙、鍵盤這些
第二列:9個權限位rw-r--r--,每三個權限位為一段山孔,第一段rw-狞贱;表示所有者的權限澈缺,第二段r--草戈;表示為所屬組的權限塌鸯,第三段r--;表示為其他用戶的權限
權限里字母所表示的意思唐片,以及權限位數字的表示:
*r(4):可讀*w(2):可寫*x(1):可執(zhí)行*-(0):沒有權限丙猬;為空
rw-r--r--;所有者權限為rw-既表示為可讀可寫不可執(zhí)行牵触,接下來的所屬組和其他用戶以此類推淮悼。
u表示:所有者,g表示:所屬組揽思,o表示:其他用戶,a=u+g+o
第三列:(.)表示該文件占用的節(jié)點(inode)见擦,如果是目錄钉汗,那這個數值與目錄下是子目錄數量有關
第四列:表示該文件的所有者
第五列:表示該文件的所屬組
chmod命令
chmod是用來更改文件權限的一個命令,在Linux系統(tǒng)中鲤屡,一個目錄的默認權限為755:rwxr-xr-x损痰,而一個文件的默認權限為644:
[root@localhost ~]# chmod 777 word1.txt
[root@localhost ~]# ls -lh word1.txt
-rwxrwxrwx. 1 root root 0 12月 20 08:36 word1.txt
更改所有者和所屬組chown_chgrp
chgrp命令
chgrp命令可以用來更改文件的所屬組,其格式為:chgrp[組名][文件名]酒来,示例
[root@localhost ~]# groupadd hch
[root@localhost ~]# chgrp hch word1.txt
[root@localhost ~]# ls -lh
總用量 4.0K
-rwxrwxrwx. 1 root hch? ? 0 12月 20 08:36 word1.txt
-rw-r--r--. 1 root root? ? 0 12月 20 08:37 word2.txt
上例中有用到groupadd命令卢未,該命令是用來創(chuàng)建一個所屬組的。
chown命令
chown命令是用來更改文件或者目錄的所有者堰汉,其格式為:chown[賬戶名][文件名]或者chown[-R][賬戶名:組名][文件名]辽社,以下示例:
[root@localhost ~]# mkdir hch
[root@localhost ~]# cd hch
[root@localhost hch]# touch 123.txt
[root@localhost hch]# cd
[root@localhost ~]# chown -R hch1 hch
[root@localhost ~]# ls -lh hch/123.txt
-rw-r--r--. 1 hch1 root 0 12月 21 08:12 hch/123.txt
上例中用到useradd命令,該命令是用來創(chuàng)建一個用戶的翘鸭。
命令umask
命令umask是用來改變文件的默認權限值的滴铅,其格式為:umask xxx(這里xxx表示數字),我們可以在命令行輸umask查看當前的默認值
*若用戶建立普通文件時就乓,則預設沒有可執(zhí)行權限汉匙,只有r拱烁、w兩個權限,最大值為666(-rw-rw-rw-)*若用戶建立普通目錄時噩翠,則預設所有權限均開放戏自,最大值777(drwxrwxrwx)
umask數值代表的行以為以上兩條規(guī)則中的默認值需要減去的權限,所以結果為:
*目錄的權限為rwxrwxrwx - ----w--w-=rwxr-xr-x*普通文件的權限為rw-rw-rw- - ----w--w- =rw-r--r--
以下我們示例使用umask將數值改為002伤锚,在看下創(chuàng)建文件或者目錄的時候默認權限
[root@localhost ~]# umask 002
[root@localhost ~]# mkdir hch02
[root@localhost ~]# ls -l
總用量 4
drwxrwxr-x. 2 root root? ? 6 12月 21 08:20 hch02
drwxr-xr-x. 2 root root? 19 12月 20 08:44 hello
-rwxrwxrwx. 1 hch1 hch? ? 0 12月 20 08:36 word1.txt
-rw-r--r--. 1 root root? ? 0 12月 20 08:37 word2.txt
[root@localhost ~]# touch hch123.txt
[root@localhost ~]# ls -lh hch123.txt
-rw-rw-r--. 1 root root 0 12月 21 08:21 hch123.txt
隱藏權限lsattr/chattr
chattr命令
命令chattr的格式為:chattr[+-=][Asaci][文件或者目錄]其中+浦妄、-和=分別表示增加、減少和設定见芹,各個權限如下剂娄。
*A:增加該屬性后,表示文件或目錄的atime將不可以修改*s:增加該屬性后玄呛,會見個數據同步寫入磁盤中*a:增加該屬性后阅懦,表示只能追加不能刪除,非root用戶不能設定該屬性*c:增加該屬性后徘铝,表示自動壓縮該文件耳胎,讀取是會自動解壓*i:增加該屬性后,表示文件不能刪除惕它、重命名怕午、設定鏈接、寫入以及新增數據淹魄。
以上參數中a和i連個常用的權限郁惜,我們舉例說明示范一下
[root@localhost ~]# chattr +i hch
[root@localhost ~]# touch hch/1234.txt
touch: 無法創(chuàng)建"hch/1234.txt": 權限不夠
[root@localhost ~]# chattr? -i hch
[root@localhost ~]# touch hch/1234.txt
[root@localhost ~]# chattr? +i hch
[root@localhost ~]# rm -f hch/1234.txt
rm: 無法刪除"hch/1234.txt": 權限不夠
示例中,給asklinux2目錄加了i權限后甲锡,即使是root用戶兆蕉,也不能在asklinux2目錄中創(chuàng)建或刪除1.txt。
接下來我們看下a權限的作用
[root@localhost ~]# chattr -i hch
[root@localhost ~]# touch hch/456.txt
[root@localhost ~]# ls -lh hch
總用量 0
-rw-rw-r--. 1 root root 0 12月 21 08:26 1234.txt
-rw-r--r--. 1 hch1 root 0 12月 21 08:26 123.txt
-rw-rw-r--. 1 root root 0 12月 21 08:28 456.txt
[root@localhost ~]# chattr +a hch
[root@localhost ~]# rm -f hch/456.txt
rm: 無法刪除"hch/456.txt": 不允許的操作
[root@localhost ~]# touch hch/789.txt
[root@localhost ~]# ls hch
1234.txt? 123.txt? 456.txt? 789.txt
上例中缤沦,asklinux2目錄增加a權限后虎韵,只可以在里面創(chuàng)建文件,而不能刪除文件缸废,文件同適用以上權限包蓝。
命令lsattr
lsattr命令是用來讀取文件或者目錄的特殊權限,格式為:lsattr[-aR][文件/目錄]企量,我們看下a和R兩個參數的定義
*-a:類似于ls的-a參數测萎,既連同隱藏文件一同列出* -R:連同子目錄的數據一同列出
示例:
[root@localhost ~]# chattr +i hch/456.txt
[root@localhost ~]# chattr +a hch/789.txt
[root@localhost ~]# lsattr hch
---------------- hch/123.txt
---------------- hch/1234.txt
----i----------- hch/456.txt
-----a---------- hch/789.txt
[root@localhost ~]# lsattr -aR hch
-----a---------- hch/.
---------------- hch/..
---------------- hch/123.txt
---------------- hch/1234.txt
----i----------- hch/456.txt
-----a---------- hch/789.txt