4

/etc/hosts に行を追加するシェル スクリプトがあります。sudo を使用して手動で実行すると、正しく動作します。このファイルを、Mac を使用している同僚に配布したいと考えています。ただし、シェルスクリプトが正常に実行されると、次のようになります。

sed: /etc/hosts: Permission denied

コンパイルされた ObjC コードができるように、bash スクリプトに強制的にパスワードを要求する方法はありますか? Bash がこれを実行できない場合、Applescript で実行できますか?

4

3 に答える 3

4

Adayzdoneの答えは、「管理者権限で」使用する正しい方法です

ただし、パスワードをハードコーディングしたり、独自のダイアログを作成したりする必要はありません。

ユーザー名とパスワードを含めない場合、管理者用の標準のユーザー名とパスワードのダイアログが表示されます。

do shell script "echo hi" with administrator privileges
于 2013-03-27T00:43:00.493 に答える
3

Applescript の場合:

property usr : "username"
property pswd : "password"

do shell script "echo hi" user name usr password pswd with administrator privileges

または、パスワードをハードコーディングしたくない場合:

set usr to text returned of (display dialog "Enter username" default answer "my username")
set pswd to text returned of (display dialog "Enter password…" default answer "my password")

do shell script "echo hi" user name usr password pswd with administrator privileges
于 2013-03-25T21:11:51.997 に答える
3

シェルスクリプトは、ターミナルでパスワードを要求する sudo を呼び出すことができます。

http://www.performantdesign.com/2009/10/26/cocoasudo-a-graphical-cocoa-based-alternative-to-sudo/を試してください。

#!/usr/bin/env bash

if [ "$SUDO_USER" ]
then
  sed `do stuff`
else    
 cocoasudo --prompt="Please authenticate" bash -l -c "/path/to/this/script"
fi
于 2013-03-25T21:00:24.353 に答える