一鸟召、屬主毙芜,屬組撤逢,其他人
http://www.reibang.com/p/8a6219c09e4c
Linux 系統(tǒng)中一切皆文件娄柳。
每個文件和目錄都有自己的屬主和屬組
屬主 表示這個文檔是屬于哪個用戶的寓辱,這個用戶必須存在于這個系統(tǒng)中。
屬組 表示這個文檔是屬于哪個組的赤拒, 這個組必須存在于這個系統(tǒng)中讶舰。
其他人 表示這個文檔和哪些用戶沒有任何的關(guān)系,此時那些用戶就是其他人的范疇需了。
二跳昼、記錄用戶和組的文件
/etc/passwd
保存了用戶的相關(guān)信息
/etc/shadow
保存了用戶的密碼等信息
/etc/group
保存了組的相關(guān)信息
三、文件屬性
文檔類型
1. `- :常規(guī)文件肋乍;即普通文件鹅颊;`
2. `d : directory 目錄文件`
3. `b : block device, 塊設(shè)備文件,支持以block(塊)為單位進(jìn)行隨機(jī)訪問`
4. `c :character device墓造,字符設(shè)備文件堪伍,支持以(字符)character為單位進(jìn)行線性訪問,`
5. `例如鍵盤觅闽、鼠標(biāo)(一次性讀取設(shè)備)帝雇。`
6. `major number :主設(shè)備號,用標(biāo)識設(shè)備文件蛉拙,今兒確定要加載的驅(qū)動程序`
7. `minor number :次設(shè)備號尸闸,用于標(biāo)識同一類型中的不同的設(shè)備`
8. `8位二進(jìn)制:0-255`
9. `l : symbolic link, 符號鏈接文件,就行 Windows 中的快捷方式;`
10. `p : pipe, 命名管道;`
11. `s : socker, 套接字文件吮廉;`
關(guān)于索引節(jié)點(diǎn)苞尝,課外閱讀資料阮一峰博客
關(guān)于權(quán)限部分
一個文檔的權(quán)限分為三部分,每個部分對應(yīng)了具體的對象(誰的宦芦,哪個組的宙址,其他人)。
每個部分有分為 3 個位调卑,每個位都對應(yīng)了不同的權(quán)限抡砂。所有的位置中,假如表示沒有權(quán)限恬涧,就在次位置用英文的短橫線 -
占位 舀患。
第一個位置是
讀權(quán)限
,有讀權(quán)限气破,就在此位置用r
表示,假如沒有餐抢,用英文的短橫線-
表示现使。
比如:r--
, 表示 只讀的權(quán)限。第二個位置是
寫權(quán)限
, 有寫權(quán)限旷痕,就在此位置用w
表示碳锈。第三個位置是
執(zhí)行權(quán)限
, 有寫權(quán)限欺抗, 就在此位置用x
表示售碳。
隨意練習(xí)一下, 開始你的表演。提問開始
修改文檔的權(quán)限和屬性
修改屬主和組
修改屬主和屬組的命令可以使用 chown
绞呈, 就是 change owner 的簡寫贸人。
chown 命令語法
chown [-R] 帳號名稱 文件或目錄
chown [-R] 帳號名稱:組名稱 文件或目錄
chown [-R] 帳號名稱.組名稱 文件或目錄
注意:
這里的賬號名稱和組名稱,必須存在于系統(tǒng)中佃声,在
/etc/passwd
和/etc/group
文件中有相應(yīng)的記錄艺智。
// 修改屬主和屬組
chown sshd.sshd a.txt
// 修改目錄及其下面所有的文件和目前的屬主和屬組, 需要創(chuàng)建這個目錄
chown -R sshd:sshd /opt/mysql/data
// 修改屬主
chown sshd b.txt
// 修改屬組, 注意組名 sshd 前面有個點(diǎn)
chown .sshd b.txt
修改權(quán)限
修改權(quán)限的命令使用 chmod
, 就是 change mode 的簡寫圾亏。
chmod 命令語法
chmod [-R] 權(quán)限表示方式 文件或目錄
-R 選項(xiàng)是對目錄進(jìn)行遞歸操作
權(quán)限的改變使用的是chmod這個指令十拣,但是,權(quán)限的設(shè)置方法有兩種志鹃, 分別可以使用數(shù)字或者是符號來進(jìn)行權(quán)限的變更夭问。
符號的方式
所謂的符號就是上圖中的 r
、w
和 x
曹铃。
那如何表示身份對象呢缰趋?
屬主, 就是 user 的意思, 可以使用
u
來表示屬組, 就是 group 的意思, 可以使用
g
來表示其他人埠胖, 就是 others 的意思, 可以使用
o
來表示所有人, 可以使用 all, 就用
a
來表示
增加權(quán)限使用英文的 +
符號
移除權(quán)限使用英文的 -
符號
設(shè)置權(quán)限使用英文的 =
符號
開始你的表演
-
設(shè)置
.bashrc
文件的權(quán)限糠溜,具體要求如下- 屬主為 可讀,可寫
- 屬組為 可讀
- 其他人為 可讀
chmod u=rw,g=r,o=r .bashrc
-
修改
.bashrc
文件的權(quán)限為如下描述- 屬主增加 可執(zhí)行權(quán)限
- 屬組增加 可寫直撤,可執(zhí)行權(quán)限
- 其他人移除 可讀權(quán)限
chmod u+x,g+wx,o-r .bashrc
-
修改
.bashrc
文件的權(quán)限為:- 給所有用戶增加可執(zhí)行權(quán)限
chmod a+x .bashrc
數(shù)字的方式
使用數(shù)字的方式操作權(quán)限非竿,就是把之前的每個角色的具體位置的的符號轉(zhuǎn)變成一個數(shù)字。
r
--> 4
w
--> 2
x
--> 1
那如何把這些數(shù)字對應(yīng)到具體的身份中呢谋竖,比如 屬主红柱、數(shù)組,其他人蓖乘。
對應(yīng)到每個身份上時锤悄,需要把三個位置的數(shù)字相加。
比如一個文檔的權(quán)限是 -rwxr--r--
嘉抒, 對應(yīng)的數(shù)字方式的權(quán)限是 744
.
文檔類型: -
代表普通文件
屬主:rwx
分別對應(yīng)了 4
2
1
零聚,相加后就是 7
屬組: r--
分別對應(yīng)了 4
0
0
, 相加后就是 4
其他人: r--
分別對應(yīng)了 4
0
0
, 相加后就是 4
開始你的表演
數(shù)字方式的權(quán)限設(shè)置,都是直接設(shè)置的些侍,沒有增加隶症、刪除之說。
- 設(shè)置文件
.bashrc
的權(quán)限為
屬主:可讀可寫可執(zhí)行
屬組: 可讀可執(zhí)行
其他人: 無權(quán)限 chomd 750 .bashrc
四岗宣、權(quán)限對于文件和目錄的意義
認(rèn)識 Linux 系統(tǒng)
分區(qū)和文件系統(tǒng)的基本認(rèn)知
由于盤片是圓的蚂会,并且通過機(jī)器手臂去讀寫數(shù)據(jù),盤片要轉(zhuǎn)動才能夠讓機(jī)器手臂讀寫耗式。因此胁住,通常數(shù)據(jù)寫入當(dāng)然就是以圓圈轉(zhuǎn)圈的方式讀寫啰!
所以刊咳,當(dāng)初設(shè)計就是在類似盤片同心圓上面切出一個一個的小區(qū)塊彪见,這些小區(qū)塊整合成一個圓形,讓機(jī)器手臂上的磁頭去存取娱挨。 這個小區(qū)塊就是磁盤的最小物理儲存單位企巢,稱之為扇區(qū) (sector),那同一個同心圓的扇區(qū)組合成的圓就是所謂的磁道(track)让蕾。 由于磁盤里面可能會有多個盤片浪规,因此在所有盤片上面的同一個磁道可以組合成所謂的柱面 (cylinder)。
原本硬盤的扇區(qū)都是設(shè)計成 512Byte 的容量探孝,但因?yàn)榻谝詠碛脖P的容量越來越大笋婿,為了減少數(shù)據(jù)量的拆解,所以新的大容量硬盤已經(jīng)有 4KByte 的扇區(qū)設(shè)計顿颅! 購買的時候也需要注意一下缸濒。也因?yàn)檫@個扇區(qū)的設(shè)計不同了,因此在磁盤的分區(qū)方面,目前有舊式的 MSDOS 相容模式庇配,以及較新的 GPT 模式斩跌。
一塊磁盤需要經(jīng)過分區(qū),之后對每個分區(qū)進(jìn)行格式化操作捞慌,操作系統(tǒng)才能用于存儲數(shù)據(jù)耀鸦。
一塊磁盤 --> 一大間房子
分區(qū) --> 分割成不同的房間
格式化 --> 規(guī)定每個房間的用途
規(guī)定每個房間的用途,就相當(dāng)于確定如何使用存放數(shù)據(jù)啸澡,這個過程中就需要制定一定的規(guī)則袖订,就是規(guī)定數(shù)據(jù)如何存放的硬盤的這個分區(qū)。這個規(guī)則稱為文件系統(tǒng)嗅虏。
為什么需要進(jìn)行格式化*呢洛姑?這是因?yàn)槊糠N操作系統(tǒng)所設(shè)置的文件屬性/權(quán)限并不相同, 為了存放這些文件所需的數(shù)據(jù)皮服,因此就需要將分區(qū)進(jìn)行格式化楞艾。
所以不同的操作系統(tǒng)也有自己獨(dú)有的文件系統(tǒng)。
對于 Windows 中龄广,有的文件系統(tǒng)比如 FAT32硫眯、NTFS 等
對于 Linux 系統(tǒng)中,有的文件系統(tǒng):EXT2蜀细、 EXT3、 EXT4戈盈、 XFS
大部分情況下奠衔,每種操作系統(tǒng)只能夠使用自己的文件系統(tǒng),也有一些特殊的塘娶,比如FAT32 多種操作系統(tǒng)都是可以支持的归斤,因?yàn)檫@個文件系統(tǒng)比較陳舊,支持的特性功能不多刁岸,所以大部分操作系統(tǒng)都支持脏里。
Mac 和 Windows 都能讀寫的文件系統(tǒng)是 ExFAT
Mac 、Linux虹曙、Windows 都是讀寫的是 Fat32迫横。
Fat32 系統(tǒng)缺點(diǎn)讀寫速度慢,并且單個文件的大小不能超過 4G, 比如不能存儲一個超過 4G的視頻或者 ISO格式的文件等
inode 和 block
Linux 系統(tǒng)中有很多高級的文件系統(tǒng)酝碳,這些文件系統(tǒng)中的文檔除了有文件內(nèi)容本身外矾踱,還有很多屬性,在管理這些內(nèi)容的時候疏哗,會把一個文檔這些內(nèi)容分為兩個部分存儲呛讲。
inode 部分和 block 部分
每個 inode 與 block 都有編號
- inode:記錄文件的屬性,一個文件占用一個inode,同時記錄此文件的數(shù)據(jù)所在的 block 號碼贝搁;
- block:實(shí)際記錄文件的內(nèi)容吗氏,若文件太大時,會占用多個 block 雷逆。
假設(shè)某一個文件的屬性與權(quán)限數(shù)據(jù)是放置到 inode 4 號(下圖較小方格內(nèi))弦讽,而這個 inode 記錄了文件數(shù)據(jù)的實(shí)際放置點(diǎn)為 2, 7, 13, 15 這四個 block 號碼,此時我們的操作系統(tǒng)就能夠根據(jù) block 號來排列磁盤的讀取順序关面,可以一口氣將四個 block 內(nèi)容讀出來坦袍! 那么數(shù)據(jù)的讀取就如同下圖中的箭頭所指定的模樣了。
關(guān)于 inode
inode 也可以稱為 inode table(表格)
inode 的內(nèi)容在記錄文件的屬性以及該文件實(shí)際數(shù)據(jù)是放置在哪幾號 block 內(nèi)等太! 基本上捂齐,inode 記錄的文件數(shù)據(jù)至少有下面這些:
- 該文件的存取模式(read/write/excute);
- 該文件的擁有者與群組(owner/group)缩抡;
- 該文件的容量奠宜;
- 該文件創(chuàng)建或狀態(tài)改變的時間(ctime);
- 最近一次的讀取時間(atime)瞻想;
- 最近修改的時間(mtime)压真;
- 定義文件特性的旗標(biāo)(flag),如 SetUID…蘑险;
- 該文件真正內(nèi)容的指向 (pointer)滴肿;
關(guān)于 block
block 可以稱為 data block
data block 顧名思義,就是存放數(shù)據(jù)的佃迄,但是泼差,block 對于文件和目錄有不同的意義。存放的數(shù)據(jù)不一樣呵俏,具體如下:
對于文件來說堆缘,就是存放真實(shí)是文件內(nèi)容的,比如文件內(nèi)容是 "hello shark" 就是存放 "hello shark" 這幾個字符串的普碎。
對于目錄吼肥,Linux 中一切皆文件,目錄其實(shí)也是文件麻车。目錄的 block 中存放了這個目錄下的文檔名和其對應(yīng)的 inode 號缀皱。像下面這樣
所以整個目錄和其下面的文檔的記錄方式和關(guān)系如下圖:
五、 權(quán)限與指令間的關(guān)系
我們知道權(quán)限對于使用者帳號來說是非常重要的动猬,因?yàn)樗梢韵拗剖褂谜吣懿荒茏x取/創(chuàng)建/刪除/修改文件或目錄唆鸡! 在這一章我們介紹了很多文件系統(tǒng)的管理指令,第五章則介紹了很多文件權(quán)限的意義枣察。在這個小節(jié)當(dāng)中争占, 我們就將這兩者結(jié)合起來燃逻,說明一下什么指令在什么樣的權(quán)限下才能夠運(yùn)行吧!_
1臂痕、讓使用者能進(jìn)入某目錄成為“可工作目錄”的基本權(quán)限為何:
- 可使用的指令:例如 cd 等變換工作目錄的指令伯襟;
- 目錄所需權(quán)限:使用者對這個目錄至少需要具有 x 的權(quán)限
- 額外需求:如果使用者想要在這個目錄內(nèi)利用 ls 查閱文件名,則使用者對此目錄還需要 r 的權(quán)限握童。
2姆怪、使用者在某個目錄內(nèi)讀取一個文件的基本權(quán)限為何?
- 可使用的指令:例如本章談到的 cat, more, less等等
- 目錄所需權(quán)限:使用者對這個目錄至少需要具有 x 權(quán)限澡绩;
- 文件所需權(quán)限:使用者對文件至少需要具有 r 的權(quán)限才行稽揭!
3、讓使用者可以修改一個文件的基本權(quán)限為何肥卡?
- 可使用的指令:例如 vi 文本編輯器等溪掀;
- 目錄所需權(quán)限:使用者在該文件所在的目錄至少要有 x 權(quán)限;
- 文件所需權(quán)限:使用者對該文件至少要有 r, w 權(quán)限
4步鉴、讓一個使用者可以創(chuàng)建一個文件的基本權(quán)限為何揪胃?
- 目錄所需權(quán)限:使用者在該目錄要具有 w,x 的權(quán)限,重點(diǎn)在 w 啦氛琢!
5喊递、讓使用者進(jìn)入某目錄并執(zhí)行該目錄下的某個指令之基本權(quán)限為何?
- 目錄所需權(quán)限:使用者在該目錄至少要有 x 的權(quán)限阳似;
- 文件所需權(quán)限:使用者在該文件至少需要有 x 的權(quán)限
例題:讓一個使用者 shark
能夠進(jìn)行“cp /dir1/file1 /dir2”的指令時骚勘,請說明 dir1, file1, dir2 的最小所需權(quán)限為何?答:執(zhí)行 cp 時撮奏, dmtsai 要“能夠讀取來源文件俏讹,并且寫入目標(biāo)文件!”所以應(yīng)參考上述第二點(diǎn)與第四點(diǎn)的說明挽荡! 因此各文件/目錄的最小權(quán)限應(yīng)該是:
- dir1 :至少需要有 x 權(quán)限藐石;
- file1:至少需要有 r 權(quán)限即供;
- dir2 :至少需要有 w, x 權(quán)限定拟。
例題:有一個文件全名為 /home/student/www/index.html ,各相關(guān)文件/目錄的權(quán)限如下:
drwxr-xr-x 23 root root 4096 Sep 22 12:09 /
drwxr-xr-x 6 root root 4096 Sep 29 02:21 /home
drwx------ 6 student student 4096 Sep 29 02:23 /home/student
drwxr-xr-x 6 student student 4096 Sep 29 02:24 /home/student/www
-rwxr--r-- 6 student student 369 Sep 29 02:27 /home/student/www/index.html
請問 shark 這個帳號(不屬于student群組)能否讀取 index.html 這個文件呢逗嫡?答:雖然 www 與 index.html 是可以讓 shark 讀取的權(quán)限青自,但是因?yàn)槟夸浗Y(jié)構(gòu)是由根目錄一層一層讀取的, 因此 shark 可進(jìn)入 /home 但是卻不可進(jìn)入 /home/student/ 驱证,既然連進(jìn)入 /home/student 都不許了延窜, 當(dāng)然就讀不到 index.html 了!所以答案是“shark不會讀取到 index.html 的內(nèi)容”抹锄!
那要如何修改權(quán)限呢逆瑞?其實(shí)只要將 /home/student 的權(quán)限修改為最小 711
荠藤,或者直接給予 755
就可以啦! 這很重要获高!
六哈肖、文檔默認(rèn)權(quán)限 umask
權(quán)限掩碼
-
umask -S
當(dāng)用戶創(chuàng)建文檔時,創(chuàng)建后的默認(rèn)權(quán)限計算方法
- 創(chuàng)建文件時:
(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r--
- 創(chuàng)建目錄時:
(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x
修改用戶的 umask 可以在 /etc/profile
和 /etc/bashrc
文件中修改念秧。
七淤井、 文件特殊權(quán)限: SUID, SGID, SBIT
Set UID
名詞介紹
二進(jìn)制文件 就是可以被執(zhí)行的文件,通俗說就是命令文件摊趾,程序文件币狠,就想是 windows 中的 .exe
文件。
二進(jìn)制文件也可以叫做二進(jìn)制程序
先看一個文件
? ~ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 27832 Jun 10 2014 /usr/bin/passwd
上面文件擁有者的權(quán)限部分中的 x
位置砾层,出現(xiàn)了一個 s
漩绵, 這個 s
標(biāo)識就代表了這個文件具有 SUID 特殊權(quán)限。
其作用和限制如下:
- SUID 權(quán)限僅對二進(jìn)制程序(binary program)有效梢为;
- 執(zhí)行者對于該程序需要具有 x 的可執(zhí)行權(quán)限渐行;
- 本權(quán)限僅在執(zhí)行該程序的過程中有效 (run-time);
- 在執(zhí)行此文件時铸董,執(zhí)行者將具有該程序擁有者 (owner) 的權(quán)限祟印。
Set GID
當(dāng) s 標(biāo)志在文件擁有者的 x 項(xiàng)目為 SUID,那 s 在群組的 x 時則稱為 Set GID,即 SGID .
當(dāng)一個文件具有 SGID(用的情況不多)
- SGID 對二進(jìn)制程序有用粟害;
- 程序執(zhí)行者對于該程序來說蕴忆,需具備
x
的權(quán)限;- 執(zhí)行者在執(zhí)行的過程中將會獲得該程序群組的權(quán)限悲幅!
當(dāng)一個目錄具有 SGID
- 用戶若對于此目錄具有 r 與 x 的權(quán)限時套鹅,該用戶能夠進(jìn)入此目錄;
- 用戶在此目錄下的有效群組(effective group)將會變成該目錄的群組汰具;
- 用途:若用戶在此目錄下具有 w 的權(quán)限(可以新建文件)卓鹿,則用戶所創(chuàng)建的新文件時,該新文件的群組與此目錄的群組相同留荔。
Sticky Bit
這個 Sticky Bit, SBIT 目前只針對目錄有效吟孙,對于文件已經(jīng)沒有效果了。
SBIT 對于目錄的作用是:
- 當(dāng)使用者對于此目錄具有 w, x 權(quán)限聚蝶,亦即具有寫入的權(quán)限時杰妓;
- 當(dāng)使用者在該目錄下創(chuàng)建文件或目錄時,僅有自己與 root 才有權(quán)力刪除該文件
ls -ld /tmp