一、屬主商架,屬組余舶,其他人
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)信息
三坯认、文件屬性
文檔類型
- :常規(guī)文件;即普通文件氓涣;
d : directory 目錄文件
b : block device, 塊設(shè)備文件鹃操,支持以block(塊)為單位進行隨機訪問
c :character device,字符設(shè)備文件春哨,支持以(字符)character為單位進行線性訪問,
例如鍵盤恩伺、鼠標(一次性讀取設(shè)備)。
major number :主設(shè)備號,用標識設(shè)備文件玄妈,今兒確定要加載的驅(qū)動程序
minor number :次設(shè)備號,用于標識同一類型中的不同的設(shè)備
8位二進制:0-255
l : symbolic link, 符號鏈接文件,就行 Windows 中的快捷方式燃观;
p : pipe, 命名管道;
s : socker, 套接字文件便瑟;
關(guān)于索引節(jié)點缆毁,課外閱讀資料阮一峰博客
關(guān)于權(quán)限部分
一個文檔的權(quán)限分為三部分,每個部分對應了具體的對象(誰的到涂,哪個組的脊框,其他人)。
每個部分有分為 3 個位践啄,每個位都對應了不同的權(quán)限浇雹。所有的位置中,假如表示沒有權(quán)限屿讽,就在次位置用英文的短橫線 -
占位 昭灵。
第一個位置是
讀權(quán)限
,有讀權(quán)限伐谈,就在此位置用r
表示烂完,假如沒有,用英文的短橫線-
表示诵棵。
比如:r--
, 表示 只讀的權(quán)限抠蚣。第二個位置是
寫權(quán)限
, 有寫權(quán)限,就在此位置用w
表示非春。第三個位置是
執(zhí)行權(quán)限
柱徙, 有寫權(quán)限, 就在此位置用x
表示奇昙。
隨意練習一下, 開始你的表演护侮。提問開始
修改文檔的權(quán)限和屬性
修改屬主和組
修改屬主和屬組的命令可以使用 chown
, 就是 change owner 的簡寫储耐。
chown 命令語法
chown [-R] 帳號名稱 文件或目錄 chown [-R] 帳號名稱:組名稱 文件或目錄 chown [-R] 帳號名稱.組名稱 文件或目錄
注意:
這里的賬號名稱和組名稱羊初,必須存在于系統(tǒng)中,在
/etc/passwd
和/etc/group
文件中有相應的記錄什湘。
// 修改屬主和屬組
chown sshd.sshd a.txt
// 修改目錄及其下面所有的文件和目前的屬主和屬組长赞, 需要創(chuàng)建這個目錄
chown -R sshd:sshd /opt/mysql/data
// 修改屬主
chown sshd b.txt
// 修改屬組, 注意組名 sshd 前面有個點
chown .sshd b.txt
修改權(quán)限
修改權(quán)限的命令使用 chmod
, 就是 change mode 的簡寫。
chmod 命令語法
chmod [-R] 權(quán)限表示方式 文件或目錄
-R 選項是對目錄進行遞歸操作
權(quán)限的改變使用的是chmod這個指令闽撤,但是得哆,權(quán)限的設(shè)置方法有兩種, 分別可以使用數(shù)字或者是符號來進行權(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ù)字對應到具體的身份中呢,比如 屬主格遭、數(shù)組哈街,其他人。
對應到每個身份上時拒迅,需要把三個位置的數(shù)字相加骚秦。
比如一個文檔的權(quán)限是 -rwxr--r--
, 對應的數(shù)字方式的權(quán)限是 744
.
文檔類型: -
代表普通文件
屬主:rwx
分別對應了 4
2
1
璧微,相加后就是 7
屬組: r--
分別對應了 4
0
0
, 相加后就是 4
其他人: r--
分別對應了 4
0
0
, 相加后就是 4
開始你的表演
數(shù)字方式的權(quán)限設(shè)置作箍,都是直接設(shè)置的,沒有增加前硫、刪除之說胞得。
- 設(shè)置文件
.bashrc
的權(quán)限為
屬主:可讀可寫可執(zhí)行
屬組: 可讀可執(zhí)行
其他人: 無權(quán)限
chomd 750 .bashrc
四、權(quán)限對于文件和目錄的意義
認識 Linux 系統(tǒng)
分區(qū)和文件系統(tǒng)的基本認知
由于盤片是圓的屹电,并且通過機器手臂去讀寫數(shù)據(jù)阶剑,盤片要轉(zhuǎn)動才能夠讓機器手臂讀寫。因此危号,通常數(shù)據(jù)寫入當然就是以圓圈轉(zhuǎn)圈的方式讀寫啰牧愁!
所以,當初設(shè)計就是在類似盤片同心圓上面切出一個一個的小區(qū)塊外莲,這些小區(qū)塊整合成一個圓形猪半,讓機器手臂上的磁頭去存取。 這個小區(qū)塊就是磁盤的最小物理儲存單位偷线,稱之為扇區(qū) (sector)磨确,那同一個同心圓的扇區(qū)組合成的圓就是所謂的磁道(track)。 由于磁盤里面可能會有多個盤片声邦,因此在所有盤片上面的同一個磁道可以組合成所謂的柱面 (cylinder)乏奥。
原本硬盤的扇區(qū)都是設(shè)計成 512Byte 的容量,但因為近期以來硬盤的容量越來越大亥曹,為了減少數(shù)據(jù)量的拆解邓了,所以新的大容量硬盤已經(jīng)有 4KByte 的扇區(qū)設(shè)計盏檐! 購買的時候也需要注意一下。也因為這個扇區(qū)的設(shè)計不同了驶悟,因此在磁盤的分區(qū)方面,目前有舊式的 MSDOS 相容模式材失,以及較新的 GPT 模式痕鳍。
一塊磁盤需要經(jīng)過分區(qū),之后對每個分區(qū)進行格式化操作龙巨,操作系統(tǒng)才能用于存儲數(shù)據(jù)笼呆。
一塊磁盤 --》 一大間房子
分區(qū) --》 分割成不同的房間
格式化 --》 規(guī)定每個房間的用途
規(guī)定每個房間的用途,就相當于確定如何使用存放數(shù)據(jù)旨别,這個過程中就需要制定一定的規(guī)則诗赌,就是規(guī)定數(shù)據(jù)如何存放的硬盤的這個分區(qū)。這個規(guī)則稱為文件系統(tǒng)秸弛。
為什么需要進行格式化*呢铭若?這是因為每種操作系統(tǒng)所設(shè)置的文件屬性/權(quán)限并不相同, 為了存放這些文件所需的數(shù)據(jù)递览,因此就需要將分區(qū)進行格式化叼屠。
所以不同的操作系統(tǒng)也有自己獨有的文件系統(tǒng)。
對于 Windows 中绞铃,有的文件系統(tǒng)比如 FAT32镜雨、NTFS 等
對于 Linux 系統(tǒng)中,有的文件系統(tǒng):EXT2儿捧、 EXT3荚坞、 EXT4、 XFS
大部分情況下菲盾,每種操作系統(tǒng)只能夠使用自己的文件系統(tǒng)颓影,也有一些特殊的,比如FAT32 多種操作系統(tǒng)都是可以支持的亿汞,因為這個文件系統(tǒng)比較陳舊瞭空,支持的特性功能不多,所以大部分操作系統(tǒng)都支持疗我。
Mac 和 Windows 都能讀寫的文件系統(tǒng)是 ExFAT
Mac 咆畏、Linux、Windows 都是讀寫的是 Fat32吴裤。
Fat32 系統(tǒng)缺點讀寫速度慢旧找,并且單個文件的大小不能超過 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:實際記錄文件的內(nèi)容甸饱,若文件太大時沦童,會占用多個 block 。
假設(shè)某一個文件的屬性與權(quán)限數(shù)據(jù)是放置到 inode 4 號(下圖較小方格內(nèi))叹话,而這個 inode 記錄了文件數(shù)據(jù)的實際放置點為 2, 7, 13, 15 這四個 block 號碼偷遗,此時我們的操作系統(tǒng)就能夠根據(jù) block 號來排列磁盤的讀取順序,可以一口氣將四個 block 內(nèi)容讀出來驼壶! 那么數(shù)據(jù)的讀取就如同下圖中的箭頭所指定的模樣了氏豌。
關(guān)于 inode
inode 也可以稱為 inode table(表格)
inode 的內(nèi)容在記錄文件的屬性以及該文件實際數(shù)據(jù)是放置在哪幾號 block 內(nèi)! 基本上热凹,inode 記錄的文件數(shù)據(jù)至少有下面這些:
- 該文件的存取模式(read/write/excute)泵喘;
- 該文件的擁有者與群組(owner/group);
- 該文件的容量碌嘀;
- 該文件創(chuàng)建或狀態(tài)改變的時間(ctime)涣旨;
- 最近一次的讀取時間(atime);
- 最近修改的時間(mtime)股冗;
- 定義文件特性的旗標(flag)霹陡,如 SetUID...;
- 該文件真正內(nèi)容的指向 (pointer)止状;
關(guān)于 block
block 可以稱為 data block
data block 顧名思義烹棉,就是存放數(shù)據(jù)的,但是怯疤,block 對于文件和目錄有不同的意義浆洗。存放的數(shù)據(jù)不一樣,具體如下:
對于文件來說集峦,就是存放真實是文件內(nèi)容的伏社,比如文件內(nèi)容是 "hello shark" 就是存放 "hello shark" 這幾個字符串的。
對于目錄塔淤,Linux 中一切皆文件摘昌,目錄其實也是文件。目錄的 block 中存放了這個目錄下的文檔名和其對應的 inode 號高蜂。像下面這樣
所以整個目錄和其下面的文檔的記錄方式和關(guān)系如下圖:
五聪黎、 權(quán)限與指令間的關(guān)系
我們知道權(quán)限對于使用者帳號來說是非常重要的,因為他可以限制使用者能不能讀取/創(chuàng)建/刪除/修改文件或目錄备恤! 在這一章我們介紹了很多文件系統(tǒng)的管理指令稿饰,第五章則介紹了很多文件權(quán)限的意義锦秒。在這個小節(jié)當中, 我們就將這兩者結(jié)合起來喉镰,說明一下什么指令在什么樣的權(quán)限下才能夠運行吧旅择!_
1、讓使用者能進入某目錄成為“可工作目錄”的基本權(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)限,重點在 w 啦早抠!
5霎烙、讓使用者進入某目錄并執(zhí)行該目錄下的某個指令之基本權(quán)限為何?
- 目錄所需權(quán)限:使用者在該目錄至少要有 x 的權(quán)限蕊连;
- 文件所需權(quán)限:使用者在該文件至少需要有 x 的權(quán)限
例題:讓一個使用者 shark
能夠進行“cp /dir1/file1 /dir2”的指令時悬垃,請說明 dir1, file1, dir2 的最小所需權(quán)限為何?答:執(zhí)行 cp 時甘苍, dmtsai 要“能夠讀取來源文件尝蠕,并且寫入目標文件!”所以應參考上述第二點與第四點的說明载庭! 因此各文件/目錄的最小權(quán)限應該是:
- 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)限靡挥,但是因為目錄結(jié)構(gòu)是由根目錄一層一層讀取的序矩, 因此 shark 可進入 /home 但是卻不可進入 /home/student/ ,既然連進入 /home/student 都不許了跋破, 當然就讀不到 index.html 了簸淀!所以答案是“shark不會讀取到 index.html 的內(nèi)容”瓶蝴!
那要如何修改權(quán)限呢?其實只要將 /home/student 的權(quán)限修改為最小 711
租幕,或者直接給予 755
就可以啦舷手! 這很重要!
六劲绪、文檔默認權(quán)限 umask
權(quán)限掩碼
umask -S
當用戶創(chuàng)建文檔時男窟,創(chuàng)建后的默認權(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
名詞介紹
二進制文件 就是可以被執(zhí)行的文件歉眷,通俗說就是命令文件,程序文件颤枪,就想是 windows 中的 .exe
文件汗捡。
二進制文件也可以叫做二進制程序
先看一個文件
? ~ 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
標識就代表了這個文件具有 SUID 特殊權(quán)限扇住。
其作用和限制如下:
- SUID 權(quán)限僅對二進制程序(binary program)有效;
- 執(zhí)行者對于該程序需要具有 x 的可執(zhí)行權(quán)限盗胀;
- 本權(quán)限僅在執(zhí)行該程序的過程中有效 (run-time)艘蹋;
- 在執(zhí)行此文件時,執(zhí)行者將具有該程序擁有者 (owner) 的權(quán)限票灰。
給一個文件設(shè)置 SUID
chmod u+s file
Set GID
當 s 標志在文件擁有者的 x 項目為 SUID女阀,那 s 在群組的 x 時則稱為 Set GID,即 SGID .
當一個文件具有 SGID(用的情況不多)
- SGID 對二進制程序有用;
- 程序執(zhí)行者對于該程序來說屑迂,需具備
x
的權(quán)限强品;- 執(zhí)行者在執(zhí)行的過程中將會獲得該程序群組的權(quán)限!
當一個目錄具有 SGID
- 用戶若對于此目錄具有 r 與 x 的權(quán)限時屈糊,該用戶能夠進入此目錄的榛;
- 用戶在此目錄下的有效群組(effective group)將會變成該目錄的群組;
- 用途:若用戶在此目錄下具有 w 的權(quán)限(可以新建文件)逻锐,則用戶所創(chuàng)建的新文件時夫晌,該新文件的群組與此目錄的群組相同。
Sticky Bit
這個 Sticky Bit, SBIT 目前只針對目錄有效昧诱,對于文件已經(jīng)沒有效果了晓淀。
SBIT 對于目錄的作用是:
- 當使用者對于此目錄具有 w, x 權(quán)限,亦即具有寫入的權(quán)限時盏档;
- 當使用者在該目錄下創(chuàng)建文件或目錄時凶掰,僅有自己與 root 才有權(quán)力刪除該文件
ls -ld /tmp
設(shè)置 SBIT
chmod o+t a/