用戶、用戶組與文件的關系
在了解權限管理之前先創建一些用戶和用戶組便於后續學習,在root用戶下操作:
# 創建兩個用戶組
[root@localhost data]# groupadd kaifa
[root@localhost data]# groupadd ceshi
# 創建三個用戶,指定他們進入的用戶組
[root@localhost data]# useradd -g kaifa zhangsan
[root@localhost data]# useradd -g kaifa lisi
[root@localhost data]# useradd -g ceshi wangwu
# 設置三個用戶的密碼,這里我統一設置為123
[root@localhost data]# passwd zhangsan
[root@localhost data]# passwd lisi
[root@localhost data]# passwd wangwu
登錄張三用戶,在~目錄中創建一個1.txt文件,關系如下圖所示
[zhangsan@localhost ~]$ touch 1.txt
[zhangsan@localhost ~]$ ls
1.txt

環境已經模擬好了,現在分析一下1.txt文件和這幾個用戶之間的關系:
-
張三創建了這個文件,那么張三就是該文件的所有者
-
張三創建了這個文件,同時張三屬於開發組,那么這個文件也屬於開發組,開發組下除了張三還有李四,那么李四就是同組的用戶
-
王五既不是文件的所有者,和文件也不屬於同一個組,那么對於文件來說王五就是其他組的用戶

如果不知道該文件的所有者是誰,屬於哪個組,可以用ls -l或者ll命令來查看

通過分析可得知,文件與用戶可以有三種關系:所有者、同組,其他組,請務必牢記這三種關系,他與權限有着密切的關聯
認識權限信息
權限代表着用於對文件/文件夾操作的控制,可以控制用戶是否有權利查看文件、修改文件以及執行文件
如何查看權限信息
詳細的權限信息,在我們使用ll命令的時候就可以看到,列表的第一列就代表權限信息

可以發現他給出的權限信息為-rw-r--r--,完整的權限信息是由四部分組成,將他們拆開后如下所示

后面的三組就不細說了,結合之前說的就能理清,這里介紹下第一位文件類型,簡單創建幾個文件觀察首位的變化
如果是文件夾,首位就是d,如果是文件首位就是-,如果是軟連接首位就是l...... 更多的這里就不細說了
[zhangsan@localhost ~]$ touch 1.txt
[zhangsan@localhost ~]$ mkdir -p files/1/2/3
[zhangsan@localhost ~]$ ln -s files/1/2/ 3
[zhangsan@localhost ~]$ ll
總用量 0
-rw-r--r--. 1 zhangsan kaifa 0 12月 22 16:35 1.txt
-rw-r--r--. 1 zhangsan kaifa 0 12月 22 16:35 2.txt
lrwxrwxrwx. 1 zhangsan kaifa 10 12月 22 16:34 3 -> files/1/2/
drwxr-xr-x. 3 zhangsan kaifa 15 12月 22 16:33 files
現在回過頭來看1.txt的權限信息-rw-r--r--,首先通過首位可以看出他是一個普通文件,接下來分析一下他的權限信息
-
zhangsan作為所有者,可以對文件進行查看和編輯
-
lisi與文件屬於同一個組,可以對文件進行查看操作
-
wangwu屬於其他組,同樣可以對文件進行查看
然后切換到/home目錄,再查看該目錄下的文件夾的權限信息
[zhangsan@localhost ~]$ cd /home
[zhangsan@localhost home]$ ll
總用量 0
drwx------. 3 lisi kaifa 78 12月 22 14:24 lisi
drwx------. 3 wangwu ceshi 78 12月 22 14:24 wangwu
drwx------. 6 zhangsan kaifa 155 12月 22 16:35 zhangsan
之前說過每個目錄代表着一個用戶,而每個目錄的權限都為drwx------,也就是說除了目錄所有者之外任何人都沒有權限查看該目錄,這也就解釋了為什么不能查看其他用戶目錄的問題
權限信息在文件/文件夾上的作用
權限信息在文件和在文件夾上起到的作用分別是不一致的,具體如下
當目標是一個文件時:
-
r 可以控制是否有權限查看該文件的內容
-
w 可以控制是否有權限修改文件的內容,需要注意的是就算有修改權限也並不代表可以刪除該文件,判斷一個文件是否允許被刪除需要觀察該文件所在的目錄的權限信息
-
x 可以控制是否擁有執行文件的權限
當目標是一個目錄時:
-
r 可以控制是否有權限移動到該目錄下,是否有權限查看目錄下的文件
-
w 可以控制是否有權限增刪目錄下的文件
-
x 可以控制是否擁有執行文件的權限
修改權限信息
由於修改權限信息本身需要的權限較大,這里建議在root用戶下進行操作,在修改權限信息之前先看一眼這個表格的內容
| 中文解釋 | 英文全拼 | 簡寫字母 | 權限數字 |
|---|---|---|---|
| 可讀 | read | r | 4 |
| 可寫 | write | w | 2 |
| 可執行 | execute | x | 1 |
設置權限信息
權限包含可讀、可寫、可執行三種操作,而所有者、同組、其他組又分別有着各自的權限,那么修改權限就是圍繞着這幾個基本屬性進行設置的
設置權限信息的命令使用方法為chmod [權限信息] [目標文件/文件夾],看一下下面這行命令
# u=rw:u的全拼為user所有者,所有者擁有r讀和w寫的權限
# g=r:g的全拼為group同組,同組擁有r讀的權限
# o=r:o代表other其他組,其他組擁有r讀的權限
[root@localhost zhangsan]# chmod u=rw,g=r,o=r 1.txt
# 所有者擁有所有權限,本組擁有讀寫全選,其他組擁有讀權限
[root@localhost zhangsan]# chmod u=rwx,g=rw,o=r 1.txt
# 所有者保持不變,同組只能讀,其他組只能讀
[root@localhost zhangsan]# chmod g=r,o=r 1.txt
修改權限信息
除開使用等號來設置權限之外,還可以使用加號和減號來修改權限,如下
# 本組設置只讀的權限
[root@localhost zhangsan]# chmod g=r 1.txt
# 本組添加執行的權限
[root@localhost zhangsan]# chmod g+x 1.txt
# 其他組添加修改和執行的權限
[root@localhost zhangsan]# chmod o+wx 1.txt
# 其他組移除修改和執行的權限
[root@localhost zhangsan]# chmod o-wx 1.txt
# 本組添加讀的權限移除執行的權限
[root@localhost zhangsan]# chmod g+w-x 1.txt
數字方式設置權限信息
除開上面的兩種方法之外,還可以使用數字代表權限信息,上面的表格中記錄了每個權限代表的數字,將需要賦予的權限的數字相加就可以了
數字設置權限的命令使用規范為chmod [所有者權限][同組權限][其他組權限],如下所示
# 所有者有讀寫的權限(4+2),同組與其他組有讀的權限(4)
[root@localhost zhangsan]# chmod 644 1.txt
# 所有者有讀寫執行的權限(4+2+1),同組有讀的權限(4),其他組沒有任何權限(0)
[root@localhost zhangsan]# chmod 740 1.txt
# 所有者、同組、其他組全部擁有所有權限(4+2+1)
[root@localhost zhangsan]# chmod 777 1.txt
修改文件所有者以及文件所有組
文件的操作全選與所有者和所有組有着密切的關系,可以通過ll命令查看這些信息,當然這些信息也可以修改
# 修改文件所有者為wangwu
[root@localhost zhangsan]# chown wangwu 1.txt
# 修改文件所在組為測試
[root@localhost zhangsan]# chgrp ceshi 1.txt
需要注意的是修改文件所有者后,文件所在組並不會隨着所有者的改變而改變,想要修改文件所在組需要手動執行命令才可以進行修改
