Centos 7 - Docker volumes + samba share + selinux

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Erik070
  • Registratie: Mei 2003
  • Laatst online: 19-09 11:31
Ik zit met het probleem dat een Docker container een volume gemapped heeft om data naar weg te schrijven. De folder waar die data in weggeschreven wordt wil ik vervolgens sharen dmv Samba.
Nu loop ik tegen het probleem aan dat de Docker container automatisch een label aan die folder en onderliggende files geeft, en met dat label geeft Selinux Samba geen toegang tot de folder/files.

Label wat de container geeft is container_file_t, en het label dat Samba toegang geeft is samba_share_t

Via dit command heb ik het label proberen aan te passen:
semanage fcontext -a -t samba_share_t "/data1(/.*)?" && restorecon -rv /data1

Probleem is dat de container dus direct weer het andere label er aan geeft. Bovendien zou de container ook geen toegang meer hebben als ik op 1 of andere manier kan voorkomen dat het label weer automatisch toegepast wordt.

Zit dus een beetje in een catch22. Wat meestal betekent het dat ik het vanuit de basis verkeerd aanpak.
Maar ik zie geen andere weg (wellicht tunnelvisie) dan vanuit de Docker container direct naar de share te schrijven dmv een volume. Moet ik zoiets op een andere manier benaderen om dit voor elkaar te krijgen?

Uiteraard Selinux uitschakelen en dan is dit probleem opgelost, alleen vind ik dat geen fijn idee.

Relevante software en hardware die ik gebruik:
CentOS 7.7 Core
Docker containers: nzbget, radarr (later komt nog sonarr)

Alle reacties


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 22:19

Hero of Time

Moderator LNX

There is only one Legend

Dus de directory die je hebt gemapped aan een container deel je ook via Samba? Gaat dat wel goed als je een bestand zou bewerken op beide kanten? Even selinux uit de situatie denken. Er wordt vaak aangegeven dat het onverstandig is om een gedeelde map op een andere manier te benaderen via een ander sharing methode, omdat het file locking mechanisme anders is en niet samenwerkt.

Je hebt drie oplossingen. Eentje noem je zelf als. De tweede is andersom, deel de mapped directory via Samba vanuit de container (maar dat kan ook weer problemen opleveren, geen idee hoe dat verder werkt). De laatste is een policy schrijven waarbij Samba wordt toegestaan om bestanden met het container_file_t label te kunnen benaderen of dat je container bestanden in de map wegschrijft zonder label te veranderen en deze op samba_share_t laat staan.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Erik070
  • Registratie: Mei 2003
  • Laatst online: 19-09 11:31
Ik maak mij niet zo zorgen over file locks oid. In mijn huidige setup heb ik het ook zo geconfigureerd maar maak daar geen gebruik van Docker containers.

Zat ook al te kijken naar zelf een policy samenstellen zoals jij ook noemt. Dat, of naar een bestaande policy welke voor beide werkt. Wellicht is dat wel samba_share_t, dit moet ik nog even uitproberen.

Update:
Ik krijg met geen mogelijkheid de huidige selinux context van die folders af. Uiteindelijk even een test gedaan door nieuwe folders aan te maken als volumes voor de containers. Daarop eerst de samba_share_t context toegepast, dat gaat allemaal goed (zag nu ook eindelijk hoe het wel moest gaan, je krijgt met restorecon namelijk duidelijk bericht dat er iets is gewijzigd). Alleen nu krijgen de containers een permission denied op die folders. En als ik bij het opgeven van de volume ":z" (zorgt voor dat Selinux context wordt gezet) toevoeg hebben de containers wel weer toegang maar wordt de context ook weer aan gepast naar contaiiner_file_t en werkt Samba niet.

Ik ga toch maar kijken naar een custom policy.

Update 2:
Custom policy gaat het worden, alleen kost me dat wat meer moeite dan gedacht. Voorlopig permissive mode voor alleen het domain waar de samba policy in zit.

Update 3:
Voor wie dit nog leest. Samba prestaties vielen mij wat tegen, begon me te realiseren dat ik ook geen apparaten heb die perse alleen samba/smb ondersteunen. Overgestapt op NFS (wat ik voorheen op mn NAS ook al had). Selinux doet daar niet moeilijk over, permissive mode voor smb_t domain weer ongedaan gemaakt :) .

[ Voor 68% gewijzigd door Erik070 op 14-05-2020 23:51 ]