एक ही फ़ोल्डर में अपाचे और सांबा की अनुमति देने के लिए मुझे SELinux कैसे मिलता है?


26

कॉन्फ़िगरेशन में मेरे पास सेटअप है मैं सांबा और अपाचे को एक्सेस करने की अनुमति देना चाहता हूं / var / www मैं सांबा एक्सेस की अनुमति देने के लिए एक संदर्भ सेट करने में सक्षम हूं, लेकिन तब httpd तक पहुंच नहीं है। सेटेनफोर्स का 0 पर उपयोग करने से समस्याएं समाप्त हो जाती हैं, इसलिए मुझे पता है कि यह SELinux है।

इसके अलावा: मैं एक फ़ोल्डर का संदर्भ कैसे देख सकता हूं, और क्या एक फ़ोल्डर में कई संदर्भ हो सकते हैं?

(CentOS)


क्या आपने सिस्टम-config-selinux के बूलियन विकल्प का उपयोग करने की कोशिश की है?

जवाबों:


39

सबसे पहले, आप ls -Z का उपयोग करके ls के साथ कुछ का संदर्भ देख सकते हैं

[root@servername www]# ls -dZ /var/www
drwxr-xr-x  root root system_u:object_r:httpd_sys_content_t /var/www

दूसरा, सांबा और अपाचे को एक ही डायरेक्टरी में एक्सेस देने के दो विकल्प हैं।

सरल तरीका यह है कि आप सांबा को हर जगह पढ़ने / लिखने की अनुमति दें:

setsebool -P samba_export_all_rw 1

यह सरल, आसान है, और SELinux के किसी भी अजीब गुण के साथ खिलवाड़ नहीं करता है।

यदि आप सांबा से सभी निर्देशिकाओं का पूर्ण उपयोग करने से संबंधित हैं और केवल / var / www को बदलना चाहते हैं, तो प्रयास करें:

chcon -t public_content_rw_t /var/www
setsebool -P allow_smbd_anon_write 1
setsebool -P allow_httpd_anon_write 1

यह सांबा और अपाचे दोनों को public_content_rw_t संदर्भ के साथ किसी भी निर्देशिका तक पहुंच लिखने की अनुमति देगा। ध्यान दें कि chcon केवल संशोधन / var / www है। / Var / www के तहत बनाई गई कोई भी नई निर्देशिका public_content_rw_t होगी, लेकिन मौजूदा निर्देशिका जैसे / var / www / html या / var / www / मैनुअल नहीं होगी। यदि आप सब कुछ बदलना चाहते हैं, तो -R को chcon में जोड़ें:

chcon -R -t public_content_rw_t /var/www

अन्य SELinux बूलियन पर संकेत प्राप्त करने के लिए आप इस CentOS wiki पृष्ठ को देख सकते हैं।


मैंने यह कोशिश की और यह शिकायत करता है कि एक संदर्भ पहले से ही परिभाषित है।
जोशुआ एनफील्ड

आप सही हैं, ऐसा लगता है कि चीजें बदल गई हैं क्योंकि मैंने आखिरी बार SELinux के साथ गड़बड़ की थी। मैं कुछ अन्य विकल्पों के साथ अपने उत्तर को अपडेट करूंगा।
डेविड

3
@ क्या तुमने मेरा बट बचा लिया। कल काम पर मिलते हैं।
जोएल ई सलास

मैं यह उल्लेख करना चाहता था कि यदि आपके वेबरोट को सांबा के हिस्से में रखा गया है, तो आपको मूल निर्देशिका पर भी संदर्भ सेट करना होगा। उदाहरण के लिए:chcon -t public_content_rw_t /mnt/share/webroot(/.*)? chcon -t public_content_rw_t /mnt/share
ग्रेग शेरमेता

1
धन्यवाद, मैं कुछ इसी तरह के लेकिन एफटीपी के साथ संघर्ष कर रहा था, और सब कुछ करने के बाद काम करता हैsetsebool -P ftpd_full_access=1
जियोगिलीन

9
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(/.*)?'
restorecon -R /var/www
setsebool -P allow_smbd_anon_write 1
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.