首頁  >  文章  >  系統教程  >  Linux中權限列中的加號及點的深度解讀

Linux中權限列中的加號及點的深度解讀

王林
王林原創
2024-07-02 16:51:22782瀏覽

Linux中權限列中的加號及點的深度解讀

一、綜述

Linux中,ls -l指令可謂最常用不過了。指令顯示結果中的第一列也是我們比較關注的地方,一般說法是表示權限的字元佔10個位置。可是,我們也常看到在這一列中第十一個位置也有內容顯示,最常見的非那個點(.)莫屬了,還有加號(+)也會出現在這個位置,這到底是怎麼回事呢?讓我們親手實踐一下吧?

二、關於權限列內的點(.)

2.1 讓我們來看看根目錄。

[root@DCGH ~]# ls -lZ /
lrwxrwxrwx. root root system_u:object_r:bin_t:s0 bin -> usr/bin
dr-xr-xr-x. root root system_u:object_r:boot_t:s0 boot
drwxr-xr-x. root root system_u:object_r:device_t:s0 dev
drwxr-xr-x. root root system_u:object_r:etc_t:s0 etc
drwxr-xr-x. root root system_u:object_r:home_root_t:s0 home
lrwxrwxrwx. root root system_u:object_r:lib_t:s0 lib -> usr/lib
lrwxrwxrwx. root root system_u:object_r:lib_t:s0 lib64 -> usr/lib64
drwxr-xr-x. root root system_u:object_r:mnt_t:s0 media
drwxr-xr-x. root root system_u:object_r:mnt_t:s0 mnt
drwxr-xr-x. root root system_u:object_r:usr_t:s0 opt
dr-xr-xr-x. root root system_u:object_r:proc_t:s0 proc
dr-xr-x---. root root system_u:object_r:admin_home_t:s0 root
drwxr-xr-x. root root system_u:object_r:var_run_t:s0 run
lrwxrwxrwx. root root system_u:object_r:bin_t:s0 sbin -> usr/sbin
drwxr-xr-x. root root system_u:object_r:var_t:s0 srv
dr-xr-xr-x. root root system_u:object_r:sysfs_t:s0 sys
drwxrwxrwt. root root system_u:object_r:tmp_t:s0 tmp
drwxr-xr-x. root root system_u:object_r:usr_t:s0 usr
drwxr-xr-x. root root system_u:object_r:var_t:s0 var

2.2 在HOME目錄分別建立一個檔案和目錄,觀察權限了第十一個位置的詳細情況。

[root@DCGH ~]# touch DCGH
[root@DCGH ~]# mkdir DCGH-DIR
[root@DCGH ~]# ls -l
总用量 0
-rw-r--r--. 1 root root 0 3月 28 10:23 DCGH
drwxr-xr-x. 2 root root 6 3月 28 10:24 DCGH-DIR

2.3 查看本機SELinux狀態,並列舉本目錄下檔案與目錄關於SELinux的基本情況。

[root@DCGH ~]# getenforce
Enforcing
[root@DCGH ~]# ls -lZ
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 DCGH
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 DCGH-DIR

2.4 關閉SELinux,再建立實驗檔案和目錄,再次列舉本目錄及根下檔案和目錄關於SELinux的基本情況

[root@DCGH ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
[root@DCGH ~]# reboot
[root@DCGH ~]# getenforce
Disabled
[root@DCGH ~]# ls -lZ
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 DCGH
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 DCGH-DIR
[root@DCGH ~]# touch DCGH-later
[root@DCGH ~]# mkdir DCGH-later-dir
[root@DCGH ~]# ls -lZ
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 DCGH
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 DCGH-DIR
-rw-r--r-- root root ? DCGH-later
drwxr-xr-x root root ? DCGH-later-dir
[root@DCGH ~]# ls -lZ /
lrwxrwxrwx. root root system_u:object_r:bin_t:s0 bin -> usr/bin
dr-xr-xr-x. root root system_u:object_r:boot_t:s0 boot
drwxr-xr-x root root ? dev
drwxr-xr-x. root root system_u:object_r:etc_t:s0 etc
drwxr-xr-x. root root system_u:object_r:home_root_t:s0 home
lrwxrwxrwx. root root system_u:object_r:lib_t:s0 lib -> usr/lib
lrwxrwxrwx. root root system_u:object_r:lib_t:s0 lib64 -> usr/lib64
drwxr-xr-x. root root system_u:object_r:mnt_t:s0 media
drwxr-xr-x. root root system_u:object_r:mnt_t:s0 mnt
drwxr-xr-x. root root system_u:object_r:usr_t:s0 opt
dr-xr-xr-x root root ? proc
dr-xr-x---. root root system_u:object_r:admin_home_t:s0 root
drwxr-xr-x root root ? run
lrwxrwxrwx. root root system_u:object_r:bin_t:s0 sbin -> usr/sbin
drwxr-xr-x. root root system_u:object_r:var_t:s0 srv
dr-xr-xr-x root root ? sys
drwxrwxrwt. root root system_u:object_r:tmp_t:s0 tmp
drwxr-xr-x. root root system_u:object_r:usr_t:s0 usr
drwxr-xr-x. root root system_u:object_r:var_t:s0 var

透過上面的例子,我們可以看出來,這個點(.)不是沒有用的,而是作用巨大,我們平常沒怎麼注意而已。開啟SELinux後建立的檔案和目錄都會在權限列顯示這個點的,關閉SELinux後建立的檔案和目錄在權限列是不會顯示這個點的,之前建立的檔案或目錄都保持不變。

三、關於權限列的加號(+)

3.1 了解過Linux中ACL權限設定的朋友對於這個加號肯定不陌生。不過還是讓我們來驗證一下。

[root@DCGH ~]# setfacl -m u:dcgh:rwx *

[root@DCGH ~]# ls -lZ

-rw-rwxr--+ root root unconfined_u:object_r:admin_home_t:s0 DCGH

drwxrwxr-x+ root root unconfined_u:object_r:admin_home_t:s0 DCGH-DIR

drwxrwxr-x+ root root ? DCGH-DIR-later -rw-rwxr--+ root root ? DCGH-later

[root@DCGH ~]# setfacl -b *

[root@DCGH ~]# ls -lZ

-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 DCGH

drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 DCGH-DIR

drwxr-xr-x root root ? DCGH-DIR-later -rw-r--r-- root root ? DCGH-later

我們可以看到,加上了ACL權限控制之後,之前具有SELinux屬性的檔案和目錄的權限列最後一個位置全部變成了加號(+)。移除原來的ACL權限之後,恢復原樣。

四、總結

4.1 Linux權限列的點不是無意義字元。在開啟SELinux的情況下建立的目錄和檔案有具有這個點,權限列有這個點說明該目錄或檔案以及設定了SELinux相關的權限。在停用SELinux權限之後,在先前開啟SELinux權限時建立的檔案或目錄保持原來的權限不便,權限列的點依然顯示。新建立的目錄或檔案在權限列無這個點顯示。

4.2 權限列中最後一個位置如果是加號,表示這個目錄或檔案已經設定了ACL權限相關的內容。如果加號存在,則已經有點的目錄或文件,點的顯示會被覆蓋,但原來的SELinux屬性保持不變。

以上是Linux中權限列中的加號及點的深度解讀的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn