1. 程式人生 > >Linux基礎教程之linux檔案許可權深度解讀

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 模式方式顯示
[[email protected]: /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檢視檔案的隱藏屬性

  1. chattr [+-=] -R(遞迴處理)
    +i 不能刪除,改名,更改
    +a 只能追加(適用於一些日誌)
    +c 將目錄或檔案壓縮後存放
    +s 保密性刪除檔案或目錄
    +S 即時更新檔案或目錄
    +u 預防意外刪除
    +A 鎖定atime
  2. 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/
[[email protected]: /]# 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檔案
[[email protected]: test]# touch at [430][[email protected]: 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許可權
[email protected] mnt]# setfacl -m u:user1:rwx share //為目錄新增ower = user1 ,並賦予rwx 的權根。 [[email protected] 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