linux - sous - script shell variable




Comment attribuer une autorisation d'exécution à un fichier.sh dans Windows à exécuter sous Linux (3)

Autant que je sache, le système de permission sous Linux est configuré de manière à empêcher exactement ce que vous essayez d'accomplir.

Je pense que le mieux que vous puissiez faire est de donner à votre utilisateur Linux un one-liner unzip personnalisé à exécuter à l'invite:

unzip zip_name.zip && chmod +x script_name.sh

Si vous devez attribuer une autorisation d'exécution à plusieurs scripts, écrivez un grant_perms.sh comme suit:

#!/bin/bash
# file: grant_perms.sh

chmod +x script_1.sh
chmod +x script_2.sh
...
chmod +x script_n.sh

(Vous pouvez placer tous les scripts sur une seule ligne pour chmod, mais j’ai trouvé que des lignes séparées étaient plus faciles à utiliser dans vim et avec les commandes de script shell.)

Et maintenant, votre one-liner unzip devient:

unzip zip_name.zip && source grant_perms.sh

Notez que puisque vous utilisez source pour exécuter grant_perms.sh , aucune autorisation d'exécution n'est nécessaire.

Voici mon problème,

Sous Windows, je crée un fichier zip dans lequel se trouve un fichier texte .sh qui doit être exécuté sous Linux. L’utilisateur situé à l’autre extrémité ouvre le fichier zip sous Linux et tente d’exécuter le fichier .sh mais l’autorisation d’exécution a disparu. L’utilisateur doit donc le faire manuellement (comme expliqué ici: ajouter une autorisation d’exécution) .

Comment puis-je sous Windows rendre le fichier .sh exécutable et l'ajouter à un fichier zip afin que, lorsque le fichier zip s'ouvre sous linux, le fichier .sh conserve son autorisation d'exécution (de sorte que l'utilisateur ne soit pas obligé de le faire manuellement)


Ce n'est pas possible. Les autorisations Linux et les autorisations Windows ne sont pas traduites. Ils sont spécifiques à la machine. Ce serait une faille de sécurité que de permettre aux autorisations d'être définies sur des fichiers avant même qu'ils n'arrivent sur le système cible.


Le format de fichier ZIP permet de stocker les bits d'autorisation, mais les programmes Windows l'ignorent normalement. Cependant, l’utilitaire zip sur Cygwin conserve le bit x, tout comme il le fait sous Linux. Si vous ne souhaitez pas utiliser Cygwin, vous pouvez utiliser un code source et le modifier de sorte que tous les fichiers * .sh obtiennent le jeu de bits de l'exécutable. Ou écrivez un script comme expliqué here





file-permissions