Compruebe si el usuario existe usando id (linux)

Compruebe si el usuario existe usando id (linux)

Veo muchos ejemplos sobre cómo verificar si el usuario existe en el sistema *nix usando id

Para probar mi código, creé un código simple y después de verificar y verificar el trabajo lo copié para desarrollar el script.

checkuser.sh

#!/usr/bin/env bash

function checkUser() {
  if id "$USER" >/dev/null 2>&1; then
        echo "user exists"
  else
        echo "user does not exist"
  fi
}

USER=$4
checkUser

código de prueba

sudo local/checkuser.sh misitio test 7.3 abkrim /home/abkrim/Sites/ 
abkrim.EXISTS
user exists

Pero cuando la copia en mi script no funciona

#!/usr/bin/env bash
if [ $EUID != 0 ]; then
    sudo "$0" "$@"
    exit $?
fi

SITE=$1
PHP=$3
USER=$4
NGINX=/etc/nginx/
FPM=/etc/php/${PHP}/fpm/pool.d/
PATH=$5
checkUser

código de prueba

sudo local/deploy_site.sh misitio test 7.3 abkrim /home/abkrim/Sites/                                                         
abkrim
user does not exist

Respuesta1

PATHestá en el medio ambiente, esespecial. Después de que su script lo haga PATH=$5, ya no podrá encontrar el idejecutable; por lo tanto esto

id "$USER" >/dev/null 2>&1

falla silenciosamente.

Probablemente no desee sobrescribir PATH. probablemente quierastus variables en minúsculas.

Sin embargo si tuen realidaddesea sobrescribir PATH, luego debería usar la ruta completa a cualquier ejecutable que no debería depender del nuevo ("personalizado") PATH. P.ej /usr/bin/id.

información relacionada