文件和目錄權限chmod 、更改全部者和所屬組chown 、 umask 、隱藏權限lsattr/chattr

Linux文件屬性

在Linux當中的文件和目錄都會有一個全部者和所屬組。全部者是指文件或目錄的擁有者,所屬組指的是這個文件屬於哪個用戶組。這樣設置文件屬性是爲了文件和目錄的安全。安全

使用ls-l命令能夠查看文件或目錄的權限

[root@localhost ~]# ls -l 22
-rw-r--r--. 1 root root 0 1月  31 03:33 22

如上圖所示,執行ls-l 命令後顯示出來的內容就是該文件的屬性了。-rw-r--r-- 其中第一個字符「-」表示該文件是個普通文件,下面列舉一下各個不一樣的字符表示的意思。bash

第一個字符表示的意思

  • d 表示該文件是目錄
  • -表示該文件是普通文件
  • l 表示該文件爲連接文件
  • b 表示該文件爲塊設備,好比/dev/sda 這樣的硬盤分區文件就是這種類型 -c表示該文件爲串行端口設備文件,好比鍵盤、鼠標、打印機、tty終端等
  • s表示該文件爲套接字文件,用於進程之間的通訊

文件屬性當中後九位,每三位一組,都是rwx-這四個字符的組合,前三位表示該文件全部者的權限,中間三位表示該文件所屬組的權限,後三位表示其餘用戶對該文件的權限

  • r爲可讀權限,用數字表示r=4
  • w爲可寫權限,用數字表示w=2
  • x爲可執行權限,用數字表示x=1 因此當咱們在賦予一個文件權限時,好比賦予它全部者可讀可寫可執行,所屬組可讀可執行,其餘用戶可執行的權限時 ,可使用chmod 731 filename

咱們還能夠看到,在權限屬性字符的後面還有一個字符「·」

這個是由於新版本的ls添加了SELinux或者acl的屬性。若是文件或目錄使用了SELinux context的屬性,這裏就會顯示一個. ,若是設置了acl屬性,這個地方會顯示一個+。指針

[root@localhost ~]# ls -l 22
-rw-r--r--. 1 root root 0 1月  31 03:33 22
  • 在「.」後面還有一個「1」這個數字表示該文件佔用的節點,若是是目錄,那麼這個數值與該目 -下的子目錄數量有關。
  • 後面的第一個「root」表示該文件的全部者
  • 第二個「root」表示該文件的所屬組
  • 「0」表示文件的大小
  • 再後面表示文件最後一次被修改的時間(mtime),依次是月,日,點
  • 最後一組字符是文件名

chmod命令

chmod (change mode)命令是用來更改文件或目錄權限的命令 格式爲chmod 權限 filename 上面咱們提到了讀寫執行權限用數字表示的方式,那麼在系統中默認的目錄權限爲755 ,文件的默認權限是644,除了用數字表示,咱們在更改權限的時候也能夠直接用字符更改。舉個例子:code

[root@localhost ~]# ls -l 22
-rw-r--r--. 1 root root 0 1月  31 03:33 22
[root@localhost ~]# chmod 777 22
[root@localhost ~]# ls -l
總用量 4
-rwxrwxrwx. 1 root root   0 1月  31 03:33 22
-rw-------. 1 root root 973 1月  31 02:11 anaconda-ks.cfg

[root@localhost ~]# chmod u=rwx,g=rw,o=--- 22
[root@localhost ~]# ls -l 22
-rwxrw----. 1 root root 0 1月  31 03:33 22
[root@localhost ~]# ^C
[root@localhost ~]#

能夠看到,在使用字符修改的時候須要使用u=rwx ,g=rw,o=--- ,其中u表示user,g表示group,o表示others 的權限 ,此外還可使用a ,a表示全部,包括全部者,所屬組和其餘用戶進程

[root@localhost ~]# chmod a+rw 22
[root@localhost ~]# ls -l 22
-rwxrw-rw-. 1 root root 0 1月  31 03:33 22

chmod命令還有一個-R的選項,這個指針對目錄使用,表示級聯更改目錄屬性,將該目錄下全部的目錄和文件都改爲和該目錄相同的權限。同步

chown命令

chown命令(change owner)能夠更改文件和目錄的全部者 格式爲:chown_ 用戶名:組名 文件名_,當文件是目錄時,且要講目錄下全部的文件都更改全部者,須要使用 chown -R 用戶名:組名 文件名,當不須要更改所屬組時,將":組名"這個參數刪掉便可。test

[root@localhost ~]# ls -l 22
-rwxrw-rw-. 1 root root 0 1月  31 03:33 22
[root@localhost ~]# chown lic 22
[root@localhost ~]# !ls
ls -l 22
-rwxrw-rw-. 1 lic root 0 1月  31 03:33 22
[root@localhost ~]#

chgrp命令

chgrp命令(change group)更改文件的所屬組,格式爲:chgrp 組名 文件名 ,一樣的,若是要更改一個目錄及該目錄下左右文件的所屬組,須要使用:chgrp- R命令。file

umask命令

umask的值用來改變文件的默認權限,一個目錄預設權限時777,一個文件預設權限是666,分析一下umask的值和默認權限的關係能夠得出的結論是,文件默認權限=預設值-umask值。舉個例子:終端

[root@localhost ~]# umask
0022
[root@localhost ~]# mkdir test01
[root@localhost ~]# ls -ld test01/
drwxr-xr-x. 2 root root 6 2月  23 23:35 test01/
[root@localhost ~]# umask 002
[root@localhost ~]# umask
0002
[root@localhost ~]# mkdir test02
[root@localhost ~]# ls -ld test02
drwxrwxr-x. 2 root root 6 2月  23 23:36 test02
[root@localhost ~]# umask 077
[root@localhost ~]# umakd
-bash: umakd: 未找到命令
[root@localhost ~]# umask
0077
[root@localhost ~]# mkdir test03
[root@localhost ~]# ls -ld test03
drwx------. 2 root root 6 2月  23 23:37 test03
[root@localhost ~]#

chattr命令

chattr命令(change attribute),格式爲:chattr [+、-、=] [參數] 文件名或目錄名 其參數以下:權限

  • A:增長改屬性後,表示文件或目錄的Atime將不可修改。
  • s:增長該屬性後,表示數據會同步寫入磁盤中。
  • a :增長改屬性後,表示文件只能追加,不能刪除,只有root用戶才能設定改屬性。
  • c :增長該屬性後,表示自動壓縮該文件,在讀取時會自動解壓。
  • i :增長該屬性後,表示文件不能刪除,重命名,設定連接、寫入及新增數據。
[root@localhost ~]# umask
0022
[root@localhost ~]# mkdir test01
[root@localhost ~]# ls -ld test01/
drwxr-xr-x. 2 root root 6 2月  23 23:35 test01/
[root@localhost ~]# umask 002
[root@localhost ~]# umask
0002
[root@localhost ~]# mkdir test02
[root@localhost ~]# ls -ld test02
drwxrwxr-x. 2 root root 6 2月  23 23:36 test02
[root@localhost ~]# umask 077
[root@localhost ~]# umakd
-bash: umakd: 未找到命令
[root@localhost ~]# umask
0077
[root@localhost ~]# mkdir test03
[root@localhost ~]# ls -ld test03
drwx------. 2 root root 6 2月  23 23:37 test03
[root@localhost ~]#

上面例子中,給test01 設置「i」權限後,即便root用戶也不能在這個目錄中建立目錄或文件。減掉-i 權限後就能夠正常執行建立目錄的命令了。

[root@localhost ~]# chattr +a test01
[root@localhost ~]# touch test01/123
[root@localhost ~]# rm test01/123
rm:是否刪除普通空文件 "test01/123"?y
rm: 沒法刪除"test01/123": 不容許的操做
[root@localhost ~]# chattr -a test01
[root@localhost ~]# rm test01/123
rm:是否刪除普通空文件 "test01/123"?y
[root@localhost ~]#

在這裏能夠看到,給該目錄設置a權限後,只能在該目錄下建立文件,不能刪除文件了。

lsattr命令

lsattr命令(list attribute),用於讀取文件或目錄的特殊權限 ,其格式爲:lsattr -[a 、R] [文件名或目錄名]

  • a表示連同隱藏文件一同列出
  • R 表示連同子目錄的數據一同列出
[root@localhost ~]# lsattr test01
---------------- test01/test04
[root@localhost ~]# lsattr -a test01
---------------- test01/.
---------------- test01/..
---------------- test01/test04
[root@localhost ~]# lsattr -R test01
---------------- test01/test04

test01/test04:

[root@localhost ~]#
相關文章
相關標籤/搜索