EUID n'est pas la même chose que UID . Dans quel contexte ces deux sont-ils utilisés dans le script?
J'ai essayé d'obtenir les valeurs par echo "UID is $UID and EUID is $EUID"
, mais seul l'espace est venu en sortie. Ma machine fonctionne sous Ubuntu 12.04 LTS. Vu sur certains sites, cela est généralement utilisé pour vérifier s'il s'agit d'un utilisateur root et tout mais pas en mesure d'obtenir la bonne différence.
Cela ne fonctionne que sur bash, pas dans dash (dans les distributions basées sur Debian car Ubuntu sh est généralement un lien symbolique vers dash).
Si vous exécutez le script de manière interactive, il se peut que bash ne soit pas configuré comme shell par défaut, exécutez bash
avant d'essayer.
Si vous l'exécutez à partir de la console:
bash script.sh
Si vous l'exécutez en utilisant son chemin (par exemple ./script.sh
) assurez-vous que la première ligne du script est:
#!/bin/bash
Et pas:
#!/bin/sh
Pour une manière plus générique de le faire, vérifiez: https://askubuntu.com/questions/15853/how-can-a-script-check-if-its-being-run-as-root
Dans ce message, la commande id
est mentionnée, où:
id -u # is the EUID
id -u -r # is the UID
Ils sont différents lorsqu'un programme exécute set-uid. L'UID effectif est l'utilisateur que vous avez changé en, l'UID est l'utilisateur d'origine.