天天學一個 Linux 命令(17):chmod

圖片

昨日推薦:天天學一個 Linux 命令(16):mkdirapp

命令簡介

chmod 命令用來變動文件或目錄的權限。socket

文件或目錄權限有讀取、寫入、執行這3種,另外還有3種特殊權限。用戶可使用chmod去設置文件與目錄的權限,設置方式採用文字或數字皆可。連接文件的權限沒法直接變動,若是用戶須要對連接文件修改權限,其真實做用是做用在原始文件上。ui

語法格式

chmod  [選項]   [權限] [文件或目錄]
chmod [OPTION] [MODE]  FILE
chmod [OPTION] [MODE]  DIRECETORY

選項說明

u  #用戶user,文件或目錄的全部者。
g  #用戶組group,文件或目錄所屬組
o  #其它用戶others
a  #全部用戶all,系統默認
+  #添加權限
-  #取消權限
=  #配置文件的權限爲指定的權限
r  #可讀權限
w  #可寫權限
x  #可執行權限
-  #沒有權限
x  #設置可執行權限
s  #設置suid和sgid,可使用「u+s」,「g+s」的方式來設置
t  #只有目錄或文件的全部者才能夠刪除目錄下的文件
-c    #效果相似「-v」參數
-f    #操做過程當中不顯示任何錯誤信息;
-R    #遞歸處理,將指定目錄下的全部文件及子目錄一併處理;
-v或——verbose    #顯示命令運行時的詳細執行過程;
--reference=<參考文件或目錄> #把指定文件或目錄的所屬組權限設成參考文件或目錄的所屬組同樣;
<權限範圍>+<權限設置> #開啓權限範圍的文件或目錄的該選項權限設置;
<權限範圍>-<權限設置> #關閉權限範圍的文件或目錄的該選項權限設置;
<權限範圍>=<權限設置> #指定權限範圍的文件或目錄的該選項權限設置;
--help     #顯示幫助信息
--version  #顯示版本信息

權限說明

-rw-r--r--   1 mingongge  mingongge   651 Oct 12 12:53 test.txt
# ↑╰┬╯╰┬╯╰┬╯
# ┆ ┆  ┆  ╰┈ 0 其餘人
# ┆ ┆  ╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ g 屬組
# ┆ ╰┈┈┈┈ u 屬組
# ╰┈┈ 第一個字母是文件類型 
#d表明的是目錄(directroy)
#-表明的是文件(regular file)
#s表明的是套字文件(socket)
#p表明的管道文件(pipe)或命名管道文件(named pipe)
#l表明的是符號連接文件(symbolic link)
#b表明的是該文件是面向塊的設備文件(block-oriented device file)
#c表明的是該文件是面向字符的設備文件(charcter-oriented device file)
r=讀取屬性 =4
w=寫入屬性 =2
x=執行屬性 =1

特殊權限說明

Linux系統除了正常的讀寫操做權限外,還有Linux特殊權限。包括SET位權限(suid,sgid)和粘滯位權限(sticky)。spa

chmod u+s filename  #設置suid位
chmod u-s filename  #去掉suid設置
chmod g+s filename  #設置sgid位
chmod g-s filename  #去掉sgid設置
chmod +t  filename  #設置粘滯位權限
chmod -t  filename  #去掉粘滯位權限

若是一個文件被設置了suid或sgid,在其全部者或所屬組權限的可執行位上有明顯的標記,若是文件設置了suid且也設置了x(執行)權限,則在其執行權限位上會顯示一個字母s(小寫)。可是,若是沒有設置x權限,則顯示爲字母S(大寫)。以下:3d

-rwsr-xr-x #設置了suid,且文件全部者也配置了可執行權限
-rwSr--r-- #設置了suid,但文件全部者沒有配置可執行權限
-rwxr-sr-x #設置了guid,且所屬組也配置了可執行權限
-rw-r-Sr-- #設置了guid,但所屬組沒有配置可執行權限

一個文件或目錄若是被設置了粘滯位權限,會在其餘人權限的可執行位上有標記。若是文件設置了sticky還設置了x(執行)位,其餘人權限的可執行位顯示一個字母t(小寫)。可是,若是沒有設置x位,則顯示一個字母T(大寫)。以下:code

-rwsr-xr-t #表示設置了粘滯位且其餘人用戶也配置了可執行權限
-rwSr--r-T #表示設置了粘滯位但其餘人用戶沒有配置可執行權限

應用實例

$ chmod u+x file      
#給file的屬主增長執行權限
$ chmod 751 mingongge     
#給mingongge的屬主分配讀、寫、執行權限
$ chmod u=rwx,g=rx,o=x mingongge      
#給mingongge屬主分配讀寫執行權限,屬組分配讀執行權限,其它人分配執行權限
$ chmod =r mingongge    
$ chmod 444 mingongge   
#爲mingongge的全部者、所屬組、其餘人分配讀權限
                
$ chmod -R u+r mingongge           
#遞歸地給mingongge錄下全部文件和子目錄的屬主分配讀的權限
$ chmod 4755 mingongge                           
#設置用戶ID,給屬主分配讀、寫和執行權限,給所屬組和其餘用戶分配讀、執行的權限。

天天學一個 Linux 命令(15):manblog

天天學一個 Linux 命令(14):cat遞歸

天天學一個 Linux 命令(13):touch圖片

相關文章
相關標籤/搜索