GNU/Linux >> Tutoriels Linux >  >> Linux

Puis-je faire en sorte qu'un script s'exécute toujours en tant que root ?

Soyez très prudent :les scripts combinés avec setuid sont dangereux !

Tout d'abord, veuillez jeter un œil à cette question/réponse, en particulier à cette réponse et à cet avertissement de sécurité.

Si vous souhaitez toujours exécuter votre script avec setuid set, alors vous pouvez écrire un court programme C comme wrapper et définir le setuid bit sur le binaire compilé.

Exemple d'encapsuleur :

int main(void) {        
    setuid(0);
    clearenv();
    system("/absolute/path/to/your/script.sh");
}

Une autre solution utilisant sudo (mentionné ici) :

  1. En tant que root, empêchez l'accès en écriture (et peut-être autre) à votre script :

    chown root /absolute/path/to/your/script.sh
    chmod 700 /absolute/path/to/your/script.sh
    
  2. Vérifiez que personne d'autre que root ne peut remplacer le script , par exemple. en modifiant les droits d'accès du dossier parent :

    chown root /absolute/path/to/your/
    chmod 755 /absolute/path/to/your/
    
  3. Modifier les droits d'accès sudo dans /etc/sudoers avec visudo :

    ALL    ALL = (root) NOPASSWD: /absolute/path/to/your/script.sh
    

    Plus de détails sur les paramètres (par exemple, restreindre l'accès à des utilisateurs ou groupes spécifiques) peuvent être trouvés dans la page de manuel sudoers.

Ensuite, tous les utilisateurs peuvent exécuter le script en tant que root sans mot de passe :

sudo /absolute/path/to/your/script.sh

Ceci est similaire à l'utilisation de la solution wrapper/setuid ci-dessus.


Le moyen le plus simple et le plus sûr consiste à utiliser les bits SETUID dans les autorisations de fichier. Ainsi, les autorisations de commande seront élevées aux autorisations de propriétaire de fichier.

pour empêcher l'édition du script, ne définissez pas l'écriture pour tout le monde.


Linux
  1. Un script Bash peut-il être accroché à un fichier ?

  2. Un script peut-il être exécutable mais pas lisible ?

  3. Comment faire en sorte qu'un script shell s'exécute toujours en tant que root ?

  4. Comment exécuter un script bash ?

  5. Pourquoi ne puis-je pas supprimer ce fichier en tant que root ?

Comment exécuter une commande dans un script shell ?

Exécuter un script shell dans le shell actuel avec l'autorisation sudo

Impossible de faire menuconfig

Exécuter Pycharm en tant que root depuis le lanceur

Comment puis-je démarrer un programme en tant que root à l'aide du gestionnaire de fenêtres ?

Un fichier .sh peut-il être un malware ?