SELinux安全上下文初探
開啟我們的SELinux,我在安全linux系統(tǒng)時將它禁用了,但是開啟selinux后,可能會對我們的一些服務(wù)有些限制功能,不如你可能不能正常訪問網(wǎng)頁、ftp等等,下面就對這些問題通過設(shè)置SELinux來解決這些問題:
1、如果你的SELinux沒用啟動的話,有一下幾種啟動的方法
不可用狀態(tài)
開啟SELinux
Vim /etc/sysconfig/selinux 如下:
或者用圖形化界面修改命令為 system-config-selinux 或 system-cofig-securitylevel 將SELinux設(shè)置為“強制”
以上三種方法必須重新啟動計算機后SELinux才能生效。
2、當我們將SELinux設(shè)置為“強制”模式后,我們更改httpd.conf里的根目錄以后,會發(fā)現(xiàn),httpd重啟不了,總失敗。
這里將根目錄改為如下:
DocumentRoot "/www"
mkdir /www
echo "123" > /www/index.html
重啟httpd時,報錯了,重啟不了,查看日志發(fā)現(xiàn)如下:
Dec 23 11:33:03 localhost setroubleshoot: SELinux is preventing access to files with the default label, default_t. For complete SELinux messages. run sealert -l 511c4eda-797d-4b79-a1e3-51477afed4e6
按照日志的提示我們允許sealert -l 511c4eda-797d-4b79-a1e3-51477afed4e6命令 有以下信息:
源上下文和目標上下文的類型 不同,httpd 無法對default_t類的文件及目錄的讀取,所以啟動不了,修改為httpd能夠讀取的類型
httpd能夠讀取什么樣的類型呢,通過如下一些命令查看
命令 ll -Z 目錄或文件
或者是命令 semanage fcontext -l | grep http
從上邊我們可以看到httpd 能讀取的類型是 httpd_sys_context_t的類型
好了知道了這個類型,我們就把/www這個目錄該成這個類型 命令有chcon(change context)或者restorecon 用法如下:
chcon -R --reference=/var/www/html/ /www/ 或者chcon -t httpd_sys_content_t /www/
改回原來的類型用 restorecon -v -R /www
Httpd正常啟動了,并且也能訪問到index.html網(wǎng)頁
重啟httpd報錯時。除了參看日志外還可用以下命令排錯
sealert -b 或者是圖形界面下右上角的單擊小星星
關(guān)于web這里用的是默認的80端口,如果我們要建基于端口的虛擬主機時,能否通過SELinux呢?假如我們把端口改為8001,
Listen 8001
重啟httpd服務(wù)
出現(xiàn)錯誤了,不能綁定8001端口。
通過上述的排錯方式找到了如下:
SELinux安全策略庫里沒有關(guān)于httpd的8001端口,所以我們要添加上去。
semanage port -a -t http_port_t -p tcp 8001
重啟httpd服務(wù)就沒問題了。
ftp關(guān)于SELinux的一些問題
登錄ftp以后dir一下看不到自己家目錄里的任何文件及文件夾如下:
通過上述的排錯方法得知如下:
先看一下ftp的布爾值:
默認SELinux不允許的,需要改為ON命令如下:
setsebool -P ftp_home_dir=ON 或者setsebool -P ftp_home_dir=1
再次dir:
Samba關(guān)于SELinux的一些問題
共享目錄為/wsm
[public]
comment = Public
path = /wsm
public = yes
但是卻訪問不了/wsm 和自己的家目錄 日志如下:
Dec 23 14:35:15 localhost smbd[13169]: [2012/12/23 14:35:15, 0] smbd/service.c:make_connection_snum(1003)
Dec 23 14:35:15 localhost smbd[13169]: '/wsm' does not exist or permission denied when connecting to [public] Error was 權(quán)限不夠
要設(shè)置一下SELinux了, smb.conf里就有關(guān)于SELinux的配置說明
執(zhí)行如下命令
chcon -R -t samba_share_t /wsm/
開啟自己的家目錄
setsebool -P samba_enable_home_dirs=ON