Comment attribuer une permission d'exécution à A. fichier sh dans windows à exécuter sous linux

Voici mon problème,

sous Windows je crée un fichier zip dans lequel il y a un texte .sh fichier qui est censé être exécuté sous Linux. L'utilisateur à l'autre bout Ouvre le fichier zip sous Linux et essaie d'exécuter le .sh fichier mais la permission d'exécution est partie. Ainsi, l'utilisateur a le faire manuellement ( comme expliqué ici: ajouter de l'autorisation execute .

Comment puis-je en Windows .sh exécutable et l'ajouter à un zip fichier de sorte que lorsque le fichier zip s'ouvre sous linux le .sh file conserve toujours sa permission d'exécution (de sorte que l'utilisateur n'a pas à le faire manuellement)

35
demandé sur C graphics 2012-11-02 00:58:16

4 réponses

autant Que je sache, le système d'autorisation dans Linux est configuré de telle manière à empêcher exactement ce que vous essayez d'accomplir.

je pense que le mieux que vous pouvez faire est de donner à votre Utilisateur Linux un paquetage personnalisé pour exécuter sur l'invite:

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

S'il y a plusieurs scripts pour lesquels vous devez donner la permission d'exécuter, é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 mettre tous les scripts sur un ligne pour chmod, mais j'ai trouvé des lignes séparées plus faciles à utiliser dans vim et avec des commandes de script shell.)

et maintenant votre unzip one-liner devient:

unzip zip_name.zip && source grant_perms.sh

notez que puisque vous utilisez source pour exécuter grant_perms.sh , il n'est pas nécessaire d'exécuter la permission

43
répondu sampson-chen 2012-11-01 21:03:46

le format de fichier ZIP permet de stocker les bits de permission, mais les programmes Windows l'ignorent normalement. L'utilitaire zip sur Cygwin préserve cependant le bit x, tout comme il le fait sur Linux. Si vous ne voulez pas utiliser Cygwin, vous pouvez prendre un code source et le modifier pour que tout *.les fichiers sh ont le bit exécutable défini. Ou écrire un script comme expliqué ici

7
répondu jmster 2017-03-20 10:18:27

cela est possible en utilisant les Info-Zip open-source ZIP utilities. Si unzip est exécuté avec le paramètre - X , il tentera de préserver les permissions originales. Si le système de fichiers source est NTFS et que la destination est Unix, il tentera de passer de L'un à l'autre. Je n'ai pas de système Windows disponible en ce moment pour tester la traduction, donc vous devrez expérimenter avec quel groupe doit être accordé des autorisations d'exécution. Ce sera quelque chose comme "utilisateurs" ou "N'importe quel utilisateur"

2
répondu itsbruce 2012-11-01 21:14:01

ce n'est pas possible. Les permissions Linux et windows ne se traduisent pas. Ils sont spécifique à l'appareil. Il serait un trou de sécurité à autoriser les autorisations sur les fichiers avant même d'arriver sur le système cible.

-3
répondu dmarra 2012-11-01 21:04:50