Wildcard Paths con semanage fcontext

1

Sto cercando di impostare i contesti di SELinux all'interno di una struttura di directory. Quindi è qualcosa del genere:

/var/www/sites
    /www.example.com
        /html
        /logs
    /www.example.org
        /html
        /logs

Voglio impostare diversi contesti su tutte le directory logs e le directory html . Con chcon posso solo fare:

sudo chcon -Rt httpd_sys_rw_content_t /var/www/sites/*/html
sudo chcon -Rt httpd_log_t /var/www/sites/*/logs

Ma ora voglio renderli permanenti e non così facili con semanage fcontext . Sembra utilizzare la selezione regex basata sui documenti, che fornisce ripetutamente esempi come /myweb(/.*)? . Così ho provato questo:

sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/sites/[^/]+/html(/.*)?"

Ma non apporta alcuna modifica. Quando uso restorecon dopo questo nulla è cambiato. Se non provo a usare [^/]+ , funziona bene:

sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/sites/www.example.com/html(/.*)?"

Qualcuno può indicarmi la giusta direzione? La documentazione su questo è molto limitata da ciò che ho trovato finora. Come posso utilizzare una selezione di caratteri jolly all'interno di un percorso? Grazie.

    
posta SuperDuperApps 02.03.2017 - 05:32
fonte

3 risposte

0

Mi piacerebbe comunque sapere se questo è possibile utilizzando direttamente il comando semanage fcontext , ma ho trovato un modo per farlo usando find :

sudo find /var/www/sites -type d -regex "/var/www/sites/[^/]+/html" -exec semanage fcontext -a -t httpd_sys_rw_content_t '{}(/.*)?' \;
    
risposta data 02.03.2017 - 17:52
fonte
1

Forse un po 'di documentazione sul formato delle espressioni regolari ammette che il semanage sarebbe utile, ho scoperto alcuni schemi che funzionano solo per tentativi ed errori.

Questi pattern hanno funzionato per me per specificare più percorsi oltre il carattere jolly alla fine:

semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/(public/media|httpdocs/wp-content)/uploads(/.*)?"

Corrisponde sia a public/media/uploads che a httpdocs/wp-content/uploads e child.

semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/host/httpdocs(/subdir)?/wp-content/uploads(/.*)?"

Questo corrisponde sia a httpdocs/wp-content/... che a httpdocs/eng/wp-content/...

Sto facendo questa risposta come una wiki sperando che altri possano contribuire con schemi di lavoro.

    
risposta data 31.10.2017 - 21:56
fonte
0

semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/sites/.*/html(/.*)?"

Vedrai questo formato in uso (su Centos 7 per impostazione predefinita) eseguendo semanage fcontext -l | grep /var/www

    
risposta data 21.11.2018 - 21:34
fonte

Leggi altre domande sui tag