1、綜述Linux中,ls -l命令可謂是最經常使用不過了。命令顯示結果中的第一列也是咱們比較關注的地方,通常說法是表示權限的字符佔10個位置。但是,咱們也常常看到在這一列中第十一個位置也有內容顯示,最多見的非那個點(.)莫屬了,還有加號(+)也會出如今這個位置,這究竟是怎麼回事呢?讓咱們親手來實踐一下吧?
2、關於權限列內的點(.)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、關於權限列的加號(+)
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-laterlinux
咱們能夠看到,加了ACL權限控制以後,以前具備SELinux屬性的文件和目錄的權限列最後一個位置所有變成了加號(+)。移除原來的ACL權限以後,恢復原樣。blog
4、總結
4.1 Linux權限列的點不是無心義字符。在開啓SELinux的狀況下建立的目錄和文件有具備這個點,權限列有這個點說明該目錄或文件以及設置了SELinux相關的權限。在禁用SELinux權限以後,在以前開啓SELinux權限時建立的文件或目錄保持原來的權限不便,權限列的點依然顯示。新建立的目錄或文件在權限列無這個點顯示。ci
4.2 權限列中最後一個位置若是是加號,說明這個目錄或文件已經設置了ACL權限相關的內容。若是加號存在,則已經有點的目錄或文件,點的顯示會被覆蓋,但原來的SELinux屬性保持不變get