J'essaie d'écrire un script bash (dans Ubuntu) qui sauvegardera un répertoire en utilisant tar.
Comment puis-je effectuer une vérification dans le script afin qu'il ne puisse être exécuté qu'en tant que root (ou avec sudo)?
Par exemple, si un utilisateur exécute le script, il doit indiquer que ce script doit être exécuté avec les privilèges sudo, puis quitter. Si le script est exécuté en tant que root, il continuera après la vérification.
Je sais qu'il doit y avoir une solution facile, je n'ai tout simplement pas pu la trouver en recherchant sur Google.
la source
Je suppose que vous savez qu'en changeant la propriété en root
chown root:root file
et définir les autorisations à 700
chmod 700 file
vous accomplirez la même chose - sans la suggestion d'exécuter en tant que sudo.
Mais je posterai cette réponse pour être complet.
la source
sudo git add <file>
Quel est votre objectif ici, pour informer l'utilisateur qu'il doit exécuter le script en tant que root ou par mesure de sécurité?
Si vous souhaitez simplement informer l'utilisateur que l'une des suggestions d'uid est correcte, mais qu'elles sont aussi utiles que des pneus sur un cheval par mesure de sécurité - rien n'empêche un utilisateur de copier le script, de retirer l'instruction if, et l'exécuter de toute façon.
S'il s'agit d'un problème de sécurité, le script doit être défini sur 700, propriété de root: root, afin qu'il ne soit ni lisible ni exécutable par un autre utilisateur.
la source
Vous pouvez également utiliser la commande whoami.
la source
La variable bash
$EUID
montre l'UID efficace sur lequel le script s'exécute, si vous voulez vous assurer que le script s'exécute en tant que root, vérifiez s'il$EUID
contient la valeur 0 ou non:C'est mieux que la solution avec
/usr/bin/id
(pour les scripts bash!) Car elle ne nécessite pas de commande externe.la source
echo
ligne parsudo "$0" "$@"
, et remplacerexit 2
parexit $?
.Une façon simple de rendre le script exécutable uniquement par root est de démarrer le script avec la ligne:
#!/bin/su root
la source
"#! / bin / su root" permet aux utilisateurs en mode super utilisateur d'exécuter le script sans utiliser le mot de passe root. Si vous voulez que les super utilisateurs exécutent le script avec des résultats identiques à ceux de la racine, cela fait cela.
la source