chmod命令、chown命令、chgrp命令、umask命令、chattr命令、lsattr命令

第二章 文件、目錄管理

2.14 文件或目錄屬性、權限及chmod命令

  • 屬性
    用ls命令查看文件信息的時候共顯示了9列內容(用空格劃分),其表明的含義以下圖:
    mark
    上圖中‘rwxr-xr-x’即爲文件或目錄的權限,分別表明全部者(user)權限——前三位,所屬組(group)權限——中間三位,其餘非本羣組(others)權限——最後三位。其中,r(read)表明可讀,w(write)表明可寫,x(execute)表明可執行。
# ls -l /etc/
總用量 1088
-rw-r--r--.  1 root root       16 5月  22 01:29 time
-rw-r--r--.  1 root root     1518 6月   7 2013 aliases
-rw-r--r--.  1 root root    12288 5月  22 01:38 aliases.db    "."表示該文件受SELinux控制(SELinux防火牆未徹底關閉時顯示)

 

  • chmod命令
    Linux中能夠用數字代替rwx來更改權限,具體規則:r=4,w=2,x=1,-=0,eg:‘-rwxrwxrw-’用數字表示就是770,計算規則:rwx=4+2+1=7,rwx=4+2+1=7,---=0+0+0=0。
    語法: chmod [-R] xyz [filename] (在此xyz表明數字)
    -R 選項做用表示級聯更改。
    注: 在Linux系統中,root用戶默認一個目錄的權限爲755,而一個文件的權限爲644。
    eg1:
[root@3 ~]# mkdir test
[root@3 ~]# touch ./test/test3
[root@3 ~]# ls -ld test
drwxr-xr-x 2 root root 19 6月   6 21:22 test
[root@3 ~]# ls -l test
總用量 0
-rw-r--r-- 1 root root 0 6月   6 21:22 test3
[root@3 ~]# chmod 750 test  更改test的權限爲750
[root@3 ~]# ls -ld test
drwxr-x--- 2 root root 19 6月   6 21:22 test 
[root@3 ~]# ls -l test/test3  查看test3的權限,未發生改變
-rw-r--r-- 1 root root 0 6月   6 21:22 test/test3
[root@3 ~]# chmod 755 test/test3  更改test3 的權限爲755
[root@3 ~]# ls -l test/test3
-rwxr-xr-x 1 root root 0 6月   6 21:22 test/test3
[root@3 ~]# chmod -R 700 test   級聯更改test、test3的權限爲700
[root@3 ~]# ls -ld test
drwx------ 2 root root 19 6月   6 21:22 test
[root@3 ~]# ls -l !$
ls -l test
總用量 0
-rwx------ 1 root root 0 6月   6 21:22 test3
!!! test和test3的權限均改成700

eg2:bash

[root@3 ~]# ls -ld test
drwx------ 2 root root 19 6月   6 21:22 test
[root@3 ~]# ls -l test
總用量 0
-rwx------ 1 root root 0 6月   6 21:22 test2
[root@3 ~]# chmod u=rwx,g=rx,o=rw test  更改test的全部者權限u=rwx,所屬組權限g=rx,其餘非羣組權限o=rw
[root@3 ~]# ls -ld test
drwxr-xrw- 2 root root 19 6月   6 21:22 test
[root@3 ~]# chmod a+x test/test2  更改test2全部權限(包含u,g,o)增長x權限(此處a=all)
[root@3 ~]# ls -l test
總用量 0
-rwx--x--x 1 root root 0 6月   6 21:22 test2

2.15 chown命令、chgrp命令

  • chown命令
    更改目錄或文件的全部者以及所屬組。
    chown=change owner
    語法:
    chown [-R] 帳戶名 filename 更改全部者
    chown [-R] 帳戶名:組名 filename 更改所屬組
    選項: -R的做用是級聯更改
    eg:
[root@3 tmp]# ls -l
總用量 0
drwxr-xr-x 2 root root 22 6月   7 07:23 3
drwx------ 3 root root 17 6月   7 07:16 systemd-private-bd8a94da330a4bc1984e8c95d8651460-vmtoolsd.service-ewuptl
[root@3 tmp]# ls -l 3
總用量 0
-rw-r--r-- 1 root root 0 6月   7 07:21 2.txt
[root@3 tmp]# chown 3 3/2.txt  更改全部者(user)
[root@3 tmp]# ls -l 3
總用量 0
-rw-r--r-- 1 adai root 0 6月   7 07:21  2.txt
[root@3 tmp]# chown :user1 3/2.txt 更改所屬組(group)
[root@3 tmp]# ls -l 3
總用量 0
-rw-r--r-- 1 2 user1 0 6月   7 07:21 2.txt
[root@3 tmp]# chown root:root 3/2.txt  同時更改全部者(user)和所屬組(group),該命令還能夠寫成‘chown root.root 3/2.txt’
[root@3 tmp]# ls -l 3
總用量 0
-rw-r--r-- 1 root root 0 6月   7 07:21 2.txt
  • chgrp命令
    更改文件或目錄的所屬組。
    chgrp=change group

語法: chgrp [-R] [組名] filename (-R表示級聯更改,只針對目錄文件)spa

eg1: 更改文件的所屬組code

[root@3 ~]# groupadd testgroup  添加組testgroup
[root@3 ~]# touch test1  建立文件test1
[root@3 ~]# ls -l test1
-rw-r--r-- 1 root root 0 6月   7 10:39 test1
[root@3 ~]# chgrp testgroup test1  更改文件test1的所屬組爲testgroup
[root@3 ~]# ls -l test1
-rw-r--r-- 1 root testgroup 0 6月   7 10:39 test1

eg2: 更改目錄的所屬組同步

[root@3 ~]# ls -l dirb/
總用量 0
drwxr-xr-x 2 root root 6 6月   7 10:51 2
drwxr-xr-x 2 root root 6 6月   7 10:50 dirc
[root@3 ~]# ls -ld !$
ls -ld dirb/
drwxr-xr-x 4 root root 30 6月   7 10:51 dirb/
[root@3 ~]# chgrp testgroup dirb/  更改目錄dirb的所屬組爲testgroup
[root@3 ~]# ls -ld !$
ls -ld dirb/
drwxr-xr-x 4 root testgroup 30 6月   7 10:51 dirb/
[root@3 ~]# ls -l !$
ls -l dirb/
總用量 0
drwxr-xr-x 2 root root 6 6月   7 10:51 2
drwxr-xr-x 2 root root 6 6月   7 10:50 dirc
[root@3 ~]# chgrp -R  testgroup dirb/  級聯更改目錄的所屬組(目錄下內容的所屬組同時跟着改變)
[root@3 ~]# ls -l !$
ls -l dirb/
總用量 0
drwxr-xr-x 2 root testgroup 6 6月   7 10:51 2
drwxr-xr-x 2 root testgroup 6 6月   7 10:50 dirc

注: 由於chown命令能夠替代chgrp命令,因此chgrp命令使用的並很少。it

2.16 umask命令

>當咱們登陸系統以後建立一個文件老是有一個默認權限的,那麼這個權限是怎麼來的呢?這就是umask乾的事情。umask設置了用戶建立文件的默認權限,它與chmod的效果恰好相反,umask設置的是權限"補碼",而chmod設置的是文件權限碼。umask的默認值能夠更改,可是隻有在$[HOME]/.bashrc下增長umask值才能夠永久定義本身的umask值,不然只是臨時更改。
語法: umask xxx (此處xxx表明三個數字)test

[root@3 ~]# umask   查看umask值
0022   即:umask的預設是0022
[root@3 ~]# umask 020  預設umask值爲020
[root@3 ~]# umask
0020
[root@3 ~]# umask 022
[root@3 ~]# umask
0022

注: 默認狀態下,文件umask+chmod=666;目錄umask+chmod=777(限於權限位加減法)。登錄

2.17 chattr命令、lsattr命令

>只有超級權限的用戶才具備使用該命令的權限,這項指令可改變存放在ext二、ext三、ext四、xfs、ubifs、reiserfs、jfs等文件系統上的文件或目錄屬性。file

  • chattr命令
    chattr=change attribute(屬性)
    語法: chattr [+-=][選項] [文件或者目錄名稱]
    +、-、=:分別爲增長、減小、設定
    選項:
    A 增長該屬性後,文件或目錄的atime將不能被修改
    S 增長該屬性後,會將數據同步寫入磁盤中
    a 增長該屬性後,只能追加不能刪除,非root用戶不能設定該屬性
    c 自動壓縮該文件,讀取時會自動解壓
    i 增長該屬性後,使文件不能被刪除、重命名、設定連接、寫入、新增數據
  • lsattr命令
    該命令用於查看文件或者目錄的特殊權限。
    語法: lsattr [-aR] [文件/目錄名]
    選項:
    -a =all,即連同隱藏文件一同列出
    -R 連同子目錄的數據一同列出
相關文章
相關標籤/搜索