Samba共享後不能訪問,或者看不到檔案,是selinux惹的禍
Samba共享後不能訪問是selinux惹的禍
第一種方法:關閉SELinux,並修改配置檔案,使系統啟動時不啟動SELinux。
不關機的關閉方法是:setenforce 0
永久關閉是:
vi /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=enforcing
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted
把 SELINUX設定為disable, 下次啟動系統後將會停止SElinux。
還有一種是;
在核心引數後加上 selinux=0 (停止) 或 selinux=1 (開啟)引數
vi /boot/grub/menu.lst
title Fedora Core (2.6.18-1.2798.fc6)
root (hd0,0)
kernel /vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb quiet selinux=0
initrd /initrd-2.6.18-1.2798.fc6.img
檢查SELinux現時況態的命令是; getenforce
第二種方法 :不關閉SELinux配置 samba的方法 (在51cto網上找到的)
將smb.conf中如下這兩行啟用(去掉行首的;號就可以了)
setsebool -P samba_domain_controller on setsebool -P samba_enable_home_dirs on這兩行生效後,自己的home目錄就可以正常讀寫了。
針對於目錄共享設定:
如 /home/samba/test目錄設定成完全的共享就應該在字元狀態寫輸入:
chcon -t samba_share_t /home/samba/test
同時不要忘記將/home/samba/test目錄屬性設定成777 就可以了。
預設的,SELinux禁止網路上對Samba伺服器上的共享目錄進行寫操作,即使你在smb.conf中允許了這項操作。
假設你已經配置了共享目錄/share並允許使用者進行讀寫,而你又不想關閉SELinux的話,可以試試以下操作:
程式程式碼:
-
#/usr/sbin/setsebool -P allow_smbd_anon_write=1
-
#chcon -t public_content_rw_t /share
其中第一條語句設定SELinux放行標記了public_content_rw_t的內容,第二條語句把欲共享的/share目錄標記為public_content_rw_t。
附SELinux資料:
selinux簡介
SElinux 在linux核心級別上提供了一個靈活的強制訪問控制系統(MAC),這個強制訪問控制系統是建立在自由訪問控制系統(DAC)之上的。
DAC是指系統的安全訪問控制都是由系統管理員root自由管理的,不是系統強制行為
MAC執行的時候,比如一個應用程式或者一個執行緒以某個使用者UID或者SUID執行的時候同樣對一些其他的物件擁有訪問控制限制,比如檔案,套接子(sockets)或者其他的執行緒
通過執行SElinux MAC核心可以保護系統不受到惡意程式的侵犯,或者系統本身的bug不會給系統帶來致命影響(把影響限定在一定範圍內)
SElinux為每一個使用者,程式,程序,還有檔案定義了訪問還有傳輸的許可權。然後管理所有這些物件之間的互動關係
對於SELinux設定的物件全限是可以根據需要在安裝時候規定嚴格程度,或者完全禁用
在大多數情況下,SElinux對於使用者來說是完全透明的,普通使用者根本感覺不到 Selinux的存在,只有系統管理員才需要對這些使用者環境,以及策略進行考慮。這些策略可以按照需要寬鬆的部署或者應用嚴格的限制,Selinux提供 了非常具體的控制策略,範圍覆蓋整個linux系統
比如,當一個物件如應用程式要訪問一個檔案物件,核心中的控制程式檢查訪問向量快取 (AVC),從這裡尋找目標和物件的許可權,如果在這裡沒有發現許可權定義,則繼續查詢安全定義的上下關聯,以及檔案許可權,然後作出准許訪問以及拒絕訪問的決 定。如果在var/log/messages出現avc: denied資訊,則表明訪問拒絕。
目標和物件通過安裝的策略來決定自身的安全關聯,同時這些安裝的策略也負責給系統產生安全列表提供資訊。
除了執行強制模式以外,SELinux可以執行在許可模式,這時候,檢查AVC之後,拒絕的情況被記錄。Selinux不強制使用這種策略.
以下介紹一下SELinux相關的工具
/usr/bin/setenforce 修改SELinux的實時執行模式
setenforce 1 設定SELinux 成為enforcing模式
setenforce 0 設定SELinux 成為permissive模式
如果要徹底禁用SELinux 需要在
/etc/sysconfig/selinux中設定引數selinux=0 ,
或者在/etc/grub.conf中新增這個引數
/usr/bin/setstatus -v