Sto utilizzando la finestra mobile per eseguire un'istanza di apache. Il mio file finestra mobile più o meno così:problemi di autorizzazione con apache nella finestra mobile
FROM ubuntu
MAINTAINER [email protected]
RUN cat /etc/passwd
RUN cat /etc/group
RUN apt-get update && apt-get install -yq apache2 php5 libapache2-mod-php5 php5-mysql
RUN apt-get install -yq openssh-server
RUN mkdir /var/run/sshd
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
EXPOSE 80
ADD config/apache2/000-default.conf /etc/apache2/sites-available/000-default.conf
ADD config/php5/php.ini /etc/php5/apache2/php.ini
ADD config/start.sh /tmp/start.sh
ADD src /var/www
RUN chown -R root:www-data /var/www
RUN chmod u+rwx,g+rx,o+rx /var/www
RUN find /var/www -type d -exec chmod u+rwx,g+rx,o+rx {} +
RUN find /var/www -type f -exec chmod u+rw,g+rw,o+r {} +
#essentially: CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
CMD ["/tmp/start.sh"]
Tuttavia, quando ho costruire il contenitore ed eseguirlo, ho sempre e solo ottenere 403 errori.
Si noti che ho specificato che Apache dovrebbe funzionare come www-data
in www-data
gruppo e che/var/www è stato in modo ricorsivo chown
d appartenere a root:www-data
.
Inoltre, tutte le directory sono ricercabili e leggibili e tutti i file sono leggibili e scrivibili dal gruppo di dati www (beh, secondo ls -la e namei -m sono comunque).
Come posso risolvere questi problemi di autorizzazione? Non riesco a capirlo.
errore istantaneo da error.log apache:
[Fri May 23 18:33:27.663087 2014] [core:error] [pid 14] (13)Permission denied: [client 11.11.11.11:61689] AH00035: access to /index.php denied (filesystem path '/var/www/index.php') because search permissions are missing on a component of the path
EDIT:
uscita ls -laR /var/www
alla fine del Dockerfile:
Step 21 : RUN ls -laR /var/www
---> Running in 74fd3609dfc8
/var/www:
total 1036
drwxr-xr-x 67 root www-data 4096 May 23 18:38 .
drwxr-xr-x 26 root root 4096 May 23 18:38 ..
-rw-rw-r-- 1 root www-data 28 May 23 12:22 .gitignore
-rw-rw-r-- 1 root www-data 501 May 23 12:22 .htaccess
-rw-rw-r-- 1 root www-data 7566 May 23 12:22 index.php
uscita namei -m /var/www/index.php
a la fine del file Docker:
Step 22 : RUN namei -m /var/www/index.php
---> Running in 1203f0353090
f: /var/www/index.php
drwxr-xr-x/
drwxr-xr-x var
drwxr-xr-x www
-rw-rw-r-- index.php
EDIT2
Dopo aver provato un sacco di cose, tra cui chmod -R 777
solo per vedere se ho potuto ottenere nulla a lavorare, ho provato a mettere i file di origine aggiunte dal Dockerfile in /var/www/html
, il percorso predefinito per i file Apache da servire.
Ho soddisfatto esattamente le autorizzazioni del file predefinito (credo) e non funziona ancora. L'index.html predefinito fornito con apache viene caricato correttamente, ma la cartella src
aggiunta ha ancora un errore di accesso negato 403
.
ho cambiato il Dockerfile per ADD src /var/www/html/src
e i permessi sono stati fissati con:
RUN find /var/www/html -type d -exec chmod u+rwx,g+rx,o+rx {} +
RUN find /var/www/html -type f -exec chmod u+rw,g+r,o+r {} +
Nessuna fortuna. Di seguito è riportata una parte dell'output di ls -laR
su /var/www
. Si noti che le autorizzazioni per la cartella html
e index.html
che vengono con un apache2 installare corrispondano a quelle della cartella aggiunto src
:
Step 19 : RUN ls -laR /var/www/
---> Running in 0520950d0426
/var/www/:
total 12
drwxr-xr-x 6 root root 4096 May 23 19:23 .
drwxr-xr-x 24 root root 4096 May 23 19:23 ..
drwxr-xr-x 5 root root 4096 May 23 19:23 html
/var/www/html:
total 24
drwxr-xr-x 5 root root 4096 May 23 19:23 .
drwxr-xr-x 6 root root 4096 May 23 19:23 ..
-rw-r--r-- 1 root root 11510 May 23 18:28 index.html
drwxr-xr-x 47 root root 4096 May 23 19:23 src
/var/www/html/src:
total 1032
drwxr-xr-x 47 root root 4096 May 23 19:23 .
drwxr-xr-x 5 root root 4096 May 23 19:23 ..
-rw-r--r-- 1 root root 28 May 23 12:22 .gitignore
-rw-r--r-- 1 root root 501 May 23 12:22 .htaccess
-rw-r--r-- 1 root root 7566 May 23 12:22 index.php
Forse chmod
non funziona del tutto il modo in cui ho pensato che fa ??
Edit3
Un po 'finale delle informazioni. Il contenitore Docker è stato costruito da buildbot, che presumo sia eseguito come root.Non sono stato in grado di riprodurre questo scenario senza utilizzare buildbot per realizzare l'edificio.
Costruire tutto tramite i comandi di tipo sudo docker build -t apache .
sul mio laptop funziona bene, ma i problemi sorgono quando buildbot lo fa. Non ho idea del perché: ^/
io non considero questa una risposta, ma aggiungendo la fonte a/tmp tramite il comando ADD, quindi avere un comando RUN che copia tutto un file alla volta verso/var/www/html funzionato. SO WEIRD ** 10000000 !!!!!! 1 –
Mi sono imbattuto in questo dopo aver postato una domanda simile a http://stackoverflow.com/questions/24308760/running-app-inside-docker-as-non-root- user La mia ipotesi è che non puoi chmod/chown file che sono stati aggiunti tramite il comando 'ADD'. –
si prega di indicare la versione del docker e la piattaforma host da identificare. –