1. 程式人生 > >關於Linux中許可權列中的加號及點的深度探索

關於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 328 10:23 DCGH
drwxr-xr-x. 2 root root 6 328 10:24 DCGH-DIR

2.3 檢視本機SELinux狀態,並列舉本目錄下檔案和目錄關於SELinux的基本情況。

[[email protected] ~]# getenforce 
Enforcing
[[email protected] ~]# 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許可權設定的朋友對於這個加號肯定不陌生。不過還是讓我們通過實驗來驗證一下。

[[email protected] ~]# setfacl -m u:dcgh:rwx *
[[email protected] ~]# 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
[[email protected] ~]# setfacl -b *
[[email protected] ~]# 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屬性保持不變。

4.3 官方一點的說法:點表示該檔案具有SELinux安全上下文,加號表示該檔案配置了ACL許可權,加號不會覆蓋SELinux控制。

相關推薦

關於Linux許可權加號深度探索

一、綜述 Linux中,ls -l命令可謂是最常用不過了。命令顯示結果中的第一列也是我們比較關注的地方,一般說法是表示許可權的字元佔10個位置。可是,我們也經常看到在這一列中第十一個位置也有內容顯示,最常見的非那個點(.)莫屬了,還有加號(+)也會出現在這個位

TextView+SpannableString實現Android富文字的顯示選衝突解決

前言 最近專案中需要實現一個文章跟讀效果的顯示,還要能夠點選文章中的單詞能夠彈出對話方塊顯示單詞的英美髮音,那麼如何實現這樣的需求呢?當然是利用SpannableString啦,下面就結合專案中使用到的和參考其他部落格的成果,整理一下常用的用法吧。 SpannableString其

Linux命令EOF的用法

EOF是END Of File的縮寫,表示自定義終止符。 既然自定義,那麼EOF就不是固定的,可以隨意設定別名。 在linux按ctrl-d就代表EOF。 EOF一般會配合cat能夠多行文字輸出. 其用

修改或隱藏Linux終端命令的使用者名稱和主機名

大家在安裝Linux時起了一個漂亮的主機名和使用者名稱,結果發現再終端中發現顯示的主機名和使用者名稱佔用的空間太長了,所以想讓命令列中的主機名和使用者名稱顯示的越短越好。我找了一種方法,跟大家分享一下

解決React NativeScrollView控制元件獲得焦點選空白處鍵盤消失的問題

大家好,今天講下在開發RN過程中使用ScrollView控制元件出現的問題。 最初的開發需求是顯示一個介面,這個介面有兩個特點: 1)縱向很長,顯示的內容有點多 2)介面的下半部分中有TextInput控制元件 要想滿足第一個條件,首先想到的是將顯示的這些內容最外層加上一層

在alv grid設定icon圖示

如果想輸出紅綠燈,其中紅路燈那欄的頭是不能改變text的,所以要是想自己個性化text就要改用icon輸入紅綠燈圖示 方法是在structure中新增一個field 為 char型 4位長。 然後在

ExtJsgird增加操作,並給操作按鈕繫結事件

在ExtJs4中,grid元件有Ext.grid.column.Action元件,所有要增加操作列,只需指定列的xtype為actioncolumn即可,例如: Ext.create('Ext.grid.Panel', { renderTo: Ext.getBod

Jquery獲取表格當前行其他的值和input輸入框的值

Jquery獲取表格當前行中其他列的值和其他列中input輸入框中的值。 Jquery獲取表格當前行中其他列的值和其他列中input輸入框中的值。 先上表格程式碼(為了精簡,有些樣式程式碼減掉了) <table> <tr>

ExtJs4gird增加操作,並給操作按鈕繫結事件

在ExtJs4中,grid元件有Ext.grid.column.Action元件,所有要增加操作列,只需指定列的xtype為actioncolumn即可,例如: Ext.create('Ext.grid.Panel', { renderTo: Ext.getBody

linux(ubuntu)下的tippecanoe編譯使用的探索

作為我的第一篇部落格,也是我的寫部落格的探索了另外,有使用docker的童鞋可以直接檢視[三、4、]一、安裝win7 + linux(ubuntu)       教程在網上搜,別用最新版本,用16.0.4       注意事項:ultraISO寫映象檔案時什麼都不用動,按預設

Linux 最常用的目錄文件管理命令

得到 bzip2 文件夾 操作 管理命令 內容 fig find work 一、查看文件的命令  對於一個文本文件,在linux中有多種查看方式來獲知文件內容,如直接顯示整個文本內容、分頁查看內容、或者只查看文件開頭或末尾的部分內容。在linux可以用不同的命令來實現。  

Linux修改環境變量生效方法

所有 lin web serve keyword 環境 有效 bin 例如 文章轉自 https://www.cnblogs.com/franson-2016/p/6063226.html 方法一:   在/etc/profile文件中添加變量【對所有用戶生效(永久的)】

linux服務器不支持soapbcmul函數的結局方法

bcmath 環境 dha php red 負責 重新編譯 inux 喜歡 新的程序裏用了webserice接口,部到服務器,先是提示:bcmul() 函數不可用,網上搜索一番,得知這是php的高精度函數,需要在編譯php的時候加入此模塊,於是在編譯腳本裏增添 “–enab

Linux 命令使用 tcpdump 抓包

tcpdump 是一款靈活、功能強大的抓包工具,能有效地幫助排查網路故障問題。 以我作為管理員的經驗,在網路連線中經常遇到十分難以排查的故障問題。對於這類情況,tcpdump 便能派上用場。 tcpdump 是一個命令列實用工具,允許你抓取和分析經過系統的流量資料包。它通常被用作於網路故障分析工具以及安全

LINUX 字串的相關操作grep說明

我們在linux的操作中經常會對檔案中的字串進行替換、統計等操作,我們現在來做一次整理,如有錯誤請批評指正。 統計字串個數 grep -c str filename grep -o str filename |wc -l 替換字串 替換當前行匹配字串 :s/o

Linux檔案在系統的傳輸,打包壓縮相關命令

一、Linux檔案在系統中的傳輸 scp的上傳和下載 上傳:scp  file  [email protected]:/dir 下載:scp  [email protected]:/file  dir 詳細截圖可在文章:Linux系統中ssh與sshd服務

Linuxcx_oracle和sendEmail安裝操作

一、cx_oracle安裝及操作 作業系統:Red Hat Enterprise Linux Server release 7.2 (Maipo) python版本:python2.7 oracle版本:11g 1、簡介與下載 oracle客戶端是Orac

Linux基礎知識(檔案在系統的傳輸,歸檔壓縮)

一、檔案 在系統中的傳輸(scp和rsync命令) 一. scp與rsync的區別 scp傳輸速度較慢,傳輸過程是一種資料的重新建立,連同屬性一塊建立。 rsync傳輸速度快,傳輸過程是資料的同步,是一種映象複製的過程,並非所有檔案都可以資料同步,可以資料同步的檔案,映

Linux系統下 在命令實現Wifi 連線的方法

Linux系統下中 在命令列中實現Wifi 連線的方法 from:https://www.cnblogs.com/chaobest/articles/6693161.html 無論何時要安裝一款新的 Linux 發行系統,一般的建議都是讓您通過有線連線來接到網際網路的。 這主要的原因有兩

解決:-bash: unzip: command not found (Linux unZip/Zip 的安裝使用)(轉)

【轉自:http://ju.outofmemory.cn/entry/315349】 Linux系統沒有自帶的壓縮解壓工具;需要我們自己安裝; 當用到zip或者unzip如果沒有安裝就會出現 unzip: Command Not Found 或 zip: Command Not Found