Linux文件和目錄權限管理

一、文件和目錄權限簡介

Linux系統是一個典型的多用戶系統,爲了保護系統和用戶數據的安全,Linux對不同用戶訪問同一文件和目錄做了不同的限制。

在Linux中每一個文件或目錄都有自己的訪問權限,這些訪問權限決定了誰能訪問和如何訪問這些文件和目錄

文件和目錄的權限有三種

權限 文件 目錄
r(讀 可以查看文件的內容,例如可以使用cat、more等命令 可以列出目錄中的內容,例如使用ls、dir等命令
w(寫) 可以更改文件的內容,例如使用 vim編輯器、重定向等工具 可以在目錄中添加刪除文件,例如使用rm、mv、cp、mkdir、touch等命令對目錄中的文件進行操作
x(可執行) 可以執行文件,需要同時具有 r 權限,例如執行shell腳本、Python腳本 可以進入目錄,例如使用cd命令

文件和目錄權限的控制對象包括 :文件的所有者、所屬組、以及其他用戶。

– 所有者(屬主):擁有此文件/目錄的用戶-user u
– 所屬組(屬組):擁有此文件/目錄的組-group g
– 其他用戶:除所有者、所屬組以外的用戶-other o

  • 特別說明:在linux系統中無論這個文件是屬於誰、或者屬於哪個組,root用戶都對它有權限。因爲root是系統管理員。
  • 而且只用root用戶可以修改目錄或文件的權限

以/etc/passwd文件爲例

[root@localhost ~]# ls -l /etc/passwd
-rw-r--r--. 2 root root 2192 Apr  8 07:33 /etc/passwd

這個文件的所有者是root ,所屬組是root,其他用戶就是除root用戶,以及root組以外的其它用戶。

文件屬性中由第2~10個字符組成的“rw-r–r--”代表了這個文件的權限,每三個字符爲一組,代表了3類用戶的**r(讀)、w(寫)、x(可執行)**三種權限。

“rw-r–r--“ 表示:

  • 所有者對該文件有可讀可寫的權限。
  • 所屬組用戶對該文件有隻讀的權限
  • 其他用戶對該文件有隻讀的權限

二、更改文件和目錄的所有者和所屬組

2.1、chown命令:修改文件和目錄的所有者和所屬組

命令格式:

  • chown [OPTION]… [OWNER][:[GROUP]] FILE…
  • chown [OPTION]… --reference=RFILE FILE…

常用的選項:

  • -R :以遞歸方式更改目錄下各級子目錄和文件的所有者所屬組
  • FILE: 需要更改的文件或目錄,多個文件或者目錄可以使用空格分隔

2.2、實例1:

  • 新建目錄 /aa
  • 新建用戶 aa
  • 新建用戶組 users1
[root@localhost ~]# mkdir /aa
[root@localhost ~]# useradd aa
[root@localhost ~]# groupadd users1
  • 將目錄/aa的所有者改爲用戶aa,將所屬組改爲users1
[root@localhost ~]# ls -ld /aa
drwxr-xr-x. 2 root root 6 May  4 12:13 /aa
[root@localhost ~]# chown aa:users1 /aa
[root@localhost ~]# ls -ld /aa
drwxr-xr-x. 2 aa users1 6 May  4 12:13 /aa

2.2、實例2:

  • 新建一個連續的目錄 /bb/cc/dd/
  • 在/bb/cc/dd/下創建文件a.txt
[root@localhost ~]# mkdir -p /bb/cc/dd
[root@localhost ~]# touch /bb/cc/dd/a.txt
[root@localhost ~]# ls -Rl  /bb/
/bb/:
total 0
drwxr-xr-x. 3 root root 16 May  4 12:16 cc

/bb/cc:
total 0
drwxr-xr-x. 2 root root 19 May  4 12:17 dd

/bb/cc/dd:
total 0
-rw-r--r--. 1 root root 0 May  4 12:17 a.txt
  • 將目錄/bb下所有目錄和文件的所有者改爲aa,所屬組改爲users1
[root@localhost ~]# chown -R aa:users1 /bb
drwxr-xr-x. 3 aa users1 16 May  4 12:16 cc
[root@localhost ~]# ls -Rl  /bb/
/bb/:
total 0
drwxr-xr-x. 3 aa users1 16 May  4 12:16 cc

/bb/cc:
total 0
drwxr-xr-x. 2 aa users1 19 May  4 12:17 dd

/bb/cc/dd:
total 0
-rw-r--r--. 1 aa users1 0 May  4 12:17 a.txt

三、更改文件和目錄的權限

3.1、chmod命令

chmod命令用於更改文件或者目錄的訪問權限,包括目錄下的各級子目錄和文件。

命令格式:

  • chmod [OPTION]… MODE[,MODE]… FILE…
  • chmod [OPTION]… OCTAL-MODE FILE…
  • chmod [OPTION]… --reference=RFILE FILE…

常用的選項:

  • -R :以遞歸方式更改目錄下各級子目錄和文件的所訪問權限
  • FILE: 需要更改的文件或目錄,多個文件或者目錄可以使用空格分隔

chmod命令可以使用兩種方式更改文件或目錄的訪問權限

3.2、字符方式

chmod命令使用u、g、o和a分別代表文件的所有者、所屬組(屬組)、其他用戶和所有用戶。

命令示例1:

  • 新建文件 file1
[root@localhost ~]# touch file1
[root@localhost ~]# ls -l file1
-rw-r--r--. 1 root root 0 May  4 12:29 file1
  • 給 file1文件的所有者添加可執行權限
[root@localhost ~]# chmod u+x file1
[root@localhost ~]# ls -l file1
-rwxr--r--. 1 root root 0 May  4 12:29 file1
  • 給file1的所屬組和其他人加上寫權限
[root@localhost ~]# chmod g+w,o+w  file1
[root@localhost ~]# ls -l file1
-rwxrw-rw-. 1 root root 0 May  4 12:29 file1
  • 給所有用戶添加對file1可執行的權限
[root@localhost ~]# chmod a+x  file1
[root@localhost ~]# ls -l file1
-rwxrwxrwx. 1 root root 0 May  4 12:29 file1
  • 取消其他人對file1的所有權限
[root@localhost ~]# chmod o=---  file1
[root@localhost ~]# ls -l file1
-rwxrwx---. 1 root root 0 May  4 12:29 file1

命令示例2:

  • 新建目錄/abc/aaa/bbb/ccc
  • 新建文件/abc/aaa/bbb/ccc/ABC.txt
[root@localhost ~]# mkdir -p /abc/aaa/bbb/ccc
[root@localhost ~]# touch /abc/aaa/bbb/ccc/ABC.txt
[root@localhost ~]# ls -Rl /abc/
/abc/:
total 0
drwxr-xr-x. 3 root root 17 May  4 12:35 aaa

/abc/aaa:
total 0
drwxr-xr-x. 3 root root 17 May  4 12:35 bbb

/abc/aaa/bbb:
total 0
drwxr-xr-x. 2 root root 21 May  4 12:35 ccc

/abc/aaa/bbb/ccc:
total 0
-rw-r--r--. 1 root root 0 May  4 12:35 ABC.txt
  • 爲目錄/abc下的目錄和文件添加所有用戶可寫的權限
[root@localhost ~]# chmod -R a+w /abc
[root@localhost ~]# ls -Rl /abc/
/abc/:
total 0
drwxrwxrwx. 3 root root 17 May  4 12:35 aaa

/abc/aaa:
total 0
drwxrwxrwx. 3 root root 17 May  4 12:35 bbb

/abc/aaa/bbb:
total 0
drwxrwxrwx. 2 root root 21 May  4 12:35 ccc

/abc/aaa/bbb/ccc:
total 0
-rw-rw-rw-. 1 root root 0 May  4 12:35 ABC.txt

3.3、數字方式

命令格式:

  • chmod nnn 文件名

其中1、2、3個n分別表示所有者、所屬組和其他人。

權限數值對應表

權限 數值
r 4
w 2
x 1

命令示例1:

  • 對文件file1,
  • 所有者的權限爲只讀(r=4,w=0,o=0)
  • 所屬組的權限爲可讀可寫可執行(r=4,w=2,o=1)
  • 其他人的權限爲可讀可寫可執行(r=4,w=2,o=1)
[root@localhost ~]# ls -l file1 
-rwxrwx---. 1 root root 0 May  4 12:29 file1
[root@localhost ~]# chmod 477 file1 
[root@localhost ~]# ls -l file1 
-r--rwxrwx. 1 root root 0 May  4 12:29 file1

四、設置文件和目錄的默認權限

對於每個新創建的文件和目錄,系統都會自動爲它們設置默認的訪問權限

4.1、umask命令:設置文件和目錄的默認權限

命令格式:

  • umask [value]

[value]是一個由4個數字組成的權限掩碼。如果直接運行不帶選項的umask命令。將會顯示當前系統默認的權限掩碼值。

[root@localhost ~]# umask 
0022

新創建的文件默認訪問權限是0666(也就是rw-rw-rw-)

新創建的目錄默認訪問權限是0777(也就是rwxrwxrwx)

每次創建新的文件或目錄時,都會檢查umask值。然後將默認權限的值與umask值相減,得到新的訪問權限值。

  • 如果umask值爲0022,那麼新創建的文件訪問權限就是(0666 - 0022 = 0644 )也就是 rw-r–r--。
[root@localhost ~]# touch file2
[root@localhost ~]# ls -l file2
-rw-r--r--. 1 root root 0 May  4 12:51 file2
  • 如果umask值爲0022,那麼新創建的目錄訪問權限就是(0777 - 0022 = 0755 )也就是 rwxr-xr-x。
[root@localhost ~]# mkdir dir1
[root@localhost ~]# ls -ld dir1
drwxr-xr-x. 2 root root 6 May  4 12:52 dir1

umask的值可以修改

[root@localhost ~]# umask 
0022
[root@localhost ~]# umask  0000
[root@localhost ~]# umask 
0000
[root@localhost ~]# umask 0777
[root@localhost ~]# umask 
0777
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章