2016-09-08 4 views
0

this構造のYAMLファイルを作成しています。YAMLファイルの中からunixコマンドを実行することはできますか?

私の正確なコードはこれです:

# This is an appspec.yml template file for use with AWS CodeDeploy. 
# The lines in this template starting with the hashtag symbol are 
# instructional comments and can be safely left in the file or 
# ignored. 
# For help completing this file, see the "AppSpec File Reference" in the 
# "AWS CodeDeploy User Guide" at 
# http://docs.aws.amazon.com/codedeploy/latest/userguide/app-spec-ref.html 
version: 0.0 
# Specify "os: linux" if this revision targets Amazon Linux, 
# Red Hat Enterprise Linux (RHEL), or Ubuntu Server 
# instances. 
# Specify "os: windows" if this revision targets Windows Server instances. 
# (You cannot specify both "os: linux" and "os: windows".) 
os: linux 

hooks: 
    AfterInstall: 
    - location: StartUIServices.sh 
    timeout: 180 
    runas: root 

問題は、私は場所スクリプトがある前に、別のディレクトリまたはsed -i 's/\r$//' file1*(エンディングUnixのラインにファイルを変換する)のいずれかであるcd Unixコマンドを実行する必要があります走った。どうすればいいですか?

答えて

1

YAMLファイルの中からコマンドを実行できないかどうかは、依存します。これを行うためのYAML仕様の規定はありません。
もちろん、YAMLパーサーはこの機能を実装することができます。あるいは、プログラムがYAMLパーサーからのデータを解釈し、その内容に基づいてコマンドを実行する可能性があります。プログラムが安全でない場合、タグ付きYAMLがロードされる可能性があります。その場合、オブジェクトのインスタンスが作成される唯一の制限は、パーサーまたはプログラムの実装言語内にあります。

AWSがこのような安全でないロードを行う場合、セキュリティ上の大きなリスクとなります。これを悪用しようとしている人がいるでしょう。

AWSインスタンスは、YAMLデータの安全なロードを行い、ロードされたデータを解釈します。インストール前にスクリプトを実行するための規定が組み込まれています(BeforeInstallフック付き)。これらのスクリプトの最初のものは、他のすべてのスクリプトでDOSからUNIXへの変換を行うべきですが、もちろんそれ自体ではできません。そして、おそらくDOSでスクリプトを気づいたように、行末はうまく動作しません。最初のスクリプトを他の方法で変換して、それ以上変更する必要はありません。後で同じまたは他のフックで実行される他のスクリプトを変換する単純なスクリプトでなければならないので、Windowsホストから他の変更中のスクリプトを提供することができます。

関連する問題