ฉันจะให้ SELinux อนุญาต Apache และ Samba ในโฟลเดอร์เดียวกันได้อย่างไร


26

ในการกำหนดค่าฉันมีการตั้งค่าฉันต้องการอนุญาตให้ samba และ apache เข้าถึง / var / www ฉันสามารถตั้งค่าบริบทเพื่ออนุญาตการเข้าถึง samba แต่ httpd นั้นไม่สามารถเข้าถึงได้ การใช้ setenforce เป็น 0 ช่วยขจัดปัญหาดังนั้นฉันจึงรู้ว่ามันคือ SELinux

นอกจากนี้: ฉันจะดูบริบทของโฟลเดอร์ได้อย่างไรและโฟลเดอร์สามารถมีหลายบริบทได้อย่างไร

(CentOS)


คุณลองใช้ตัวเลือกบูลีนของ system-config-selinux หรือไม่?

คำตอบ:


39

ก่อนอื่นคุณสามารถดูบริบทของบางสิ่งด้วย ls โดยใช้ ls -Z

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

ประการที่สองมีสองตัวเลือกในการให้ Samba และ Apache เข้าถึงไดเรกทอรีเดียวกันได้

วิธีง่าย ๆ คือเพียงอนุญาตให้ samba เข้าถึงการอ่าน / เขียนทุกที่ด้วย:

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

สิ่งนี้จะช่วยให้ทั้ง Samba และ Apache สามารถเขียนเข้าถึงไดเรกทอรีใด ๆ ที่มีบริบท 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

คุณสามารถดูหน้าวิกิ CentOS นี้เพื่อรับคำแนะนำเกี่ยวกับ SELinux booleans อื่น ๆ


ฉันลองสิ่งนี้และมันบ่นว่าบริบทมีการกำหนดไว้แล้ว
Joshua Enfield

คุณพูดถูกดูเหมือนว่าสิ่งต่าง ๆ จะเปลี่ยนไปตั้งแต่ฉันยุ่งกับ SELinux ครั้งล่าสุด ฉันจะอัปเดตคำตอบของฉันด้วยตัวเลือกอื่น ๆ
เดวิด

3
@Dave คุณบันทึกก้นของฉัน พบกันที่ทำงานพรุ่งนี้
Joel E Salas

ฉันต้องการพูดถึงว่าถ้า webroot ของคุณซ้อนอยู่ในการแชร์แซมบ้าคุณจะต้องตั้งค่าบริบทในไดเรกทอรีหลักเช่นกัน ตัวอย่างเช่น:chcon -t public_content_rw_t /mnt/share/webroot(/.*)? chcon -t public_content_rw_t /mnt/share
Greg Sheremeta

1
ขอบคุณฉันกำลังดิ้นรนกับสิ่งที่คล้ายกัน แต่กับ ftp และทุกอย่างทำงานได้หลังจากที่ทำsetsebool -P ftpd_full_access=1
giorgiline

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.