SELinux httpd accès en écriture à un répertoire

9

Je suis nouveau sur SELinux. est venu de debian. Je veux donner httpdaccès à un répertoire.

Le navigateur d'alertes SELinux suggère:

# grep httpd /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp 

Je ne pouvais pas comprendre comment fonctionne cette commande. Je ne spécifie aucun chemin de répertoire nulle part. comment sait-il quel répertoire autoriser httpd?

Auparavant, j'ai utilisé grep pour extraire le texte de la sortie ou du fichier. Mais ici grep est utilisé sur un processus. Que je n'ai pas compris.

Quelle est également la solution réelle. Si je veux donner à httpd un accès en écriture à un répertoire?

Neel Basu
la source
4
Et pour répondre à votre autre question, audit2allow lit le fichier journal SELinux et écrit une politique autorisant tout ce qui a été bloqué; le nom du répertoire sera dans le message du journal. En cherchant httpd, vous le limitez un peu, mais la méthode est toujours plus large qu'elle ne devrait l'être.
miken32
Réponse pertinente: unix.stackexchange.com/questions/511929/…
Salah-1

Réponses:

17

Voici comment modifier définitivement le contexte d'un répertoire:

# install semanage if you don't already have it:
yum install policycoreutils-python

# give the directory a new default context. The part at the end is a regex.
semanage fcontext -a -t httpd_sys_rw_content_t "/path/to/directory(/.*)?"

# apply the default context to the directory
restorecon -R /path/to/directory

Voici quelques informations supplémentaires sur les différents contextes pour httpd:

RHEL 7: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/SELinux_Users_and_Administrators_Guide/sect-Managing_Confined_Services-The_Apache_HTTP_Server-Types.html

RHEL 6: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Managing_Confined_Services/sect-Managing_Confined_Services-The_Apache_HTTP_Server-Types.html

Greg
la source
Parfait !! A fonctionné pour moi dans Fedora 26, policycoreutils-python était déjà installé par défaut.
Sir_Faenor
5

SELinux utilise des attributs étendus qui peuvent être ajoutés aux structures de répertoires sur le disque. Pensez-y si ces métadonnées. Les listes de contrôle d'accès (ACL) en sont un autre.

Les attributs étendus que vous devez ajouter à un répertoire sont appelés contextes et SELinux agit comme un flic de trafic, en s'assurant qu'un exécutable qui a certains contextes est autorisé à accéder au système de fichiers en fonction de ces contextes. Vous pouvez voir ce qui est disponible dans l'annuaire en utilisant le -Zcommutateur vers ls.

$ sudo ls -Z /var/www
drwxr-xr-x. root root system_u:object_r:httpd_sys_script_exec_t:s0 cgi-bin
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html

Ici, vous pouvez voir que ces répertoires ont le contexte httpd_sys_script_exec_t:s0dans le répertoire cgi-bin. et le htmldir. a httpd_sys_content_t:s0.

Vous pouvez les ajouter en utilisant la chconcommande:

$ sudo chcon -t httpd_sys_content_t public_html

La commande que vous demandez chargera simplement le module, mypoll.ppje ne pense pas qu'elle accordera des autorisations à quoi que ce soit, il y a probablement plus de messages dans le audit.logqui vous manque avec votre commande, qui vous diront plus en détail ce dont vous avez besoin faire pour autoriser l'accès.

Je vous encourage à prendre un peu de temps et à vous familiariser avec SELinux. C'est déroutant au début, mais c'est généralement simple, après y avoir passé un peu de temps. Consultez les ressources ci-dessous pour commencer.

Références

slm
la source
Merci. Je vais les parcourir. Mais pouvez-vous me dire pour l'instant ce que je dois faire pour donner un accès en écriture à ce répertoire?
Neel Basu
Si c'est du contenu que vous voulez qu'Apache lise, vous devrez probablement ajouter ce contexte au chcon -R -t httpd_sys_content_t <dir>
répertoire