Try   HackMD

Linux File Access Permission

Introduction

  • 在 linux 中,每個檔案都會有自己的檔案權限,可以利用 ls -l 或是 ll 來查看
$ ls -l
drwxrwxr-x+ 46 root  admin   1.4K 10  1 11:33 Applications/
drwxr-xr-x  67 root  wheel   2.1K  8 30 09:18 Library/
drwxr-xr-x@  8 root  wheel   256B  8 11 02:18 System/
...
  • 第一個值

    • - 為檔案,d 表示目錄,l 表示連結檔案 (link)
  • 去除掉最一開頭的 d,分為三組值

    • r: readable
    • w: writable
    • x: executable
    • -: 表示無權限
    • 其實它是二進制的三個值
      • 無權限即為 000
  • 而分三組為

    • owner 的權限
    • member in group 的權限
    • others 的權限
    • 每組將其二進制轉為十進制
      Number Description
      7 (111) read, write, and execute
      6 (110) read and write
      5 (101) read and execute
      4 (100) read only
      3 (011) write and execute
      2 (010) write only
      1 (001) execute only
      0 (000) no permission
  • in nodejs
    ​​​​fs.chmodSync('my_file.txt', 0o765);
    
    • For example, the octal value 0o765 means:
      • The owner may read, write and execute the file.
      • The group may read and write the file.
      • Others may read and execute the file.

Command

  • chmod

    • 修改權限
    • 用法
      • \[ugoa...\]\[\[+-=\]\[rwxX\]...\]\[,...\]
        • u 表示該檔案的擁有者 (user)
        • g 表示該 group
        • o 表示其他以外的人 (others)
        • a 表示這三者皆是 (all)
        • + 表示增加權限
        • - 表示取消權限
        • = 表示唯一設定權限
        • -R 目錄下所有檔案皆做相同權限操作
    ​​​​$ chmod ugo+r file1.txt
    ​​​​$ chmod a+w file1.txt
    ​​​​// 將檔案 file1.txt 與 file2.txt 設為該檔案擁有者,與其所屬同一個群體者可寫入,但其他以外的人則不可寫入
    ​​​​$ chmod ug+w,o-w file1.txt file2.txt
    ​​​​$ chmod 777 file.txt
    
  • chown

    • 修改擁有者或是群組
    ​​​​// 將 temp.txt 的 owner 改為 user2
    ​​​​$ chown user2 temp.txt
    ​​​​// 將 temp.txt 的 group 改為 group2
    ​​​​$ chown :group2 temp.txt
    ​​​​// 將 temp.txt 的 owner 改為 user2 並 group 改為 group2
    ​​​​$ chown user2:group2 temp.txt
    

Reference