Je dois démarrer un script et un fichier binaire à partir de /usr/bin
au démarrage avec les privilèges Sudo/root. J'ai essayé de nombreux guides de ce forum mais rien n'a fonctionné (style rc.local
et systemd
, Upstart) - peut-être que je fais quelque chose de mal. Mon système d'exploitation est Ubuntu GNOME 16.10.
Le script serait quelque chose comme ça
#!/bin/bash
Sudo ./usr/bin/myprogram
Sudo bash /home/USER/script.bash
Le script et le programme sont exécutables. Je ne connais tout simplement pas la meilleure façon de les démarrer avec Sudo au démarrage.
Soyez gentil s'il vous plait. Je suis un nouvel utilisateur.
Pour les applications en ligne de commande ne nécessitant pas d'interface graphique, il suffit de les appeler dans /etc/rc.local
, qui s'exécute déjà en tant qu'utilisateur root, et n'a donc pas besoin de Sudo
. Vous trouverez ci-dessous un exemple de mon propre /etc/rc.local
que j'utilise pour démarrer deux scripts de surveillance.
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/home/xieerqi/bin/batmon.sh &
/home/xieerqi/bin/sh/temperature.sh &
exit 0
Pour les applications d'interface graphique, vous devrez adopter une approche différente. Vous devez ouvrir l'application Applications de démarrage et ajouter la commande suivante:
bash -c "sleep 10;gksu /usr/bin/my_vpn_program"
Cela donne à l’interface graphique suffisamment de temps pour démarrer, 10 secondes, puis ouvrira une boîte de dialogue de mot de passe et, si vous entrez le mot de passe correctement, lancera votre commande. Effectivement c'est un script mini bash. Vous pouvez utiliser pkexec
à la place, et certains pourraient même dire que pkexec
est recommandé à la place de gksu
.
Sinon, si vous ne voulez pas entrer un mot de passe à chaque fois, vous pouvez autoriser votre utilisateur à exécuter cette commande particulière avec les privilèges root sans authentification. Pour cela, vous devez éditer le fichier /etc/sudoers
. WARNING: il est recommandé d’utiliser Sudo visudo
pour éditer le fichier à partir du terminal. Vous trouverez ci-dessous un exemple d'utilisation du même paramètre avec la commande pm-suspend
:
# Allow using pm-suspend for my user without password
xieerqi ALL = NOPASSWD: /usr/sbin/pm-suspend
Cette ligne doit être ajoutée à la fin du fichier /etc/sudoers
et sauvegardée. Notez que vous devez toujours ajouter Sudo
ou gksu
au début de chaque commande que vous avez configurée. Ainsi, vous devrez utiliser la même commande bash
que j'ai montrée précédemment.
La solution est si simple que vous l'avez manquée. :) rc.local étant exécuté par root, les fichiers Sudo de votre fichier sont totalement inutiles.
En d'autres termes, mettez-le dans rc.local comme vous l'avez suggéré, mais omettez les Sudo
name __ de votre script. Ils sont totalement inutiles, car rc.local est déjà lancé en tant que root.
J'espère que cela t'aides!