50

これが私の問題です、

Windowsでは、Linuxで実行されることになっているテキスト.shファイルが含まれているzipファイルを作成しています。もう一方のユーザーは、Linuxでzipファイルを開き、.shファイルを実行しようとしましたが、実行権限がなくなりました。したがって、ユーザーは手動で行う必要があります(ここで説明するように:実行権限を追加します) 。

Windowsで.shを実行可能にし、それをzipファイルに追加して、Linuxでzipファイルを開いたときに.shファイルが実行権限を保持するようにするにはどうすればよいですか(ユーザーが手動で行う必要がないように)

4

5 に答える 5

49

私の知る限り、Linux の許可システムは、あなたが達成しようとしていることを正確に防ぐように設定されています。

あなたができる最善の方法は、プロンプトで実行するカスタムの解凍ワンライナーを Linux ユーザーに提供することだと思います。

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

実行権限を与える必要があるスクリプトが複数ある場合は、次のように記述grant_perms.shします。

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

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

(chmod ではすべてのスクリプトを 1 行にまとめることができますが、vim とシェル スクリプト コマンドを使用すると、別の行で作業する方が簡単であることがわかりました。)

そして今、あなたの解凍ワンライナーは次のようになります:

unzip zip_name.zip && source grant_perms.sh

sourcerunを使用しているためgrant_perms.sh、実行権限は必要ありません。

于 2012-11-01T21:03:46.460 に答える
8

ZIP ファイル形式ではアクセス許可ビットを保存できますが、Windows プログラムは通常それを無視します。ただし、Cygwinのzipユーティリティは、Linux と同様に x ビットを保持します。Cygwin を使用したくない場合は、ソース コードを取得して、すべての *.sh ファイルが実行可能ビット セットを取得するように微調整できます。または、ここで説明されているようなスクリプトを記述します

于 2013-05-13T09:36:40.863 に答える
3

これは、Info-ZipオープンソースZipユーティリティを使用して可能です。unzipを-Xパラメーターを指定して実行すると、元の権限を保持しようとします。ソースファイルシステムがNTFSで、宛先がUnixファイルシステムの場合、一方から他方への変換を試みます。現在、翻訳をテストするために利用できるWindowsシステムがないため、実行権限を付与する必要があるグループを試す必要があります。「ユーザー」や「任意のユーザー」のようになります

于 2012-11-01T21:14:01.820 に答える
-3

これは不可能です。Linux のアクセス許可と Windows のアクセス許可は変換されません。それらはマシン固有です。ファイルがターゲット システムに到達する前にファイルにアクセス許可を設定できるようにすると、セキュリティ ホールになります。

于 2012-11-01T21:04:50.407 に答える