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