Bagaimana cara mendapatkan SELinux untuk mengizinkan Apache dan Samba pada folder yang sama?


26

Dalam konfigurasi yang saya setup, saya ingin mengizinkan samba dan apache untuk mengakses / var / www Saya dapat mengatur konteks untuk mengizinkan akses samba, tetapi kemudian httpd tidak memiliki akses. Menggunakan setenforce ke 0 menghilangkan masalah jadi saya tahu bahwa itu SELinux.

Selain itu: Bagaimana saya bisa melihat konteks folder, dan dapatkah folder memiliki banyak konteks?

(CentOS)


Sudahkah Anda mencoba menggunakan opsi boolean dari sistem-config-selinux?

Jawaban:


39

Pertama, Anda dapat melihat konteks sesuatu dengan ls menggunakan ls -Z

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

Kedua, ada dua opsi untuk memberikan akses Samba dan Apache ke direktori yang sama.

Cara sederhananya adalah dengan hanya mengizinkan akses samba baca / tulis di mana saja dengan:

setsebool -P samba_export_all_rw 1

Ini sederhana, mudah, dan tidak mengacaukan dengan sifat aneh SELinux.

Jika Anda khawatir dengan Samba yang memiliki akses penuh ke semua direktori dan hanya ingin mengubah / var / www, coba:

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

Ini akan memungkinkan Samba dan Apache menulis akses ke direktori apa pun dengan konteks public_content_rw_t. Perhatikan bahwa chcon hanya memodifikasi / var / www. Setiap direktori baru yang dibuat di bawah / var / www akan menjadi public_content_rw_t, tetapi tidak ada direktori seperti / var / www / html atau / var / www / manual. Jika Anda ingin mengubah segalanya, tambahkan -R ke chcon:

chcon -R -t public_content_rw_t /var/www

Anda dapat melihat melalui halaman wiki CentOS ini untuk mendapatkan petunjuk tentang boolean SELinux lainnya.


Saya mencoba ini dan mengeluh bahwa konteks sudah ditentukan.
— Joshua Enfield

Anda benar, sepertinya hal-hal telah berubah sejak saya terakhir kali berurusan dengan SELinux. Saya akan memperbarui jawaban saya dengan beberapa opsi lain.
— David

3
@ Sudahkah Anda menyimpan pantat saya. Sampai jumpa di tempat kerja besok.
— Joel E Salas

Saya ingin menyebutkan bahwa jika webroot Anda bersarang di share samba, Anda perlu mengatur konteks pada direktori induk juga. Misalnya:chcon -t public_content_rw_t /mnt/share/webroot(/.*)? chcon -t public_content_rw_t /mnt/share
— Greg Sheremeta

1
Terima kasih, saya berjuang dengan sesuatu yang serupa tetapi dengan ftp, dan semuanya berfungsi setelah melakukansetsebool -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

Sebagai contoh:

semanage fcontext -a -t public_content_rw_t '/var/www(/.*)?'
restorecon -R /var/www
setsebool -P allow_smbd_anon_write 1
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.