Linux基礎(chǔ)教程之linux文件權(quán)限深度解讀
基本命令
1.cut
:?cat /etc/passwd | cut -d’:’ -f7| uniq -c| sort -nr
2.authconfig 修改加密方式
- –passalgo=sha256 — update
3.scp 上傳文件
- -r dir ip:path 傳目錄
- file ip:path傳文件
- -P port 指定端口
4.rsync 同步文件
- -avz 源文件 ip:path
scp和rsync都是基于ssh協(xié)議
5.id
- -u顯示uid;-g顯示gid;-G顯示附屬組id
- -nu顯示用戶名;-ng組名;-nG附加組名
6.su
: -user -c ‘commond’以某個(gè)用戶身份執(zhí)行commond
加-與不加的區(qū)別: su UserName :非登錄式切換,即不會(huì)讀取目標(biāo)用戶的配置 文件,不改變當(dāng)前工作目錄 su – UserName :登錄式切換,會(huì)讀取目標(biāo)用戶的配置文件 ,切換至家目錄,完全切換
7.查看內(nèi)核信息
- cat /etc/redhat release 查看系統(tǒng)版本
- uname –r 查看內(nèi)核 #uname –m 查看32 or 64位系統(tǒng)
- uname –a 查看內(nèi)核完整信息
8.新建一個(gè)500M的磁盤
dd if=/dev/zero of=/app/disk bs=1M count=500 mount -o loop /app/disk/ /mnt/disk
文件管理
文件權(quán)限說(shuō)明:
- r: 可使用文件查看類工具獲取其內(nèi)容(cat nano)
- w: 可修改其內(nèi)容
- x: 可以把此文件提請(qǐng)內(nèi)核啟動(dòng)為一個(gè)進(jìn)程
目錄權(quán)限說(shuō)明:
- r: 可以使用ls 查看此目錄中文件列表
- w: 可在此目錄中創(chuàng)建文件,也可刪除此目錄中的可讀文件(目錄還必須要有x權(quán)限)
- x: 可以使用ls -l 查看此目錄中文件列表,可以cd 進(jìn)入此
12.chown
- user file修改文件的屬主
- user:gname file 修改屬主和屬組
- :gname file 修改屬組
- user file修改文件的屬主
- user.gname file 修改屬主和屬組
- .gname file 修改屬組
- option
- –reference=/path/to/filename file 指定為與參考目錄權(quán)限一致(屬主屬組同時(shí)修改)
- -R user:gname dir 遞歸修改dir下所有文件權(quán)限
13.chmod[OPTION]… MODE[,MODE]… FILE…
MODE:修改一類用戶的所有權(quán)限:u= g= o= ug= a= u=,g=修改一類用戶某位或某些位權(quán)限u+ u- g+ g- o+ o- a+ a- + –
- -R 遞歸修改
- –reference=/path/to/file file
14.chgrp
GRPNAME file… (修改所屬組) -R 遞歸修改 –reference=/path/to/file file
chgrp sales testfile chown root:admins testfile chmod u+wx,g-r,o=rx file chmod -R g+rwX /testdir chmod 600 file chown mage testfile
對(duì)目錄有w權(quán)限即可刪除目錄下的文件
15.umask 遮罩碼
- 目錄權(quán)限默認(rèn)655,文件權(quán)限默認(rèn)644
root為022,普通用戶為:002,故root用戶創(chuàng)建的目錄權(quán)限為644,普通用戶創(chuàng)建文件權(quán)限為:775 umask的計(jì)算,講最大位權(quán)限去除(文件最大位666.目錄777),umask為1去除.為0保留 umask:022 default:644 umask 000 010 010 max 110 110 110 default 110 100 100 得到default644 目錄默認(rèn)權(quán)限:777-umask 文件默認(rèn)權(quán)限:666-umask,所得結(jié)果的奇數(shù)位加1?針對(duì)文件速算:666-022的結(jié)果偶數(shù)位不變.基數(shù)位加1 目錄直接相減?mask 只影響除所有者和other 的之外的人和組的最大權(quán)限 Mask 需要與用戶的權(quán)限進(jìn)行邏輯與運(yùn)算后,才能變成有限的 權(quán)限(Effective Permission)
- 更改遮罩碼:umask 137或者 umask u=rw,g=r,o=(注意這種設(shè)置方式即是目錄的默認(rèn)權(quán)限)
- 目錄默認(rèn)不能具有執(zhí)行權(quán)限,如果算得的結(jié)果中有執(zhí)行權(quán)限則將其權(quán)限加一,算得權(quán)限小于0則為0
- umask –S 模式方式顯示
[root@yongge: /root]# umask -S u=rwx,g=rx,o=rx
- v umask –p 輸出可被調(diào)用(輸出umask 0002)?umask -p >> .bashrc?= v 全局設(shè)置: /etc/bashrc 用戶設(shè)置:~/.bashrc
16.特殊權(quán)限
- SUID 特殊用戶權(quán)限(只作用于文件)只對(duì)二進(jìn)制可執(zhí)行程序有效
何一個(gè)可執(zhí)行程序文件能不能啟動(dòng)為進(jìn)程:取決發(fā)起者對(duì)程序文件是否擁有執(zhí)行權(quán)限.啟動(dòng)為進(jìn)程之后,其進(jìn)程的屬主為原程序文件的屬主
一旦可執(zhí)行文件擁有SUID權(quán)限,那么其他用戶就可以以這個(gè)文件的擁有者的身份去執(zhí)行這個(gè)文件
chmod u+s FILE...
chmod u-s FILE...
chmod 4644 FILE...
chmod 0644 FILE...
- SGID 特殊組權(quán)限(作用于文件或目錄)
一旦某目錄被設(shè)定了SGID ,則對(duì)此目錄有寫權(quán)限的用戶在此 目錄中創(chuàng)建的文件所屬的組為此目錄的屬組
一旦具有可執(zhí)行的文件夾那么其他用戶可以以文件擁有組的身份去執(zhí)行這個(gè)文件
chmod g+s FILE...
chmod g-s FILE...
chmod 2644 FILE...
chmod 0644 FILE...
- sticky 黏滯位 (作用于目錄,例如/tmp/)
在目錄設(shè)置Sticky 位,不管有無(wú)寫權(quán)限,任何人都能在此目錄創(chuàng)建文件但只有文件的所有者或root可 以刪除該文件
chmod o+t DIR...
chmod o-t DIR...
chmod 1644 DIR...
chmod 0644 DIR...
drwxrwxrwt. 8 root root 4096 Mar 30 08:57 tmp
SUID: user, 占據(jù)屬主的執(zhí)行權(quán)限位
- s: 屬主擁有x 權(quán)限
- S :屬主沒(méi)有x 權(quán)限
SGID: group, 占據(jù)屬組的執(zhí)行權(quán)限位
- s: group 原文件擁有x 權(quán)限
- S :group 原文件沒(méi)有x 權(quán)限
Sticky: other, 占據(jù)other 的執(zhí)行權(quán)限位
- t: other 擁有x 權(quán)限
- T :other 沒(méi)有x 權(quán)限
權(quán)限為映射
SUID SGID STICKY 000 0 001 1 010 2 011 3 100 4 101 5 110 6 111 7 chmod 4777 /tmp/a.txt
訪問(wèn)控制列表ACL(Access Control List)
: 對(duì)某個(gè)文件添加一個(gè)用戶白名單,除了文件的所有者,所屬組和其它人,可以對(duì)更多的用戶設(shè)置權(quán)限CentOS7 默認(rèn)創(chuàng)建的xfs 和ext4 文件系統(tǒng)具有ACL 功能CentOS7 之前版本,默認(rèn)手工創(chuàng)建的ext4 文件系統(tǒng)無(wú)ACL功能.需手動(dòng)增加
tune2fs –o acl /dev/sdb1
mount –o acl /dev/sdb1 /mnt/test
17.lsattr查看文件的隱藏屬性
18. chattr [+-=] -R(遞歸處理)
- +i 不能刪除,改名,更改
- +a 只能追加(適用于一些日志)
- +c 將目錄或文件壓縮后存放
- +s 保密性刪除文件或目錄
- +S 即時(shí)更新文件或目錄
- +u 預(yù)防意外刪除
- +A 鎖定atime
20. getfacl查看文件的隱藏屬性
21.setfacl 設(shè)置訪問(wèn)權(quán)限
- setfacl -k dir 刪除默認(rèn)ACL 權(quán)限
- setfacl –b file1 清除所有ACL
- -x (u|g|o):(uname|gname)移出權(quán)限列表
- -M通過(guò)文件批量設(shè)置.例如新建acl.txt,內(nèi)容如下:
u:lee:rwx g:ftp:rw g:admins:rwx setfacl -M acl.txt file1
?
- –set 選項(xiàng)會(huì)把原有的ACL 項(xiàng)都刪除,用新的替代,需要注 意的是一定要包含UGO 的設(shè)置,不能象-m 一樣只是添加ACL就可以 ? 示例:?setfacl –set u::rw,u:wang:rw,g::r,o::- file1
d操作符注意事項(xiàng)
先明白兩個(gè)概念:Defalt ACL 和Access ACL Default ACL為目錄的默認(rèn)訪問(wèn)權(quán)限列表,一旦設(shè)置了默認(rèn).那么此目錄下的所有文件和目錄會(huì)繼承這個(gè)默認(rèn)設(shè)置,但是需要注意的是.默認(rèn)權(quán)限對(duì)目錄本身并沒(méi)有作用;Access ACL訪問(wèn)權(quán)限控制.不具有繼承性;例如: 例如setfacl -m d:u:wang:rx dir1中的d就是將dir1設(shè)置為默認(rèn)權(quán)限列表,這樣dir1下面新建的文件或目錄都會(huì)把wang這個(gè)用戶列為rx權(quán)限;
實(shí)例:讓lee用戶具有test目錄下的新文件或目錄的rwx權(quán)限
setfacl -m d:u:lee:rwx /test/
[root@yongge: /]# getfacl /test getfacl: Removing leading '/' from absolute path names #file: test #owner: root #group: root user::rwx
group::rwx
other::rwx default:user::rwx default:user:root:rwx default:user:lee:rwx default:group::rwx default:mask::rwx default:other::rwx
下面在test目錄下新建at文件
[root@yongge: test]# touch at [430][root@yongge: test]# getfacl at #file: at #owner: root #group: root user::rw-
user:root:rwx #effective:rw- user:lee:rwx #effective:rw- group::rwx #effective:rw- mask::rw-
other::rw-
可以看到at文件具有了lee的rwx權(quán)限
root@RedHat-7 mnt]# setfacl -m u:user1:rwx share //為目錄添加ower = user1 ,并賦予rwx 的權(quán)根。 [root@redhat-7 mnt]# setfacl -d -m u:user1:rwx share //為目錄添加默認(rèn)的acl權(quán)限,此目錄下創(chuàng)建目錄和文件都會(huì)繼承此權(quán)限信息 ? mount -o acl /directory
? getfacl file |directory
? setfacl -m u:wang:rwx file|directory
? setfacl -Rm g:sales:rwX directory
? setfacl -M file.acl file|directory
? setfacl -m g:salesgroup:rw file| directory
? setfacl -m d:u:wang:rx directory
? setfacl -x u:wang file |directory
setfacl -x d:g:lee ./dir刪除lee組的默認(rèn)訪文列表權(quán)限
? setfacl -X file.acl directory 通過(guò)特定格式的文件刪除訪問(wèn)權(quán)限.文件格式如下 u:lee g:root
? getfacl file1 | setfacl --set-file=- file2 復(fù)制file1(-接受前一個(gè)命令的標(biāo)準(zhǔn)輸出)
的 的acl 權(quán)限給file2
ACL的umask對(duì)other不生效,本質(zhì)是權(quán)限的限高線,不管目前有什么權(quán)限,一旦設(shè)置mask則最大權(quán)限由mask決定setfacl -m mask::rw 則此文件或目錄的最高權(quán)限不超過(guò)rw
22.備份和恢復(fù)ACL
: 主要的文件操作命令cp 和mv 都支持ACL ,只是cp 命令需要 加上-p 參數(shù)。但是tar 等常見的備份工具是不會(huì)保留目錄 和文件的ACL 信息
練習(xí)
- 在/testdir/dir 里創(chuàng)建的新文件自動(dòng)屬于g1 組,組 g2 的成員如:alice 能對(duì)這些新文件有讀寫權(quán)限,組g3 的成員如:tom 只能對(duì)新文件有讀權(quán)限,其它用戶(不 屬于g1,g2,g3 )不能訪問(wèn)這個(gè)文件夾。?chown g:g1 /testdir/dir chmod g+s /testdir/dir setfacl -m d:g:g2:rw /testdir/dir
- 備份/testdir/dir 里所有文件的ACL 權(quán)限到 /root/acl.txt 中,清除/testdir/dir 中所有ACL 權(quán)限 ,最后還原ACL
getfacl -R /testdir/dir >>/root/acl.txt setfacl -b /testdir/dir setfacl –restore=/root/acl.txt