Назад | Перейти на главную страницу

Разрешение нескольких типов в поле типа метки папки в SELinux

Я специалист по Ubuntu / Debian, но у меня возникли проблемы с установкой Ubuntu в системе softraid / fakeraid, поэтому я выбрал CentOS 5.6.

Я также работаю в небольшой фирме по веб-разработке, где нам нужно предоставить общий доступ к файлам html / httpd нашего тестового сервера через samba / smb, но также разрешить Apache размещать их.

Так что мне интересно, могу ли я установить для наших файлов тип samba и httpd?

Что-то вроде,

/usr/sbin/semanage fcontext -a -t samba_share_t,httpd_sys_content_t "/var/www/html(/.*)?"

В противном случае мне придется перевести SELinux в разрешающий режим, чего я не хочу делать.

Я только что понял, что совершенно неправильно понял ваш вопрос :)

Если вы хотите разрешить Samba читать /var/www/html, который httpd_sys_content_t, у вас не должно быть проблем. Я не эксперт по самбе, но afaik samba работает в smbd_t домен, так что все должно быть в порядке:

 # sesearch -s smbd_t --allow | grep httpd_sys_content
 allow smbd_t httpd_sys_content_t : file { ioctl read getattr lock }; 
 allow smbd_t httpd_sys_content_t : file { ioctl read write create getattr setattr lock append unlink link rename }; 
 allow smbd_t httpd_sys_content_t : file { ioctl read write create getattr setattr lock append unlink link rename }; 
 allow smbd_t httpd_sys_content_t : dir { ioctl read getattr lock search }; 
 allow smbd_t httpd_sys_content_t : dir { ioctl read write create getattr setattr lock unlink link rename add_name remove_name reparent search rmdir }; 
 allow smbd_t httpd_sys_content_t : dir { ioctl read write create getattr setattr lock unlink link rename add_name remove_name reparent search rmdir }; 

Это говорит о том, что Samba разрешено читать httpd_sys_content_t каталоги и файлы. В /var/www/html дерево является httpd_sys_content_t. Вы уже пробовали это?

SHARING FILES
   If you want to share files with multiple domains (Apache,  FTP,  rsync,
   Samba),  you can set a file context of public_content_t and public_content_rw_t.
   These context allow any of the above domains  to  read  the
   content.   If  you want a particular domain to write to the public_con‐
   tent_rw_t   domain,   you   must   set   the    appropriate    boolean.
   allow_DOMAIN_anon_write.  So for samba you would execute:

       setsebool -P allow_smbd_anon_write=1

Например:

semanage fcontext -a -t public_content_rw_t '/var/www/html(/.*)?'
restorecon -R /var/www/html
setsebool -P allow_smbd_anon_write 1

И для httpd:

setsebool -P allow_httpd_anon_write=1

Видеть: http://fedoraproject.org/wiki/SELinux/apache