1. 程式人生 > >Linux Smack 學習總結

Linux Smack 學習總結

Linux 中的安全模組LSM是一種輕量級的訪問控制框架。使用者在執行系統呼叫時,先通過核心介面依次執行功能性的錯誤檢查,接著進行傳統的DAC檢查,在訪問核心之前通過LSM鉤子函式呼叫LSM,LSM根據具體的訪問控制策略來決定方法的合法性,以此來實現訪問控制。訪問控制的架構圖:
LSM
1, DAC (Discretionary Access Control) 自主訪問控制
Linux檔案系統中對檔案的操作屬於DAC,DAC的主要內容包括以下幾個概念: 主體、客體、許可權(rwx)、所有權(ugo),由客體的屬主對自己的客體進行管理,由主體決定是否將自己客體的訪問許可權授權給其他主體,這種控制方式是自主的。下面的例子看到bigxu使用者對xgx管理的客體沒有寫許可權,當bigxu主體對test.c檔案進行寫操作的時候會被拒絕,xgx使用者可以決定test.c能否被bigxu使用者寫操作這就是DAC.在DAC系統中,檔案的所有者是建立這個檔案的計算機的使用者,此檔案的自主訪問控制權限由它的建立者來決定如何設定和分配;

[email protected]-UC7300-series:/home/xgx/smack/smack_test$ ls -lth test.c 
-rw-r--r-- 1 xgx xgx 356 Jul 16 20:13 test.c
[email protected]-UC7300-series:/home/xgx/smack/smack_test$ whoami
bigxu
[email protected]-UC7300-series:/home/xgx/smack/smack_test$ echo "a" >> test.c 
-bash: test.c: Permission denied
[email protected]
-UC7300-series:/home/xgx/smack/smack_test$

2,LSM鉤子
LSM框架下的訪問策略包括selinux,smack,tomoyo,yama 使用者還可以註冊自己的鉤子函式。每個策略都是通過各自的init函式呼叫register_security函式來註冊,註冊到LSM框架的模組被載入成功後,就可以進行訪問控制。LSM裡面給出了結構體security_operations,裡面給出了很多鉤子函式,實現了相關鉤子函式就可以實現訪問控制了。
3,SMACK
下面具體介紹一下如何enable的smack,enable smack 需要重新1)編譯核心,enable smack選項。
這裡寫圖片描述


這裡寫圖片描述這裡寫圖片描述
重現編譯好核心之後
在/etc/fstab 中新增
smackfs /smack smackfs smackfsdef=* 0 0
建立/smack 目錄,執行mount -a
2)原始碼編譯安裝smackload
./configure
make && make install
原始碼下載地址https://github.com/smack-team/smack
3)smack rule
subject:
主體,系統中程序
object:
客體,核心客體物件,如檔案、訊息佇列、套接字、客體也可以是linux程序
label:
標籤,Smack安全標籤是C語言的字串,系統預設的安全標籤是“_”。
access:
訪問方式,Smack最初版本的訪問方式有rwxat。其中,在程序之間通訊中,一個程序傳送訊息或者資料包給另一個程序時,這樣的操作屬於寫操作。
access Rule:
(1)安全標籤是“*”的程序發起的任何形式的訪問都被拒絕;
(2)安全標籤是“^”的程序發起的讀或執行的請求都被容許;
(3)任何程序對安全標籤是“_”的客體發起的讀或執行的請求都被容許;
(4)任何程序對安全標籤是“*”的客體發起的任何形式的請求都被容許;
(5)如果主體和客體的安全標籤相同,那麼該主體對該客體發起的任何形式的訪問都被容許。
(6)可以根據自己的安全需求,在主、客體安全標籤都已經存在的前提下,通過“smackload”工具寫入安全策略。
(7)其他策略都被拒絕
4,測試
測試一

root@bigxu-UC7300-series:/home/xgx/smack/smack_test# chsmack a.out 
a.out access="_" execute="aaa"
root@bigxu-UC7300-series:/home/xgx/smack/smack_test# chsmack test.txt 
test.txt access="bbb"
root@bigxu-UC7300-series:/home/xgx/smack/smack_test# 
root@bigxu-UC7300-series:/home/xgx/smack/smack_test# su xgx
xgx@bigxu-UC7300-series:~/smack/smack_test$ ./a.out 
open failed 
xgx@bigxu-UC7300-series:~/smack/smack_test$ su
Password: 
root@bigxu-UC7300-series:/home/xgx/smack/smack_test# echo "aaa bbb rwx" |smack
smackaccess  smackcipso   smackctl     smackload    
root@bigxu-UC7300-series:/home/xgx/smack/smack_test# echo "aaa bbb rwx" |smackload 
root@bigxu-UC7300-series:/home/xgx/smack/smack_test# su xgx
xgx@bigxu-UC7300-series:~/smack/smack_test$ ./a.out 
2222222222

測試二 設定檔案的transmutation屬性
當資料夾沒有設定T屬性的時候,主題建立的客體屬性和主題一致。當資料夾設定了T屬性時,檔案中建立的檔案屬性和資料夾一直(需要新增規則)。

root@bigxu-UC7300-series:/home/xgx/smack/smack_test# chsmack a.out 
a.out access="_" execute="eee"
root@bigxu-UC7300-series:/home/xgx/smack/smack_test# chsmack testdir/
testdir/ access="dirbbb"
root@bigxu-UC7300-series:/home/xgx/smack/smack_test# echo "eee dirbbb rwxat" | smackload 
root@bigxu-UC7300-series:/home/xgx/smack/smack_test# su xgx
xgx@bigxu-UC7300-series:~/smack/smack_test$ ./a.out 
xgx@bigxu-UC7300-series:~/smack/smack_test$ su
Password: 
root@bigxu-UC7300-series:/home/xgx/smack/smack_test# chsmack testdir/test1.txt 
testdir/test1.txt access="eee" 
root@bigxu-UC7300-series:/home/xgx/smack/smack_test# chsmack -t testdir/
root@bigxu-UC7300-series:/home/xgx/smack/smack_test# chsmack testdir/
testdir/ access="dirbbb" transmute="TRUE"
root@bigxu-UC7300-series:/home/xgx/smack/smack_test# su
root@bigxu-UC7300-series:/home/xgx/smack/smack_test# su xgx
xgx@bigxu-UC7300-series:~/smack/smack_test$ ./a.out 
xgx@bigxu-UC7300-series:~/smack/smack_test$ su
Password: 
root@bigxu-UC7300-series:/home/xgx/smack/smack_test# chsmack testdir/test1.txt 
testdir/test1.txt access="eee"
root@bigxu-UC7300-series:/home/xgx/smack/smack_test# rm testdir/test1.txt 
root@bigxu-UC7300-series:/home/xgx/smack/smack_test# su xgx
xgx@bigxu-UC7300-series:~/smack/smack_test$ ./a.out 
xgx@bigxu-UC7300-series:~/smack/smack_test$ su
Password: 
root@bigxu-UC7300-series:/home/xgx/smack/smack_test# chsmack testdir/test1.txt 
testdir/test1.txt access="dirbbb"
root@bigxu-UC7300-series:/home/xgx/smack/smack_test# 

相關推薦

Linux Smack 學習總結

Linux 中的安全模組LSM是一種輕量級的訪問控制框架。使用者在執行系統呼叫時,先通過核心介面依次執行功能性的錯誤檢查,接著進行傳統的DAC檢查,在訪問核心之前通過LSM鉤子函式呼叫LSM,LSM根據具體的訪問控制策略來決定方法的合法性,以此來實現訪問控制。訪

Linux LVM學習總結——Insufficient Free Extents for a Logical Volume

itl add pre ada -a gin left info 原因 如下所示,在創建LV的時候,偶爾會遇到“Volume group "xxxx" has insufficient free space (xxxx extents): xxxx required”這類錯

Linux LVM學習總結——Insufficient Free Extents for a Logical Volume

[email protected]:~# lvcreate -L +623G -n LogVol01 VolGroup01  Volume group "VolGroup01" has insufficient free space (159487 extents): 159488 required

Linux 中斷學習總結

中斷這個概念並不陌生,在微控制器程式設計裡就用的很多,最常見的如定時器中斷、按鍵中斷等。 在微控制器裡面使用中斷,大致的步驟如下: 1.初始化配置(中斷暫存器等) 2.編寫中斷處理函式 中斷處理過程,大致如下: 1.觸發中斷 2.跳轉至相應中

linux命令學習總結

注意shell中萬用字元和正則表示式的區別 萬用字元:*表示任意的字元0-n個 正則: *表達*號前面的字元匹配0-n個 nohup command & 後臺執行 //

Linux命令學習總結:shutdown

[[email protected] ~]# man shutdown SHUTDOWN(8)           Linux System Administrator鈥檚 Manual          SHUTDOWN(8) NAME        shutdown - bring the

常用linux命令學習總結

檢視指定目錄下檔案大小 ls -lht logs/member*.log ls -ltr /dir 查詢最近15天內匹配的檔案並列出詳情 find logs/ -mtime -15 -name member*.log -ls find webapps/member/WEB-

Linux命令學習總結:hexdump

命令簡介: hexdump是Linux下的一個二進位制檔案檢視工具,它可以將二進位制檔案轉換為ASCII、八進位制、十進位制、十六進位制格式進行檢視。 指令所在路徑:/usr/bin/hexdump

Linux命令學習總結:last

命令簡介:     該命令用來列出目前與過去登入系統的使用者相關資訊。指令英文原義:show listing of last logged in users     執行許可權 :有些需要特殊許

Linux shell學習總結

1、#!/bin/sh    定義指令碼直譯器,將shell語句翻譯成機器語言                                        2、${var}   變數定義:通過$符號定義,變數又可以分為環境變數,指令碼變數等;統計變數的資訊有如下指令:

linux 系統學習總結1

一.虛擬機器的控制 [[email protected] Desktop]$ rht-vmctl start desktop          ##開啟Desktop虛擬機器 Error: desktop not started (is already runni

Linux下常用命令之sed學習總結

linux sed sed命令 正則表達式 sed總結 Sed功能說明:Sed是linux下一個強大的文本文件處理工具,通過對文件增加、刪除、查找、查詢操作,配合正則表達式以實現工作中的各種需求。同時也是一名運維人員必須掌握的核心技能。---------------------------

Linux 3D 編程學習總結

裝備 roi 我想 消息 lam 全部 x11 -- 右鍵模擬 Linux下應用OGRE開發3D linux下應用OGRE開發3D的資料網上非常少。今天抽出時間整理一下。 大部分內容參考OGRE主頁http://www.ogre3d.org/。 首

Tomcat學習總結(11)——Linux下的Tomcat安全優化

app span must 以及 站點 with rip web.xml dev 1、web.xml配置及修改: 站點默認主頁: <welcome-file-list> <welcome-file>index.html</welcome-fil

Linux高性能服務器編程》學習總結(五)——Linux網絡編程基礎API

讀數 p s file src prot 非線程安全 設立 無法 set 第五章 Linux網絡編程基礎API   對於網絡編程,首先要了解的就是字節序的問題,字節序分為主機字節序和網絡字節序,主機字節序又稱小端字節序,是低字節存放在地地址,而網絡字節序又稱大端字

Linux高性能服務器編程》學習總結(六)——高級I/O函數

drl trunc 高級 char .com 服務 原因 說明 inf 第六章 高級I/O函數   網絡I/O一直是Linux網絡編程中極其重要的一部分,除了前面講到的send、recv等,socket編程接口還給出了很多高級了I/O函數,這些函數大致分為三類:用

Linux高性能服務器編程》學習總結(七)——Linux服務器程序規範

pre for display 設置 同城 忽略 src 普通 hang 第七章 Linux服務器程序規範   服務器程序除了需要網絡通信外,還應該考慮很多其他的細節,而這些細節很多很雜,但又基本是模板式的。1)服務器程序基本都是以後臺形式運行的,沒有控制終端,不

Linux學習總結(一) windos環境vmware安裝centos7

color 學習總結 oot 遠程訪問服務 分享圖片 watermark 需要 mage 磁盤大小 1.在這裏我先簡單介紹下虛擬化技術,就是我們通過軟件虛擬化出來一個硬件環境,然後就可以在系統裏面安裝子系統,以來我們避免了裝linux,windos雙系統的麻煩,二來我們可以

Linux學習總結(二) 網絡配置-NAT方式靜態IP配置篇

開機啟動 log scrip 分享 如何快速 報錯 網絡服務 重新 查找 一:DHCP 服務驗證 1: 之前我們在裏面已經裝好了centos,當時我們選擇的組網方式為NAT方式,那麽我們怎麽樣如何快速實現虛擬機系統訪問外網呢?能不能直接上網呢,來我們試一下ping baid

Linux學習總結(六)-su命令 sudo 命令 限制root遠程登錄

su - rest 一次 com 註冊 情況 保存配置文件 所有權 是把 root 用戶擁有至高無上的權利,那麽我們運維人員是不是直接在root用戶下處理所有問題呢?答案是否定的,權力越大,責任越大,人是會犯錯的,因此我們要在不影響我們的工作情況下,盡量限制我們的權力,以免