lfs下selinux使用者空間程式的安裝

2021-05-26 22:29:32 字數 1448 閱讀 4782

selinux的規則在使用者空間定義、編譯和載入。selinux的使能也可在使用者空間進行。這樣為selinux的管理提供了很大的靈活性。

在使用者空間主要安裝的程式主要包括:

selinux庫和使用者空間程式、需要重新編譯連線到libselinux或者打補丁的應用程式(例如:sysvinit、coreutils等)和selinux的參考規則。

這裡先寫一下

selinux使用者空間程式吧,主頁如下:

checkpolicy、libselinux、libsemanage、libsepol、policycoreutils、sepolgen

幾個的安裝都是直接make就行,沒有configure的。安裝都是make install。

但libselinux和libsemanage最好   

make pywrap && make install_pywrap

要不後面python會找不到selinux和semanage的模組的。

其實安裝都還簡單,都很順利的成功了,但中間遇到乙個極為鬱悶的問題。

在後來編譯參考規則的時候,一直在報解析規則檔案錯誤。就連最基本的規則

allow bin_t device_t:filesystem associate;

都會報 ":f" 不能識別。

policy/modules/kernel/corecommands.te":18:error 'syntax error' at token ':f' on line 2440:

allow bin_t device_t:filesystem associate;

#line 18

./checkmodule:  error(s) encountered while parsing configuration

找了半天才發現是lfs裡面的lex導致checkpolicy編譯出問題了。

checkpolicy編譯的時候會用lex根據policy_scan.l生成y.tab.c。checkpolicy的makefile裡面如下:

lex.yy.c: policy_scan.l y.tab.c

$(lex) policy_scan.l

$(lex)預設是lex。

而根據lfs的手冊,flex安裝的時候把lex弄成如下的指令碼了:

cat > /usr/bin/lex << "eof"#!/bin/sh

# begin /usr/bin/lex

exec /usr/bin/flex -l "$@"

# end /usr/bin/lex

而出問題的就是那個 -l 的引數。去了那個引數或者把lex=flex make就一切都ok了!

cannot find your entry in the shadow passwd file.

重新配置、編譯一下policycoreutils,newrole會鏈結到libpam進行了。

關於linux下的selinux

1.mac 對訪問的控制徹底化,對所有的檔案 目錄 埠的訪問都是基於策略設定的,可由管理員時行設定 2.rbac 對於使用者只賦予最小許可權。使用者被劃分成了一些role 角色 即使是root使用者,如果不具有sysadm r角色的話,也不是執行相關的管理。role可以執行哪些domain,也是可以...

核心空間與使用者空間

1.核心態與使用者態的區別 1 核心態 的 不受任何限制,可以訪問 所有處理器指令集 記憶體位址以及i o空間 2 使用者態的 只能訪問其位址空間的頁表項中規定的虛擬位址。2.使用者態到核心態的切換方式 1 系統呼叫 軟中斷的一種 由使用者程序主動發起 2 異常 當cpu在執行執行在使用者態下的程式...

使用者空間和核心空間

應用程式是從頭到尾執行單個任務。模組只是預先註冊自己以便服務於將來的某個請求,模組初始化函式的任務就是為以後呼叫模組函式預先做準備,就像模組說 我在這,並且我能做這些工作。模組的退出函式將在模組被解除安裝前呼叫,他告訴核心 我要離開了,不要再讓我做任何事了。應用程式在退出時,可以不管資源的釋放或其他...