Estoy intentando cambiar de usuario al usuario de tomcat7 para configurar los certificados SSH.
Cuando lo hago su tomcat7
, no pasa nada.
whoami
todavía ruturns root después de hacer su tomcat7
Al hacer una more /etc/passwd
, obtengo el siguiente resultado que muestra claramente que existe un usuario de tomcat7:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
messagebus:x:101:104::/var/run/dbus:/bin/false
colord:x:102:105:colord colour management daemon,,,:/var/lib/colord:/bin/false
saned:x:103:106::/home/saned:/bin/false
tomcat7:x:104:107::/usr/share/tomcat7:/bin/false
Lo que estoy tratando de solucionar es este error en Hudson:
Command "git fetch -t git@________.co.za:_______/_____________.git +refs/heads/*:refs/remotes/origin/*" returned status code 128: Host key verification failed.
Este es mi Dockerfile, toma una configuración y un archivo war de hudson existente que está alquilado y crea una imagen, hudson funciona bien, simplemente no puede acceder a git debido a que los certificados no existen para el usuario tomcat7.
FROM debian:wheezy
# install java on image
RUN apt-get update
RUN apt-get install -y openjdk-7-jdk tomcat7
# install hudson on image
RUN rm -rf /var/lib/tomcat7/webapps/*
ADD ./ROOT.tar.gz /var/lib/tomcat7/webapps/
# copy hudson config over to image
RUN mkdir /usr/share/tomcat7/.hudson
ADD ./dothudson.tar.gz /usr/share/tomcat7/
RUN chown -R tomcat7:tomcat7 /usr/share/tomcat7/
# add ssh certificates
RUN mkdir /root/.ssh
ADD ssh.tar.gz /root/
# install some dependencies
RUN apt-get update
RUN apt-get install --y maven
RUN apt-get install --y git
RUN apt-get install --y subversion
# background script
ADD run.sh /root/run.sh
RUN chmod +x /root/run.sh
# expose port 8080
EXPOSE 8080
CMD ["/root/run.sh"]
Estoy usando la última versión de Docker (Docker versión 1.0.0, compilación 63fe64c / 1.0.0), ¿es esto un error en Docker o me falta algo en mi Dockerfile?
USER
Conoce la instrucción Dockerfile?RUN
después de unaUSER
instrucción se realiza bajo el uid correspondiente, por lo que aunque no estoy seguro de entender perfectamente tu problema, parece que podría ser lo que estás buscando.COPY
crea archivos como uid 0, lo que significa que el usuario no root no puede escribirlos, y la ejecuciónRUN chown ...
en esos archivos no funcionará a menos que el usuario actual también sea root. Entonces, uno termina alternando entre root y el otro usuario a través del Dockerfile.