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策略內的規則放行後,才可以與目標資源進行安全上下文比較,比較失敗則無法訪問資源,成功則開始訪問目標;
主體 |
(no)-->AVC拒絕訪問的資訊說明; (yes)-->目標(object)資料訪問;(最終能否訪問,還要參考rwx的許可權設定) |
安全上下文主要分為三個欄位:(可以通過ls -Z 檢視)
Identify:role:type
身份標識:
root:代表root賬號身份;
system_u:系統程式方面的標識;
user_u:一般使用者賬號相關的身份;
角色:
Object_r:代表檔案或目錄等檔案資源;
System_r:代表程序或一般使用者;
型別:
Type(型別欄位)最為重要,
型別欄位在檔案與程序的定義不太相同:
type:在檔案資源(Object)上稱為型別(type);
domain:在主體程式(Subject)中則稱為域(domain);
重設SELinux上下文:chcon和restorecon
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以預設的安全上下文改正;