1.chgrp——改變所屬群組 每個檔案都有三個屬性,擁有者、群組、其他人,chgrp就可以更改檔案的群組,如下 上面1.txt和2.txt的群組都是zyj,相當於在zyj群組中的用戶都只能讀取檔案1.txt和2.txt 接下來我們改變檔案的群組為root後就可以修改檔案的內容了,如下 2.chow ...
1.chgrp——改變所屬群組
每個檔案都有三個屬性,擁有者、群組、其他人,chgrp就可以更改檔案的群組,如下
上面1.txt和2.txt的群組都是zyj,相當於在zyj群組中的用戶都只能讀取檔案1.txt和2.txt
接下來我們改變檔案的群組為root後就可以修改檔案的內容了,如下
2.chown——改變檔案擁有者
可以通過chown改變檔案的擁有著屬性,如下改變檔案1.txt的擁有著為zyj
這樣檔案1.txt的擁有著就改變成了zyj,這樣用戶zyj就可以更改檔案內容了
3.chmod——改變檔案許可權
此命令可以改變檔案的許可權,如下
通過上面的命令改變了1.txt的許可權,詳細為擁有者許可權增加執行(x),群組許可權增加寫(w),其他人許可權不變
上面的格式為數字表示法,也可以用字母格式,如下
根據上面的命令,u代表擁有者,g代表群組,o代表其他人,詳細表示為擁有者減少寫(w),群組減少寫(w)、增加執行(x),其他人增加執行(x)
4.檔案預設許可權—umask
首先查看系統目錄或者檔案預設許可權,如下
這個預設許可權的設置有助於新建檔案或者目錄時預設的許可權,如下
我們新建了一個檔案3.txt,它的預設許可權為-rw-r--r--
新建了一個目錄3,它的預設許可權為 rwx-r-xr-x
大家想想,為什麼會是這種許可權而不是其他的許可權,其實這就是umask設置的,檔案和目錄的預設許可權是不同的
檔案主要是存儲數據的,所以檔案肯定沒有執行(x)許可權,因為檔案執行沒有意義,所以檔案的開始預設許可權為666即rw-rw-rw-,
然後通過上面umask設置的0022,即群組和其他人都減去寫的許可權,最終檔案的預設許可權為644 。
但是目錄是需要執行許可權的,所以目錄開始許可權為777,減去0022後得到755即rwxr-xr-x 。
當然我們也可以更改預設許可權設置umask的值,如下
更改umask值後,再新建檔案和目錄時,預設許可權變化了,大家自己試試。
5.檔案特殊許可權——SUID,SGID,SBIT
在上面第4節中,我們用到了umask這個預設許可權,如下
數值0022中,後三位022表示預設許可權需要減去的許可權值,那第一位的數值0代表什麼呢,其實第一位0代表的就是特殊許可權了
我們先看兩個擁有特殊許可權的檔案
大家仔細看看上面的檔案,發現/tmp檔案的其他人許可權為rwt,/usr/bin/passwd檔案的擁有著許可權為rws,這是為什麼呢,
其實這就是表示這兩個檔案擁有特殊許可權,詳細介紹如下
SUID:
上面的/usr/bin/passwd檔案其實是具有SUID的特殊許可權,SUID即設置在擁有著上面的特殊許可權,把擁有者的執行許可權(x)改為(s)予以區分
那這個SUID有什麼用呢,我們先來看一個檔案/etc/shadow的許可權
/etc/shadow這個檔案是保存系統用戶的密碼的,所以這個檔案只能是root用戶來強制寫入和讀取,
但是我們依然可以使用普通用戶去更改自己的密碼,按照正常來說,普通用戶是不能操作/etc/shadow檔案的,
那為什麼自己可以更改自己的密碼呢,其實這就是SUID的功能了。詳細分析如下
1.普通用戶對/usr/bin/passwd是具有x許可權
2.passwd的擁有者為root
3.在普通用戶去執行passwd時,會自動升級為root,然後就可以更改密碼了
4.執行完後,普通用戶失去root的功能
總結:簡單來說,就是擁有SUID的檔案在被普通用戶執行的過程中,普通用戶臨時升級為root用戶,具有root的功能,然後去執行,
SUID只能針對檔案,對目錄無效。
SGID:
1.針對於檔案:
同理,當s在群組的x上時就成為此檔案具有SGID的許可權,SGID可以針對檔案和目錄,對於檔案來說和SUID的功能差不多,就是在普通賬號執行的過程中獲得群組的許可權,如下
從上面可以看出檔案/usr/bin/locate具有SGID,註意它的群組為slocate,當普通賬號使用這個檔案時就會臨時獲得slocate群組的許可權,下麵看一個檔案
檔案/var/lib/mlocate/mlocate.db的群組也是slocate,並且群組可以讀取檔案的內容,不屬於群組的其他人不能讀取。
此檔案為系統里的資料庫文件,它包含系統本地所有的文件信息,如果大家查看不到這個檔案時,可以先執行updatedb命令更新資料庫後,此檔案就會自動生成。
而命令locate則是在這個資料庫文件中查找是否存在特定的文件檔案,所有說執行locate命令就是去讀取/var/lib/mlocate/mlocate.db的內容
那麼大家想想,如果我使用不屬於slocate群組的普通賬號去執行locate命令查找文件時能否成功訪問/var/lib/mlocate/mlocate.db嗎?
其實是可以的,因為這就是SGID的功能了
我在/home/test/目錄下新建了一個zyj123.txt的檔案,然後updatedb更新資料庫文件,然後執行locate命令查找在home/test/目錄下是否有zyj123這個檔案
結果查找到了文件,但是我用的是普通賬號zyj,按照一般情況是不能讀取/var/lib/mlocate/mlocate.db這個資料庫中的內容的,但是現在可以讀取,這就是SGID的功能。
2.針對於目錄:
SGID不僅能設置檔案,也可以對目錄進行設置,當目錄被設置為SGID後,有以下的功能
用戶若對此目錄有r和x許可權,則用戶可以進入此目錄
用戶在此目錄下的有效群組將會變成此目錄的群組
用戶若對此目錄有w許可權,在此目錄下新建的檔案的群組變為此目錄的群組
說了這麼多,可能大家還是不太清晰的理解,我們舉個例子
在普通目錄下新建檔案,檔案的群組為賬號本身
但是當目錄設置了SGID後,在目錄下新建的檔案的群組將會變為目錄的群組,如下
當目錄設置SGID後,新建的檔案就變成了目錄的群組man了
SGID設置目錄主要運用在項目團隊開發中,例如可以新建一個團隊的目錄,將其設置SGID,那麼在這個目錄中新建的所以檔案的群組都是改目錄的群組了,
這樣屬於這個群組的用戶就都可以獲得對目錄中的檔案的相應許可權了。
SBIT:
如果在”其他人“的x許可權上變成t就說明被設置成了SBIT,這個只能對目錄進行設置,詳細如下
如果用戶對此目錄有w,x許可權即可以對此目錄有寫入的功能
當用戶在此目錄下新建檔案或者目錄時,僅有自己和root才有權刪除該檔案或者目錄
舉例如下:
從上面可以看出,當其他人對目錄具有寫的許可權時,其他人是可以刪除別人建立的檔案的
當目錄設置了SBIT後,就算其他人對目錄有寫的許可權,但是不能刪除別人建立的檔案
5.檔案隱藏屬性——chattr,lsattr
檔案除了有rwxrwxrwx這九個一般屬性外,還有隱藏屬性,隱藏屬性的設置就用chattr命令,一般常用加-ai的參數,其他參數大家可以自己試試
chattr +i 命令可以將檔案保護起來,這樣即使是root用戶都不能刪除了
lsattr 命令就是用來查看隱藏屬性的,上面顯示i就證明已經被增加了保護功能
chattr -i 命令就可以去掉保護功能