1. 程式人生 > >2.14-2.17 權限和特殊屬性

2.14-2.17 權限和特殊屬性

centos linux

2.14-2.17


2.14 文件或目錄權限chmod

chmod命令用來變更文件或目錄的權限。在UNIX系統家族裏,文件或目錄權限的控制分別以讀取、寫入、執行3種一般權限來區分,另有3種特殊權限可供運用。用戶可以使用chmod指令去變更文件與目錄的權限,設置方式采用文字或數字代號皆可。符號連接的權限無法變更,如果用戶對符號連接修改權限,其改變會作用在被連接的原始文件。

PS:所有目錄默認一定都是可執行的權限.

ls -l 可以查看到文件和目錄的權限

權限範圍的表示法如下:

u User,即文件或目錄的擁有者;

g Group,即文件或目錄的所屬群組;

o Other,除了文件或目錄擁有者或所屬群組之外,其他用戶皆屬於這個範圍;

a All,即全部的用戶,包含擁有者,所屬群組以及其他用戶;

r 讀取權限,數字代號為“4”;

w 寫入權限,數字代號為“2”;

x 執行或切換權限,數字代號為“1”;

- 不具任何權限,數字代號為“0”;

s 特殊功能說明:變更文件或目錄的權限。

Linux用 戶分為:擁有者、組群(Group)、其他(other),Linux系統中,預設的情況下,系統中所有的帳號與一般身份使用者,以及root的相關信 息, 都是記錄在/etc/passwd文件中。每個人的密碼則是記錄在/etc/shadow文件下。 此外,所有的組群名稱記錄在/etc/group內。

linux文件的用戶權限的分析圖

user屬主 group屬組 others其他人(如下圖)

技術分享圖片

例:rwx rw- r--

r=讀取屬性  //值=4

w=寫入屬性  //值=2

x=執行屬性  //值=1

命令的使用

chmod 語法: chmod [-R] xyz 文件名 (這裏的xyz,表示數字)

‘-R’ 選項作用同chown,級聯更改。

PS:在linux系統中,默認一個目錄的權限為 755,而一個文件的默認權限為644.

如果創建了一個目錄,而該目錄不想讓其他人看到內容,則只需設置成 ‘rwxr—–’ (740) 即可。’chmod’ 還支持使用rwx的方式來設置權限。屬性分別是(1)user (2)group (3)others, 可以使用u, g, o 來代表它們三個的屬性,此外, a 則代表 all 亦即全部。用法如下:

技術分享圖片

這樣可以把 ‘test/test2’ 文件權限修改為 ‘rwxr-xr-x‘

另外還可以針對u, g, o, a增加或者減少某個權限(讀,寫,執行),例如:

技術分享圖片


2.15 更改所有者和所屬組chown

chown命令更改所屬主

chown命令改變某個文件或目錄的所有者和所屬的組,該命令可以向某個用戶授權,使該用戶變成指定文件的所有者或者改變文件所屬的組。用戶可以是用戶或者是用戶D,用戶組可以是組名或組id。文件名可以使由空格分開的文件列表,在文件名中可以包含通配符。

只有文件主和超級用戶才可以便用該命令。

語法

chown [ -R ] 賬戶名 文件名 chown [ -R ] 賬戶名:組名 文件名

這裏的-R選項只作用於目錄,作用是級聯更改,即不僅更改當前目錄,連目錄裏的目錄或者文件全部更改。

選項

-c或——changes:效果類似“-v”參數,但僅回報更改的部分;

-f或--quite或——silent:不顯示錯誤信息;

-h或--no-dereference:只對符號連接的文件作修改,而不更改其他任何相關文件;

-R或——recursive:遞歸處理,將指定目錄下的所有文件及子目錄一並處理;

-v或——version:顯示指令執行過程;

--dereference:效果和“-h”參數相同;

--help:在線幫助;

--reference=<參考文件或目錄>:把指定文件或目錄的擁有者與所屬群組全部設成和參考文件或目錄的擁有者與所屬群組相同;

--version:顯示版本信息。

參數

用戶:組:指定所有者和所屬工作組。當省略“:組”,僅改變文件所有者; 文件:指定要改變所有者和工作組的文件列表。支持多個文件和目標,支持shell通配符。

實例

[root@localhost ~]# mkdir test // 創建 'test' 目錄

[root@localhost ~]# useradd user1 // 創建用戶 user1 [root@localhost ~]# touch test/test2 // 在test目錄下創建test2文件 [root@localhost ~]# chown user1 test [root@localhost ~]# ls -l test 總用量 0 -rw-r--r-- 1 root root 0 5月 10 09:00 test2 [root@localhost ~]# ls -ld test // test目錄所屬主已經由 'root' 改為 'user1 drwxr-xr-x 2 user1 root 4096 5月 10 09:00 test [root@localhost ~]# ls -l test // 但是test目錄下的test2文件所屬主依舊是 'root'. 總用量 0 -rw-r--r-- 1 root root 0 5月 10 09:00 test2 [root@localhost ~]# chown -R user1 :testgroup test [root@localhost ~]# ls -l test 總用量 0 -rw-r--r-- 1 user1 testgroup 0 5月 10 09:00 test2


chgrp命令更改所屬組(這個命令的作用可以用chown代替,不常用)

chgrp命令用來改變文件或目錄所屬的用戶組。該命令用來改變指定文件所屬的用戶組。其中,組名可以是用戶組的id,也可以是用戶組的組名。文件名可以 是由空格分開的要改變屬組的文件列表,也可以是由通配符描述的文件集合。如果用戶不是該文件的文件主或超級用戶(root),則不能改變該文件的組。

語法

chgrp [組名] [文件名]

技術分享圖片


2.16 umask

UMASK

umask,在默認情況下創建一個新的文件或目錄,umask規定了目錄權限值為755.普通文件權限值為644.

直接敲 umask命令可以得出當前umask值

umask語法:umask xxx

註:在默認情況無umask幹預下,建立普通文件為666,目錄為777


2.17 隱藏權限lsattr_chattr

有時候你發現用root權限都不能修改某個文件,大部分原因是曾經用chattr命令鎖定該文件了。chattr命令的作用很大,其中一些功能是由Linux內核版本來支持的,不過現在生產絕大部分跑的linux系統都是2.6以上內核了。通過chattr命令修改屬性能夠提高系統的安全性,但是它並不適合所有的目錄。chattr命令不能保護/、/dev、/tmp、/var目錄。lsattr命令是顯示chattr命令設置的文件屬性。

語法:

chattr 【+-=】【ASaci】【文件/目錄】:設置文件隱藏屬性

lsattr 【-aR】【文件/目錄】:讀取文件或目錄的隱藏屬性,非root用戶不能設定該屬性

下表為常用用法:

chattr

文件的特殊屬性 - 使用 “+” 設置權限,使用 “-” 用於取消

chattr +a file1 只允許以追加方式讀寫文件

chattr +i file1 設置成不可變的文件,不能被刪除、修改、重命名或者鏈接 、連創建時間都不能更改,很嚴謹

chattr +c file1 允許這個文件能被內核自動壓縮/解壓

chattr +d file1 在進行文件系統備份時,dump程序將忽略這個文件

chattr +s file1 允許一個文件被安全地刪除

chattr +S file1 一旦應用程序對這個文件執行了寫操作,使系統立刻把修改的結果寫到磁盤

chattr +u file1 若文件被刪除,系統會允許你在以後恢復這個被刪除的文件

chattr -R 遞歸修改

PS:權限只是針對於目錄和文件本身,如果給一個目錄設置不可修改等權限,但是目錄內已存在的文件是可以進行修改的。

lsattr

lsattr 查看的是目錄下面的子目錄和文件的特殊屬性

lsattr +d 查看目錄本身的特殊屬性

lsattr +R 遞歸查看

舉例:

應用舉例:

1、用chattr命令防止系統中某個關鍵文件被修改:

# chattr +i /etc/resolv.conf

然後用mv /etc/resolv.conf等命令操作於該文件,都是得到Operation not permitted 的結果。vim編輯該文件時會提示W10: Warning: Changing a readonly file錯誤。要想修改此文件就要把i屬性去掉: chattr -i /etc/resolv.conf

# lsattr /etc/resolv.conf

會顯示如下屬性

----i-------- /etc/resolv.conf

2、讓某個文件只能往裏面追加數據,但不能刪除,適用於各種日誌文件:

# chattr +a /var/log/messages


2.14-2.17 權限和特殊屬性