Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

354
Views
$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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!