Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

355
Visualizações
$HOME no está configurado para ec2-user durante los comandos en la ejecución de datos de usuario

Puse los siguientes comandos en los datos de usuario de un EC2 que ejecuta RedHat 8 AMI ( ami-0fc841be1f929d7d1 ), cuando se ejecutan, mkdir intenta crear .kube en la raíz, lo que me parece que $HOME no está configurado en ese momento.

 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config

Los siguientes son registros de /var/log/user-data.log

 + mkdir -p /.kube + sudo cp -i /etc/kubernetes/admin.conf /.kube/config ++ id -u ++ id -g + sudo chown 0:0 /.kube/config

Cuando hago SSH a la instancia, $HOME se establece correctamente en /home/ec2-user.

¿Podría aconsejarme qué hice mal aquí?

Gracias

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

$HOME hace referencia al directorio de inicio del usuario que ha iniciado sesión. Userdata se ejecuta bajo el usuario raíz, y el usuario raíz $HOME es / . Ese es el resultado que estás viendo.

En lugar de la variable $HOME , su secuencia de comandos debe hacer referencia a /home como un literal.

Consulte https://superuser.com/questions/271925/where-is-the-home-environment-variable-set

over 4 years ago · Santiago Trujillo Relatório

0

Está ejecutando como sudo, que se sabe que cambia las variables de entorno que se establecen con el shell de sus usuarios (como $HOME ), así como el contexto de shell basado como ssh-agent .

En general, puede asegurarse de que esto persista cuando ejecuta sudo agregándolo a la configuración de env_keep en su configuración de sudoers agregando la siguiente línea dentro de /etc/sudoers . Hay más información disponible aquí , tenga cuidado al modificar este archivo.

 Defaults env_keep=HOME

De lo contrario, si no desea realizar el cambio anterior, asegúrese de tener los permisos para llevarlo a cabo sin ejecutar sudo o pasar un valor de ruta absoluto .

En general, me mantendría alejado de los datos de usuario para la configuración importante de todos modos, en lugar de construir una AMI prefabricada con anticipación con la configuración que desee, utilizando una herramienta de configuración como Ansible , Chef , Puppet .

Alternativamente , como esto está dentro de los Datos de usuario de todos modos, es poco probable que ya haya configurado la configuración de sudoers, en su lugar, solo debe especificar la ruta.

over 4 years ago · Santiago Trujillo Relatório

0

Cuando se aprovisiona su servidor EC2, el script de datos de usuario se ejecuta como raíz de usuario, por lo que $HOME está vacío. Lo que podría hacer es definir HOME env var en la parte superior de su secuencia de comandos de datos de usuario, así (inserte el directorio de inicio de su usuario aquí):

 export HOME=/home/ubuntu

Lo probé y funciona (instalé NVM, SDKMAN, sbt, java, git, docker; todo funciona bien). Es posible que deba hacer algunos chown al final de su secuencia de comandos de datos de usuario para cambiar el propietario de algunos archivos a su usuario. Por ejemplo, si sus datos de usuario configuran algunos archivos en su directorio de inicio:

 chown ubuntu ~/.foo/bar.properties
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda