Linux中SELinux、Shell簡介、touch命令的應(yīng)用小結(jié)
?? SELinux
SELinux(Security-Enhanced Linux)是美國國家安全局(NSA)對于強制訪問控制的實現(xiàn),是Linux歷史上最杰出的新安全子系統(tǒng)。NSA是在Linux社區(qū)的幫助下開發(fā)了一種訪問控制系統(tǒng)。在這種訪問控制體系的限制下,進程只能訪問那些在它的任務(wù)中所需要的文件。
SELinux默認安裝在Fedora和Red Hat Enterprise Linux上,也可以作為其他發(fā)行版上容易安裝的包得到。
- SELinux安全增強Linux是由NSA針對計算機基礎(chǔ)結(jié)構(gòu)安全開發(fā)的一個全新的Linux安全策略機制。SELinux允許管理員更加靈活地定義安全策略。
- SELinux是一個內(nèi)核級的安全機制,從2.6內(nèi)核之后集成在內(nèi)核之中。
- 主流的Linux都會集成SELinux,Red Hat默認開啟SELinux。
- SELinux是內(nèi)核級的,所以對SELinux的設(shè)置需要重啟系統(tǒng)。
?? SELinux的規(guī)則與概念
所有的安全機制都是對兩樣?xùn)|西做出限制:進程和系統(tǒng)資源(文件、網(wǎng)絡(luò)套接字、系統(tǒng)調(diào)用等),SELinux針對這兩種類型定義了兩個基本概念:域(Domain)和上下文(Contest)。
- 域用來對進程進行限制
- 上下文用來對系統(tǒng)資源進行限制。
- DAC(自主存取控制) 依據(jù)程序運行時的身份決定權(quán)限,是大部分操作系統(tǒng)的權(quán)限存取控制方式,也就是依據(jù)文件的own、group、other/r、w、x權(quán)限進行限制。Root有最高權(quán)限無法限制;r、w、x權(quán)限劃分太粗糙,無法針對不同的進程實現(xiàn)限制。
- MAC(強制存取控制) 依據(jù)條件決定是否有存取權(quán)限。可以規(guī)范個別細致的項目進行存取控制,提供完整的徹底化規(guī)范限制??梢詫ξ募⒛夸?、網(wǎng)絡(luò)、套接字等進行規(guī)范,所有動作必須先得到DAC授權(quán),然后得到MAC授權(quán)才可以存取。
- TE (類型強制) 所有操作系統(tǒng)的訪問控制都是以關(guān)聯(lián)的客體和主體的某種類型的訪問控制屬性為基礎(chǔ)的。在SELinux中,訪問控制屬性稱為安全上下文。所有客體(文件、進程間通信通道、套接字、網(wǎng)絡(luò)主機等)和主體(進程)都有與其關(guān)聯(lián)的安全上下文,一個安全上下文由三部分組成:用戶、角色和類型標識符。
?? 查看SELinux
使用 ps –Z 命令可以查看進程的域,使用ls –Z可以查看文件的上下文。
查看進程域中的SELinux。
說明:黑線標注的部分就是SELinux,用三個冒號分隔開,形成了四個部分。
查看文件的上下文。
說明:黑線標識的地方也是三個冒號分隔形成的四個部分
system_u代表的是用戶。
object_r代表的是角色。
第三段是SELinux中最重要的信息,admin_home表示的是類型。
最后一段s0是跟MLS、MCS相關(guān)的東西。
?? SELinux策略
SELinux通過定義策略來控制哪些域能訪問哪些上下文;SELinux有很多預(yù)置策略,通常不需要自定義策略(除非要對自定義服務(wù)、程序進行保護);Red Hat Linux使用預(yù)置的目標策略。
目標策略定義只有目標進程受到SELinux的限制,其他進程運行在非限制模式下,目標策略只影響網(wǎng)絡(luò)應(yīng)用程序。RHEL受限的網(wǎng)絡(luò)服務(wù)有200個左右,常見的有dhcpd、httpd、mysqld、named、ntpd(時間伺服服務(wù)器)、squid(代理服務(wù)器)、rpcbind、syslogd等。
?? SELinux模式
SELinux有如下三種工作模式。
- 強制模式(enforcing):只要是違反策略的行動都會被禁止,并作為內(nèi)核信息記錄。
- 允許模式(permissive):違反策略的行為不會被禁止,但是會提示警告信息。
- 禁用模式(disabled):禁用SELinux,與不帶SELinux系統(tǒng)是一樣的。
通常情況下在不怎么了解SELinux時,將模式設(shè)置成disabled,這樣在訪問一些網(wǎng)絡(luò)應(yīng)用時就不會出問題。SELinux的主配置文件是 /etc/sysconfig/selinux,其默認設(shè)置值為 SELinux=enforcing。
- 命令getenforce可以查看當(dāng)前系統(tǒng)SELinux的工作狀態(tài)。
getenforce
- 命令setenforce可以設(shè)置當(dāng)前系統(tǒng)SELinux的工作狀態(tài)。
Setenforce
使用編輯器查看SELinux的主配置文件/etc/sysconfig/selinux得到如下結(jié)果
說明:紅色方框標識的部分 SELinux=enforcing 代表目前系統(tǒng)執(zhí)行的是強制策略;SELinuxTYPE=targeted 代表當(dāng)前系統(tǒng)遵循的是目標策略。
?? SELinux設(shè)置
1、 獲取當(dāng)前SELinux運行狀態(tài)
getenforce
可能返回的結(jié)果有三種:Enforcing、Permissive和Disabled。Disabled代表SELinux被禁用,Permissive代表僅記錄安全警告但不阻止可疑行為, Enforcing代表記錄警告且阻止可疑行為
2、 改變SELinux運行狀態(tài)
?? Shell簡介
Shell:
n.外殼; 炮彈; (貝、卵、堅果等的) 殼; (人的) 表面性格;
vt.去殼,脫落; 炮擊;
vi.剝皮; 炮轟;
Shell在Linux中俗稱“殼”,Shell處于Linux Kernel的外圍,就像個“殼”一樣,如下圖所示:
Linux Kernel承擔(dān)的任務(wù)是上層的服務(wù)、應(yīng)用以及硬件控制等,但Linux Kernel是無法直接去控制的,也即用戶是不允許直接與Linux Kernel進行通信的。這里就需要借助Shell這個“殼”。Shell所起到的是個中間媒介的作用,也就是將用戶的需求轉(zhuǎn)換成Linux Kernel能夠識別的指令。
Shell本身只是一個感念,其中的實施是依靠圖形或者命令模式去實現(xiàn)。
Shell是操作系統(tǒng)最外面的一層。Shell管理著用戶與操作系統(tǒng)之間的交互:等待輸入,向操作系統(tǒng)解釋用戶的輸入,并且處理各種各樣的操作系統(tǒng)的輸出結(jié)果。Shell提供了用戶與操作系統(tǒng)之間的通信方式,這種通信方式可以以交互方式(從鍵盤輸入,并且可以立即得到響應(yīng)),或者以Shell Script(非交互)方式執(zhí)行。Shell Script是放在文件中的一串Shell和操作命令,他們可以被重復(fù)使用。本質(zhì)上Shell Script是命令行,命令簡單地組合到一個文件里面。
Shell基本上是一個命令解釋器,類似于DOS下的command。它接收用戶命令(如 ls 等),然后調(diào)用相應(yīng)的應(yīng)用程序。
?? Shell分類
(1) 圖形界面Shell(Graphical User Interface Shell,GUI Shell),圖形界面的最終使用也是轉(zhuǎn)換成命令行模式去執(zhí)行的。例如GNOME、KDE等。
(2) 命令行式Shell(Command Line Interface Shell,CLI Shell),z最常用的命令行是GNU Bourne-Again Shell,簡稱 BASH,也就是Linux中常用的命令行。
?? BASH基礎(chǔ)
BASH是許多Linux平臺內(nèi)定的Shell,它能運行于大多數(shù)類UNIX操作系統(tǒng)之上,簡單的說,就是我們必須通過Shell將輸入的命令與內(nèi)核通信,可以讓內(nèi)核控制硬件準確無誤地工作來提高效率。
BASH本身其實也是一個命令模式下的命令,其代表的就是打開命令模式終端的意思。
1、 提示符
Linux操作系統(tǒng)下的BASH提示符分為#和$兩種。
#:代表超級賬戶root,權(quán)限比較大
$:代表普通賬戶,權(quán)限比較小
2、 結(jié)構(gòu)解讀
root代表目前登錄的是root賬戶,zhangyan代表目前使用的這臺計算機的主機名稱,@代表使用root賬戶登錄到zhangyan這臺主機。
3、 BASH命令的組成
BASH命令的一般結(jié)構(gòu):
$ command [ [-]option(s)] [option argument(s)] [command argument(s)]
1、$:計算機提示符,代表的是使用普通賬戶登錄系統(tǒng)。
2、command:對shell而言正確的Linux命令,BASH命令均為小寫。
3、[-option(s)]:定制命令動作的一個或多個修飾符號,是BASH的命令選項。
4、[option argument(s)]:定制命令選項的一個或多個修飾符號,是命令選項修飾。
5、[command argument(s)]:受命令影響的一個或多個對象,命令對象。
注意:以上各部分用空格分開。command、option、option argument和command argument,但在option或option argument之間是不需要空格的。多個option或option argument的順序是不要緊的,也就是和順序無關(guān)。在option和option argument間的空格是可選的。
ls為command,-al為-option(s)。
?? touch命令的應(yīng)用
touch的一般用法是用來創(chuàng)建一個新文件。同時,touch還可以用來修改文件的時間戳。
和時間戳有關(guān)的三個時間:
訪問時間access time,簡稱為 atime:一個文件的數(shù)據(jù)最后一次被訪問的時間。例如,顯示一個文件的內(nèi)容或者運行一個shell腳本會更新文件的atime??梢杂?ls –lu 命令查看。
更改時間status time,簡稱為 ctime;在UNIX中基本無法知道一個文件的精確創(chuàng)建時間。更改時間是指文件或目錄的屬性(所有者、權(quán)限等)被更改的時間。ctime在文件的內(nèi)容改變的時候也會改變。如果一個文件需要備份的話,dump命令需要用到ctime??梢杂?ls –lc 命令來查看ctime。
修改時間modification time,簡稱為 mtime:文件的目前內(nèi)容最后被修改的時間。這是在一個長目錄列表中顯示的時間。
總結(jié):
文件的atime是在讀取文件或者執(zhí)行文件時更改的;
文件的mtime是在寫入文件時隨文件內(nèi)容的更改而更改的;
文件的ctime是在寫入文件,更改所有者、權(quán)限或鏈接設(shè)置時隨inode的內(nèi)容更改而更改的。
名稱:touch
使用權(quán)限:所有使用者
使用方式:touch [option] filename
參數(shù) | 說明 |
---|---|
-a | 僅修改訪問時間。 |
-r | 修改文件的時間為指定文件的日期時間。 |
-d | 指定文件日期時間為yymmdd。 |
-t | 指定文件日期時間為yymmddhhmm。 |
-c:僅改變修改時間,如果文件不存在則創(chuàng)建。 | |
-m | 僅修改mtime。 |
說明:如果不加參數(shù)后面直接跟上filename,則判斷文件是否存在,如果存在則改變其時間,如果不存在則創(chuàng)建一個0字節(jié)的空文件。如果加上相應(yīng)參數(shù),則為按照參數(shù)的設(shè)置修改時間戳的作用。
到此這篇關(guān)于Linux中SELinux、Shell簡介、touch命令的應(yīng)用知識總結(jié)的文章就介紹到這了,更多相關(guān)linux SELinux、Shell簡介 touch命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Shell腳本中引用、調(diào)用另一個腳本文件的2種方法
這篇文章主要介紹了Shell腳本中引用、調(diào)用另一個腳本文件的2種方法,本文介紹了兩種方法的語法,然后給出實際使用實例和一些要注意的地方,需要的朋友可以參考下2015-06-06Linux Shell腳本系列教程(三):變量和環(huán)境變量
這篇文章主要介紹了Linux Shell腳本系列教程(三):變量和環(huán)境變量,本文講解了普通變量、獲取字符串的長度、環(huán)境變量等內(nèi)容,需要的朋友可以參考下2015-06-06Shell中調(diào)用、引用、包含另一個腳本文件的三種方法
這篇文章主要介紹了Shell中調(diào)用、引用、包含另一個腳本文件的三種方法,需要的朋友可以參考下2014-04-04