|
一、前言 Linux下所有資源、設(shè)備均被視作文件來(lái)操作,而文件權(quán)限則是決定用戶(hù)可各文件操作的范圍,無(wú)論是平時(shí)使用Linux,還是寫(xiě)程序均涉及這方面。以下為個(gè)人學(xué)習(xí)的整理,供以后查閱。
二、 三種權(quán)限 1. 普通權(quán)限
2. 特殊權(quán)限 場(chǎng)景1:用戶(hù)A在調(diào)用程序B時(shí),且程序B需要修改文件C,而用戶(hù)A無(wú)權(quán)修改文件C,那么程序B同樣將被拒絕修改文件C。 原因:程序?qū)⑹褂谜{(diào)用者(就是用戶(hù)A)的用戶(hù)標(biāo)識(shí)去對(duì)系統(tǒng)作操作,程序的權(quán)限與調(diào)用者的權(quán)限一致。 需要:讓程序使用與調(diào)用者無(wú)關(guān)的用戶(hù)或用戶(hù)組標(biāo)識(shí),那么任何調(diào)用者執(zhí)行該程序時(shí)均無(wú)差異。 解決辦法:使用特殊權(quán)限SUID和GUID。
場(chǎng)景2:某用戶(hù)在執(zhí)行 rm -rf 目錄/* 時(shí),把所有者不是它的文件、目錄都誤刪除了。 原因:默認(rèn)情況下,只要用戶(hù)擁有某目錄的wx權(quán)限,則可以刪除、剪切該目錄下的所有文件、目錄,即使該用戶(hù)對(duì)該目錄下的文件、目錄任何權(quán)限都沒(méi)有。 需求:只刪除所有者為自己的文件、目錄。 解決辦法:使用特殊權(quán)限SBIT。
3. 隱藏權(quán)限 共13種,僅在文件系統(tǒng)格式為Ext2+才有效。
三、通過(guò)命令了解權(quán)限 上一節(jié)我們從概念上了解了linux的文件權(quán)限的種類(lèi),下面通過(guò)命令來(lái)實(shí)干一番。 1. 查看權(quán)限 輸入 ls -l 就可以查看當(dāng)前目錄下所有文件和子目錄的權(quán)限信息了。 假設(shè)回顯信息為 ①-②rws③r-x④r-x ⑤1 ⑥root ⑦root ⑧430540 ⑨Dec 20 18:27 ⑩/usr/sbin/passwd ,現(xiàn)在逐一分析其內(nèi)容。 ①. 首字符-,表示該文件為普通文件。 -,普通文件; d,目錄文件; l,符號(hào)鏈接; c,字符設(shè)備文件; b,字節(jié)設(shè)備文件; p,先進(jìn)先出文件; s,套接字文件。 ②. 第2~4個(gè)字符,表示所有者(owner)的權(quán)限 ③. 第5~7個(gè)字符,表示所屬組(group)的權(quán)限 ④. 第8~10個(gè)字符,表示其他用戶(hù)(other)的權(quán)限 ⑤. 第11個(gè)字符,表示硬鏈接數(shù) ⑥. 是文件所有者的用戶(hù)名稱(chēng)(owner) ⑦. 是文件所屬組的用戶(hù)組名稱(chēng)(group) ⑧. 是文件大小,以塊為單位,通過(guò) ls -lh 則會(huì)以KB,MB作單位 ⑨. 是最后修改日期 ⑩. 是文件或目錄的絕對(duì)路徑 從上述內(nèi)容我們可以得知Linux下的權(quán)限角色有三種,分別是所有者(owner)、所屬組(group)和其他用戶(hù)(other)。 2. 權(quán)限表示形式 [a]. 符號(hào)表示法 普通權(quán)限: r,讀權(quán)限; w,寫(xiě)權(quán)限;x,可執(zhí)行權(quán)限。 特殊權(quán)限: SUID權(quán)限只能設(shè)置在②中,s表示二進(jìn)制可執(zhí)行文件同時(shí)擁有SUID權(quán)限和x可執(zhí)行權(quán)限;S表示二進(jìn)制可執(zhí)行文件擁有SUID權(quán)限但沒(méi)有x可執(zhí)行權(quán)限。 SGID權(quán)限只能設(shè)置在③中,s表示二進(jìn)制可執(zhí)行文件或目錄同時(shí)擁有SGID權(quán)限和x可執(zhí)行權(quán)限;S表示二進(jìn)制可執(zhí)行文件或目錄擁有SGID權(quán)限但沒(méi)有x可執(zhí)行權(quán)限。 SBIT權(quán)限只能設(shè)置在④中,t表示目錄同時(shí)擁有SBIT權(quán)限和x可執(zhí)行權(quán)限;T表示目錄擁有SBIT權(quán)限但沒(méi)有x可執(zhí)行權(quán)限。
[b]. 數(shù)字表示法 數(shù)字表示法采用二進(jìn)制形式計(jì)算,八進(jìn)制形式設(shè)置的方式。 二進(jìn)制形式計(jì)算,1代表有權(quán)限,0代表無(wú)權(quán)限:
然后每三位為一組轉(zhuǎn)為八進(jìn)制,例如現(xiàn)在二進(jìn)制形式為100111101101,那么轉(zhuǎn)為八進(jìn)制則為4755。 然后通過(guò) chmod 4755 文件 就可以改變文件的權(quán)限, ls -l 回顯中權(quán)限部分則為rwsr-xr-x。 注意:1. 若不設(shè)置特殊權(quán)限時(shí),我們可以直接省去八進(jìn)制的第一位數(shù),例如: chmod 755 文件 ; 2. 采用數(shù)字表示法設(shè)置特殊權(quán)限,僅能啟動(dòng)特殊權(quán)限,卻無(wú)法關(guān)閉。例如,文件A擁有特殊權(quán)限SUID和SGID,執(zhí)行 chmod 0755 文件A ,但通過(guò) ls -l 查看權(quán)限依然為rwsr-sr-x。
四、通過(guò)符號(hào)表示法設(shè)置權(quán)限 通過(guò)數(shù)組表示法設(shè)置權(quán)限有時(shí)確實(shí)不夠方便,于是bash為我們提供了符號(hào)表示法來(lái)設(shè)置權(quán)限。 設(shè)置普通權(quán)限 // 為所有者、所屬組和其他用戶(hù)添加執(zhí)行的權(quán)限 chmod +x 文件路徑 // 為所有者、所屬組和其他用戶(hù)刪除執(zhí)行的權(quán)限 chmod -x 文件路徑 // 為所有者添加執(zhí)行的權(quán)限 chmod u+x 文件路徑 // 為所屬組添加執(zhí)行的權(quán)限 chmod g+x 文件路徑 // 為其他用戶(hù)添加執(zhí)行的權(quán)限 chmod o+x 文件路徑 // 為所有者、所屬組添加執(zhí)行的權(quán)限 chmod ug+x 文件路徑 // 為所有者、所屬組和其他用戶(hù)添加寫(xiě)、執(zhí)行的權(quán)限,取消讀權(quán)限 chmod =wx 文件路徑 // 為所有者、所屬組添加寫(xiě)、執(zhí)行的權(quán)限,取消讀權(quán)限 chmod ug=wx 文件路徑 設(shè)置特殊權(quán)限 // 開(kāi)啟、關(guān)閉SUID chmod u+s 文件名 chmod u-s 文件名 // 開(kāi)啟、關(guān)閉SGID chmod g+s 文件名 chmod g-s 文件名 // 開(kāi)啟、關(guān)閉SBIT chmod o+t 文件名 chmod o-t 文件名
五、改變所有者、所屬組 1. 查看用戶(hù)信息 2. 改變所有者、所屬組 僅root用戶(hù)才有權(quán)限執(zhí)行下列命令。 // 改變所有者 chown 用戶(hù)名 文件路徑 // 改變所屬組 chgrp 用戶(hù)組 文件路徑 // 改變所有者和所屬組 chown 用戶(hù)名.用戶(hù)組 文件路徑 // 遞歸改變所有者和所屬組 chown -R 用戶(hù)名.用戶(hù)組 目錄路徑
六、管理用戶(hù) 1. 添加用戶(hù) 命令: useradd [-u uid] [-g group] [-d home] [-s shell] 用戶(hù)名 示例: // 添加用戶(hù)標(biāo)識(shí) garfield # useradd garfield 并通過(guò)查看/etc/passwd、/etc/shadow和/etc/group文件內(nèi)容,檢查用戶(hù)是否創(chuàng)建成功。具體內(nèi)容如下 注意:在創(chuàng)建用戶(hù)時(shí),系統(tǒng)會(huì)根據(jù)/etc/login.defs和/etc/default/useradd文件的內(nèi)容對(duì)新用戶(hù)做基本設(shè)置。 /etc/login.defs文件內(nèi)容: /etc/default/useradd SKEL選項(xiàng)是指定用戶(hù)家目錄內(nèi)容是從`/etc/skel`復(fù)制過(guò)來(lái)的。 2. 設(shè)置密碼 命令: passwd 用戶(hù)名 密碼 3. 啟用、禁用賬號(hào) // 禁用 # usermod -L 用戶(hù)名 // 啟用 # usermod -U 用戶(hù)名 啟用禁用實(shí)質(zhì)就是在`/etc/shadow`文件中該用戶(hù)名對(duì)應(yīng)的記錄上,在用戶(hù)密碼前刪除、添加!(感嘆號(hào))來(lái)實(shí)現(xiàn)。 4. 其他 // 將用戶(hù)添加到用戶(hù)組 usermod -G 用戶(hù)組名 用戶(hù) // 改變用戶(hù)的用戶(hù)組 usermod -g 用戶(hù)組名 用戶(hù) // 修改用戶(hù)名 usermod -l 新用戶(hù)名 舊用戶(hù) // 刪除用戶(hù) userdel 用戶(hù)名
六、管理用戶(hù)組 // 添加用戶(hù)組 groupadd [-g gid [-o]] [-r] [-f] 用戶(hù)組名 // 修改用戶(hù)組名稱(chēng) groupmod -n 新用戶(hù)組名 舊用戶(hù)組名 // 刪除用戶(hù)組 groupdel 用戶(hù)組名
七、用戶(hù)、用戶(hù)組的配置文件 1. /etc/passwd,任何用戶(hù)都可以讀取該文件的內(nèi)容。存放各個(gè)用戶(hù)的用戶(hù)名稱(chēng)、加密后的密碼(若操作系統(tǒng)采用了shadow技術(shù),則用加密密碼在/etc/shadow文件中,這里用x或\*表示)、用戶(hù)ID(一個(gè)用戶(hù)ID可以對(duì)應(yīng)多個(gè)用戶(hù)名,每個(gè)用戶(hù)名擁有獨(dú)立的口令、家目錄和shell,但系統(tǒng)會(huì)認(rèn)為這些用戶(hù)名是同一個(gè)用戶(hù)。0是超級(jí)用戶(hù),1~99系統(tǒng)保留,100開(kāi)始是普通用戶(hù),默認(rèn)從500建普通用戶(hù)。整體取值范圍是0~65535)、用戶(hù)組ID(對(duì)應(yīng)/etc/group中的一條記錄)、注釋性描述字符串、家目錄、shell程序路徑<br/> 偽用戶(hù)(psuedousers):shell程序路徑為空或?yàn)?sbin/nologin,主要用于方便系統(tǒng)管理、滿(mǎn)足相應(yīng)系統(tǒng)進(jìn)程對(duì)文件屬性的要求。 偽用戶(hù)如下: bin,擁有可執(zhí)行的用戶(hù)命令文件 可通過(guò)設(shè)置"shell程序路徑"為某程序,限制某用戶(hù)進(jìn)入系統(tǒng)后僅能執(zhí)行該程序,程序執(zhí)行結(jié)束則退出系統(tǒng)。 2. /etc/shadow,僅超級(jí)用戶(hù)可以查看和修改,由pwconv命令根據(jù)/etc/passwd中的數(shù)據(jù)自動(dòng)生成,記錄為一對(duì)一關(guān)系。記錄格式為:用戶(hù)名、加密后的密碼(固定長(zhǎng)度為13個(gè)字符,空則表示沒(méi)有密碼,若含\./0-9A-Za-z的字符則無(wú)法登錄)、最后修改密碼的時(shí)間(以距離1970年1月1日的天數(shù)來(lái)計(jì)算)、最小時(shí)間間隔(修改密碼的最小天數(shù))、最大時(shí)間間隔(密碼有效天數(shù))、警告時(shí)間(從系統(tǒng)開(kāi)始警告用戶(hù)修改密碼到無(wú)法登錄的天數(shù))、不活動(dòng)時(shí)間(用戶(hù)沒(méi)有登錄活動(dòng),但賬號(hào)仍保持有效的最大天數(shù))、失效時(shí)間(用戶(hù)名的有效天數(shù)) 3./etc/group,存放用戶(hù)組名稱(chēng)、用戶(hù)組加密后的密碼(空、\*或x表示沒(méi)有密碼)、用戶(hù)組ID、成員用戶(hù)名稱(chēng)(成員用戶(hù)名稱(chēng)間用,隔開(kāi))
八、總結(jié) Linux的文件權(quán)限暫時(shí)了解到這里吧,以后繼續(xù)深入繼續(xù)補(bǔ)充! 尊重原創(chuàng),轉(zhuǎn)載請(qǐng)注明來(lái)自:http://www.cnblogs.com/fsjohnhuang/p/3999224.html ^_^肥仔John
九、參考 http://blog.csdn.net/fan_zhen_hua/article/details/2050009 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
來(lái)自: qweertt4747 > 《Linux》