кстати, если у вас selinux работает в режиме Enforcing, то описанные veey события будут проиходить довольно часто, особенно, если это рабочий desktop или домашний комп, которые, как правило, интенсивно используются для всякого рода экспериментов. Однако соществует очень удобный способ быстро идентифицировать все "неполадки" связанные с работой selinux.
1. первое, что нужно сделать - установть пакет setroubleshoot
Код:
yum install setroubleshoot\*
не забыть стартовать этот сервис при перезапуске системы:
Код:
chkconfig setroubleshoot on
2. при любом подозрении на то что именно selinux запрещает то или иное действие, смотреть realtime в системный лог файл:
Код:
tail -f /var/log/messages
как только вы попытаетесь сделать то, что описывал veey или, к примеру, вы создали DocumentRoot для apache вне предусмотренной для этого
/var/www/(/.*)?, или вы пытаетесь получить по ftp доступ к nfs диску, или вы пытаетесь разрешить через samba доступ к домашним директориям пользователей - вы сразу увидите в логфайле что-то подобное (в данном случае я попытался получить доуступ к nfs share через samba:
Код:
Aug 26 10:27:04 gw smbd[9343]: [2008/08/26 10:27:04, 0] smbd/service.c:make_connection_snum(1003)
Aug 26 10:27:04 gw smbd[9343]: '/net/kino/storage2' does not exist or permission denied when connecting to [kino] Error was Permission denied
Aug 26 10:27:05 gw smbd[9344]: [2008/08/26 10:27:05, 0] smbd/service.c:make_connection_snum(1003)
Aug 26 10:27:05 gw smbd[9344]: '/net/kino/storage2' does not exist or permission denied when connecting to [kino] Error was Permission denied
Aug 26 10:27:07 gw setroubleshoot: SELinux is preventing the samba daemon from reading nfs file systems. For complete SELinux messages. run sealert -l e3509638-8f6c-402a-8bea-949f1c5794ed
как видим, нам даже предлагают запустить некую команду для получения дальнейшей информации:
Код:
sealert -l e3509638-8f6c-402a-8bea-949f1c5794ed
запустив ее, получаем довольно интересный доукумент, содержащий не только описание проблемы, но и дающий точный способ ее решения (вместо того, чтобы идти в google или на форумы

)
Код:
Summary:
SELinux is preventing the samba daemon from reading nfs file systems.
Detailed Description:
SELinux has denied the samba daemon access to nfs file systems. Someone is
attempting to access an nfs file system via your samba daemon. If you did not
setup samba to share nfs file systems, this probably signals a intrusion
attempt.
Allowing Access:
If you want samba to share nfs file systems you need to turn on the
samba_share_nfs boolean: "setsebool -P samba_share_nfs=1"
The following command will allow this access:
setsebool -P samba_share_nfs=1
Additional Information:
Source Context root:system_r:smbd_t
Target Context system_u:object_r:nfs_t
Target Objects /net/kino/storage2 [ dir ]
Source smbd
Source Path /usr/sbin/smbd
Port <Unknown>
Host gw.scihost.com
Source RPM Packages samba-3.0.28-1.el5_2.1
Target RPM Packages
Policy RPM selinux-policy-2.4.6-137.1.el5
Selinux Enabled True
Policy Type targeted
MLS Enabled True
Enforcing Mode Enforcing
Plugin Name samba_share_nfs
Host Name gw.scihost.com
Platform Linux gw.scihost.com 2.6.18-92.1.10.el5xen #1 SMP
Tue Aug 5 08:46:32 EDT 2008 i686 i686
Alert Count 4
First Seen Tue Aug 26 10:23:29 2008
Last Seen Tue Aug 26 10:27:05 2008
Local ID e3509638-8f6c-402a-8bea-949f1c5794ed
Line Numbers
Raw Audit Messages
host=gw.scihost.com type=AVC msg=audit(1219760825.208:228): avc: denied { getattr } for pid=9344 comm="smbd" path="/net/kino/storage2" dev=0:1a ino=2 scontext=root:system_r:smbd_t:s0 tcontext=system_u:object_r:nfs_t:s0 tclass=dir
host=gw.scihost.com type=SYSCALL msg=audit(1219760825.208:228): arch=40000003 syscall=195 success=no exit=-13 a0=933c988 a1=bfa4a020 a2=32aff4 a3=bfa4a020 items=0 ppid=9264 pid=9344 auid=0 uid=500 gid=0 euid=500 suid=0 fsuid=500 egid=500 sgid=0 fsgid=500 tty=(none) ses=15 comm="smbd" exe="/usr/sbin/smbd" subj=root:system_r:smbd_t:s0 key=(null)
то есть все что нам остается сделать - это выполнить команду, рекомендованную в отчете, который я привел выше:
Код:
setsebool -P samba_share_nfs=1
список всех возможных "взаимоотношений" между selinux и samba пожно получить, выполнив команду:
Код:
getsebool -a|grep samba
вот он:
Код:
samba_domain_controller --> off
samba_enable_home_dirs --> on
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_share_nfs --> off
use_samba_home_dirs --> off