8
votes

sudo pour une seule commande dans le script bash

Ceci peut être une question stupide.

J'ai un script que je veux être portable entre Mac OS X et une boîte Linux, j'utilise. Dans OS X, une commande dans le script nécessite sudo , où sur la boîte Linux, elle ne le fait pas.

Histoire longue courte, comment exécuter une commande dans un script avec sudo , tout en supprimant les privilèges élevés du reste du script?

J'ai essayé d'utiliser xxx

et xxx

mais ils semblent tous les deux erreurs. (Ils disent "désolé" et avancez, je suppose parce qu'il tente de courir comme root et root n'a pas de mot de passe).

Je sais qu'il doit y avoir un moyen idiot et facile de faire cela, que suggère tout le monde?


0 commentaires

3 Réponses :


0
votes

Essayez sudo su au lieu de su pour passer à un utilisateur régulier.


2 commentaires

Quand j'essaye "sudo su umount / dev / disk1", ​​je reçois "su: connectés inconnus: utomé". En regardant par l'homme sudo, je ne peux que conclure qu'il recherche un utilisateur nommé "utount"?


@Rick: Oui, il cherche un utilisateur nommé uton . SU est de passer à un autre utilisateur (généralement root) et ne peut être exécuté que comme une racine, de sorte que l'argument nécessaire est un nom d'utilisateur. sudo est destiné à exécuter une seule commande comme utilisateur différent. Dans votre exemple, vous dites que vous souhaitez exécuter la commande su umount / dev / disk1 comme root, qui dit ensuite que vous souhaitez passer à l'utilisateur umount (avec un argument supplémentaire ignoré).



6
votes

Vous pouvez "révoquer" la permission de sudo (réellement: fermer la fenêtre time sudo tôt) en faisant: xxx pré>

En outre, vous pouvez configurer sudo pour permettre uniquement aux autorisations élevées sur certaines commandes, ou même à imiter la non-racine pour des commandes spécifiques. Voir homme sudoers code>. La section Exemples d'exemples forts> permet d'effacer extrêmement clairement qu'il n'y a pratiquement aucune limite à la configuration de sudo (rôles, hôtes, commandes, autorisation de s'échapper, à permettre aux utilisateurs cibles sudo, aux exceptions autorisées, mot de passe moins autorisation, etc. ). P>

Espérons un exemple intéressant dans votre contexte: P>

L'utilisateur Fred peut exécuter des commandes comme utilisateur dans le DB Runas_alias (Oracle ou Sybase) sans donner de mot de passe. P>

{
     trap "sudo -k" EXIT INT QUIT TERM
     sudo ls # whatever
}


2 commentaires

C'était exactement ce dont j'avais besoin. Exécutez la commande, puis exécutez sudo -k. Merci beaucoup.


Merci pour les sudoers; était juste ce dont j'avais besoin.



0
votes

Utiliser sudo code> sans su code>: xxx pré>

Voici la sortie lorsque je l'exécute: P>

$ ./sudotest
gordon
Password:
root
gordon


0 commentaires