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