do shell scriptに関して

Mac OS X 10.2.1を利用しております。Apple Script初心者からの質問です。
Apple Scriptにて、do shell scriptを用いてBSDコマンドを実行する簡単なドロップレットを試作していたのですが、コマンドの実行結果が保存されるべきディレクトリの指定に失敗していたのか、出力ファイルが/直下に保存されるという少々恐い事が起こってしまいました。アプレットを実行したのはrootユーザでないにも関わらずです。
そこで、質問です。
1) do shell scriptでBSDコマンドを実行する場合、ドロップレットを実際に起動するユーザの属性に関わらず、そのBSDコマンドはroot権限で実行されてしまうものなのでしょうか?
2) もしそうだとすれば、それを回避する方法はないでしょうか?
また、Apple ScriptからBSDコマンドを実行する作法についての良いドキュメントなどがあったらお教え願えると嬉しいです。
以上、よろしくお願いできればと思います。

投稿日 2002/10/13 14:18

返信: 4

2002/10/18 20:41 Community User への返信

1)はNOです。
スクリプトを起動したユーザ=shのユーザになります。
root権限が必要な場合はたとえば
「do shell script "ls -l /var/cron" with administrator privileges」
という風に書くと、管理者パスワードを要求してきます。
ルートディレクトリがadminに対し読み書き可能に設定されているだけでは?

2002/10/19 01:56 Community User への返信

thumb様,コメントありがとうございます.
>ルートディレクトリがadminに対し読み書き可能に設定されているだけでは?
というのが正解のようです./への書き込み権限がないと思い込んでいたのですが,Apple Scriptとは無関係に管理者ユーザであれば普通にTerminalから,例えば
mv test /
が実行できることを確認いたしました.
余談になりますが,失敗の原因はスクリプトを
do shell script "cd " & theDirPath
do shell script theCmd & " " & theFilePath
と2行に分けていたことでした.
do shell script "cd " & theDirPath & ";" & theCmd & " " & theFilePath
と一行で一気にコマンドを実行すれば,theDirPath変数に指定した所望のディレクトリに,theCmd変数で指定したコマンドの出力を書き出せることがわかりました.
気をつけないとちょっと危険な感じはしますが,気をつけておきさえすれば,いろいろ楽しめそうです.ありがとうございました.

2002/10/19 20:40 Community User への返信

こまかいですけど
>do shell script "cd " & theDirPath
とかは、あまりいい書き方ではないですよ。
ドロップされるファイルがもし「*」なんて名前だと
とんでもないことが起きる可能性があります。
シングルクォートで括るか、全ての特殊文字を
「ASCII Character 128」でエスケープする関数かなにかを作っておきましょう

2002/10/19 22:35 Community User への返信

コメントありがとうございます。
単にPOSIX pathでパスを取得しただけでは、*もそうですし、スペースもエスケープしておかないと駄目だということは確認しておりました。systemOSAX1.1などを利用すれば良いのかもしれませんが、もう少し自分でいろいろ模索しながら楽しんでみます。
#ダニー・グッドマンの「Apple Scriptハンドブック」なる本を本棚から引っぱりだしてきました。昔ちょっとだけかじって投げ出していたのですが、do shell scriptを見て、またむらむらとやる気を起こしております(笑)古い話ですいません・・・(^^;
ありがとうございました。またよろしくお願いいたします。

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

do shell scriptに関して

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。