權(quán)限)
文件的一般權(quán)限文件信息查看指令ll、ls -l構(gòu)成按文件歸屬性對(duì)象分為owner所屬者縮寫ugroup所屬組縮寫gother其他人縮寫o組成分析二進(jìn)制表達(dá)字符表示二進(jìn)制表示數(shù)字表示---0000--x0011-w-0102-wx0113r--1004r-x1015rw-1106rwx1117權(quán)限對(duì)文件對(duì)目錄r(read可以讀取文件的內(nèi)容可以列出目錄下的內(nèi)容即目錄下的文件的文件名w(write可以更改文件的內(nèi)容可以創(chuàng)建或者刪除目錄中的任意文件 只有 w 權(quán)限無法創(chuàng)建刪除文件需要和 x 權(quán)限一起使用x(execute)可以作為可執(zhí)行文件如腳本執(zhí)行 只有 x 權(quán)限不可執(zhí)行文件需要與 r 權(quán)限連用可以切換到目錄cdroot不受讀寫權(quán)限限制只受執(zhí)行權(quán)限限制修改文件文件所屬者和組chown修改文件或目錄的所有者和組參數(shù)作用-R遞歸修改目錄即所有子文件、子目錄的所屬者/組格式chown -參數(shù) 所有者/組 文件名/目錄名chown root file #將file文件的所屬者改為root chown zyz:zyz file #將file文件的所屬者/組改為zyz #遞歸修改目錄 mkdir test #創(chuàng)建文件夾test touch test/file{1..3} #再文件夾test下創(chuàng)建3個(gè)file文件 ll -d test/ ; ll test/ #查看test文件夾和文件夾下文件的信息 chown -R zyz:zyz test/ #修改test文件夾所屬者/組為zyz ll -d test/ ; ll test/修改文件權(quán)限chmod全名change mode修改文件或目錄的權(quán)限參數(shù)作用-R遞歸修改目錄下所有文件以及子目錄下所有文件權(quán)限字符型chmod -參數(shù) u/g/o/a /-/ r/x/w 文件/目錄名數(shù)字型chmod -參數(shù) nnn 文件/目錄名nnn用三位二進(jìn)制表示權(quán)限#字符型 touch a.txt #新建文件 ll a.txt chmod x a.txt #給文件的三者添加x權(quán)限 ll a.txt chmod ow a.txt #只給o(owner)添加w權(quán)限 ll a.txt #數(shù)字型 touch b.txt #新建文件 ll b.txt chmod 777 b.txt #給三者添加77111rwx權(quán)限 ll b.txt chmod 000 b.txt #三者權(quán)限清零 ll b.txt #遞歸添加文件夾權(quán)限 mkdir -p a/b #遞歸創(chuàng)建文件夾 touch a/b/c.txt tree a/ ll -d m1/ ; ll -d a/b/ ; ll -d a/b/c.txt #逐級(jí)查看權(quán)限 chmod -R 777 m1/ #修改a文件及文件里的權(quán)限為777 ll -d a/ ; ll -d a/b/ ; ll -d a/b/c.txt #a文件夾及文件夾內(nèi)的所有文件權(quán)限都是777特殊權(quán)限在Linux系統(tǒng)中文件除了rwx一般全權(quán)限外還有SET UIDSUIDSET GIDSGIDSticky Bit粘滯位用于對(duì)文件或目錄進(jìn)行更加靈活方便的訪問控制SUID普通用戶臨時(shí)獲得文件所有者權(quán)限所有者 u 執(zhí)行位顯示 s文件本身有 x 權(quán)限 或 S文件本身沒有 x 權(quán)限設(shè)置 SUIDchmod us取消 SUIDchmod u-s/etc/shadow僅root可讀寫普通用戶無權(quán)修改passwd 二進(jìn)制帶SUID 權(quán)限屬主 root普通用戶運(yùn)行 passwd 時(shí)臨時(shí)擁有 root 權(quán)限寫入 shadow 更新密碼ll /usr/bin/passwd # -rwsr-xr-x root屬主s代表SUID ll /etc/shadow # ---------- 僅root可讀可寫suid 僅對(duì)二進(jìn)制文件有效在執(zhí)行過程中調(diào)用者會(huì)暫時(shí)獲得該文件的所有者權(quán)限該權(quán)限只在程序執(zhí)行的過程中有效‘SGID在目錄下新建的文件和子目錄會(huì)繼承該目錄的所屬組Z可執(zhí)行文件設(shè)置普通用戶執(zhí)行此文件時(shí)臨時(shí)獲得文件所屬組權(quán)限所屬組 g 執(zhí)行位顯示 s 文件/目錄本身有 x 權(quán)限 或 S文件/目錄本身沒有 x 權(quán)限#實(shí)驗(yàn)準(zhǔn)備 mkdir /a ll -d /a groupadd b #添加所屬組b shown :b /a #修改所屬組為b ll -d /a #在a目錄沒有SGID權(quán)限的情況下創(chuàng)建文件文件不會(huì)繼承父目錄的所屬組 touch /a/aa ll /a/ chmod gs /a ll -d /a #在a目錄有SGID權(quán)限下創(chuàng)建文件會(huì)繼承父目錄的所屬組 touch /a/bb ll /a #如果目錄的其他人權(quán)限沒有w權(quán)限的話普通用戶創(chuàng)建文件不會(huì)繼承所屬組 #給其他人添加w權(quán)限 chmod ow /a ll -d /a su - #切換用戶再創(chuàng)建文件 touch /a/aa/aaa #普通用戶創(chuàng)建文件所屬組繼承父目錄Sticky Bit公共目錄用戶只能“刪除/重命名/移動(dòng)”自己創(chuàng)建的文件root除外其他人o執(zhí)行位顯示t目錄本身有 x 權(quán)限 或 T目錄本身沒有 x 權(quán)限#上述公共目錄文件不安全所有人都可以刪除甚至可以刪除root的文件 #給其他人這一組添加上 t 的權(quán)限使用 root 賬戶添加 ll -d /a chmod ot /a ll -d /a #假設(shè)rootfile為其他用戶的文件userfile為自己的文件 rm -rf /a/rootfile #輸出”不允許刪除其他用戶的文件“ rm -rf /a/userfile #刪除成功只能刪除自己的文件設(shè)置特殊權(quán)限格式指令SUIDchmod u ± sSGIDchmod g ± sSticky Bitchmod o ± t數(shù)字chmod nnnn???后三位是一般權(quán)限第一位是特殊權(quán)限第一位數(shù)字對(duì)應(yīng)權(quán)限如下表特殊權(quán)限二進(jìn)制表示數(shù)字表示-0000Sticky0011SGID0102SGID、Sticky0113SUID1004SUID、Sticky1015SUID、SGID1106SUID、SGID、Sticky1117ACL權(quán)限給指定用戶/目錄分配指定權(quán)限。上述權(quán)限的設(shè)置都是針對(duì)所屬者所屬組其他人這三個(gè)大類的限制如果要對(duì)其他人中的某一個(gè)人進(jìn)行限制就要用到 ACL 訪問控制列表來更加精確的限制某個(gè)人的權(quán)限getfacl查看ACL權(quán)限getfacl 文件名 #例子 touch a.cfg getfacl a.cfg #默認(rèn)無ACL權(quán)限setfacl設(shè)置ACL權(quán)限setfacl -參數(shù) 文件名#創(chuàng)建a目錄及所屬組a_group #所屬組里添加1、2用戶此文件權(quán)限為770 #創(chuàng)建旁聽用戶3設(shè)定為a目錄的ACL為r-x mkdir /a groupadd a_group useradd 1 useradd 2 gpasswd -M 1,2 a_group #將12用戶添加到a_group里-M為覆蓋組成員-a為追加 chown root:a_group /a chown 770 /a ll -d /a/ getfacl /a/ #查看a目錄下的ACL權(quán)限 useradd 3 setfacl -m u:3:rx /a/ ll -d /a/ #基本權(quán)限后有標(biāo)志說明其具有ACL權(quán)限 getfacl /a/ ..... mask::rwx #mask:最大允許上限。ACL里除了屬主和其他人(other)不受mask管控其他二外添加用戶權(quán)限都不能突破這個(gè)上限 ..... #測(cè)試 su - 3 cd /a/ touch a1 #輸出touch: cannot touch a1: Permission denied #刪除旁聽用戶的ACL權(quán)限 setfacl -x u:3 /a/ getfacl /a/ setfacl -x u:用戶名 文件名 #刪除指定用戶的ACL權(quán)限 setfacl -x g:組名 文件名 #刪除指定組的ACL權(quán)限 setfacl -b 文件名 #刪除文件的所有ACL權(quán)限權(quán)限掩碼umask顯示或設(shè)置文件/目錄的默認(rèn)權(quán)限在Linux中用戶創(chuàng)建新文件/目錄時(shí)系統(tǒng)會(huì)為新文件/目錄分配默認(rèn)權(quán)限默認(rèn)權(quán)限與umask值有關(guān)文件實(shí)際默認(rèn)權(quán)限理論默認(rèn)權(quán)限0666- umask值目錄實(shí)際默認(rèn)權(quán)限理論默認(rèn)權(quán)限0777- umask值umask #查看默認(rèn)umask值 #新建文件和目錄并查看默認(rèn)權(quán)限 touch a ll file mkdir b ll -d b/ umask 000 #臨時(shí)修改umask值 #永久修改 #法一 vim /etc/profile umask 0000 #在文件最后添加 source /etc/profile #法二 vim ~/.bashrc umask 0000 #在文件最后添加 source ~/.bashrc