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