1. 程式人生 > >SELinux限制導致VSFTP匿名使用者不能上傳檔案問題解決方法

SELinux限制導致VSFTP匿名使用者不能上傳檔案問題解決方法

確保其它配置正確,還不能上傳,就是SELinux的限制;

解決步驟:

getsebool -a | grep ftp                 //列出ftp的相關規則布林值開啟狀態
setsebool -P allow_ftpd_anon_write on        //允許匿名使用者寫入
ll -Z /var/ftp/                         //檢視ftp資料夾的具體屬性,包括安全上下文
chcon -t public_content_rw_t /var/ftp/目錄         //設定的FTP目錄可以上傳檔案


查詢布林值是否開啟:getsebool

getsebool [-a] [

布林條款值]

-a:列出系統上所有布林條款值設定為開啟或關閉值;

設定布林值開啟或關閉:setsebool

setsebool [-P]布林值=[0|1]

-p:直接將設定值寫入配置檔案,該設定資料將來會生效;

安全上下文(security context)簡單來講,就認為其實是SELinux內必備的rwx就是了;

主體不能訪問目標除了策略指定外,主體目標安全上下文必須一致才能夠順利訪問;這個安全上下文類似檔案系統的rwx

主體程式必須通過SELinux策略內的規則放行後,才可以與目標資源進行安全上下文比較,比較失敗則無法訪問資源,成功則開始訪問目標;

主體

(程序) -->SELinux(分析策略規則) -->安全上下文--

 (no)-->AVC拒絕訪問的資訊說明;

 (yes)-->目標(object)資料訪問;(最終能否訪問,還要參考rwx的許可權設定)

安全上下文主要分為三個欄位:(可以通過ls -Z 檢視)

Identifyroletype

身份標識:

root:代表root賬號身份;

system_u:系統程式方面的標識;

user_u:一般使用者賬號相關的身份;

角色:

Object_r:代表檔案目錄等檔案資源;

System_r:代表程序一般使用者;

型別:

Type(型別欄位)最為重要,

基本上,一個主體程序能否讀取到這個檔案資源與型別欄位有關

型別欄位在檔案與程序的定義不太相同:

type:在檔案資源(Object)上稱為型別(type)

domain:在主體程式(Subject)中則稱為域(domain)

重設SELinux上下文:chconrestorecon

chcon [-R] [-t type] [-u user] [-r role]檔案

chcon [-R] --reference=範例檔案檔案

-R:連同目錄下的子檔案同時修改;

-t:後接安全上下文的型別欄位,如 httpd_sys_content_t

-u:後接身份識別,如system_u

-r:後接角色,如system_r

--reference=範例檔案:拿某個檔案當範例來修改後續的檔案型別;

eg:將index.html型別改為httpd_sys_conten_t          chcon -t httpd_sys_content_t /var/www/html/index.html

chcon是通過直接指定的方式來處理安全上下文的型別資料

restorecon [-Rv]檔案或目錄

-R:連同子目錄一起修改;

-v:將過程顯示到螢幕;

restorecon以預設的安全上下文改正;