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

3.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屬性保持不變

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章