2

最初にユーザーが管理者権限を持っているかどうかを確認し、そうでない場合は再ログインなどを要求するAppleScriptプログラムを作成したいと思います。

最終的に、スクリプトは、作成したばかりのフォルダーのsudochmodを実行する必要があります...doスクリプトと管理者特権を使用してこれを実行できます。

ただし、applescriptコマンドの管理者権限を要求する方法や、ユーザーが管理者権限を持っているかどうかを確認する方法がわかりません。

誰か知ってる?または、少なくとも私に良いAppleScriptの参照を向けますか?(Apple.comリファレンスは私を助けていません)

ありがとう。

4

5 に答える 5

5

Appleフォーラムからの解決策:

if ("80" is not in (do shell script "id -G")) then
   Error....

トリックをするようです。読みづらく、Philip Reganが言ったように、私はコマンドラインからそれを行っていますが、それは私に必要な保護を与えてくれるようです...

于 2009-11-16T20:01:21.827 に答える
1

を使用するだけwith administrator privilegesです。ユーザーが管理者権限を持っていない場合、Applescriptは名前とパスワードの入力を求めます。try ... on errorユーザーがキャンセルしたり、間違ったパスワードを入力したり、単に管理者権限を持っていない場合に備えて、ブロックを使用してください。

現在のユーザーが管理者であるかどうかを本当に知りたい場合は、ユーザーが管理者グループに属していることを確認してください。

on amIAdmin()
    set prevDelims to AppleScript's text item delimiters
    set AppleScript's text item delimiters to " "
    set groups to do shell script "id -G -n"
    set groupList to text items of groups
    set isAdmin to "admin" is in groupList
    set AppleScript's text item delimiters to prevDelims
    return isAdmin
end isAdmin

amIAdmin()
于 2009-11-16T18:57:35.387 に答える
1

これは、まだ誰も言及していない別の代替ソリューションです。

dsclコマンドを使用すると、さまざまなディレクトリサービスタスクを実行できます。その
うちの1つは、ユーザーのアカウントタイプを検索する機能です。

コマンド: dscl。/ Groups / adminを読むGroupMembership
は、OSX上のすべての管理者アカウント を一覧表示します。

したがって、それをAppleScriptに組み込みたい場合は、次のようにすることができます。

set userName to "whatever username you wanted to check"
set readAdminGroup to do shell script "dscl . read /Groups/admin GroupMembership"
set AppleScript's text item delimiters to " "
set adminNames to text items of readAdminGroup

--loop through Admin Group to check if username exists
repeat with i in adminNames
 if adminNames does not contain userName then
  set isAdmin to false
 else
  set isAdmin to true
 end if
end repeat

return isAdmin 

変数isAdminがtrueかfalseかを確認したら
、さまざまな機能を実行できます。また、スクリプトがARDを介してデプロイまたは送信されている場合は、userName変数(上記のスクリプトの最初の行)を設定して、whoamiコマンドで現在のユーザーを確認できます。したがって、最初の行は次のようになります。

set userName to do shell script "whoami"
于 2009-12-10T04:29:16.767 に答える
1

システムイベントのユーザーオブジェクトにこのためのプロパティがないことに少し腹を立てていますが、idおよびdsclベースのクエリが最善の策のようです。読みやすくするために、私は以下を使用します。

set imadmin to " admin " is in (do shell script "groups")

adminの周りのスペースに注意してください。これにより、lpadminなどのグループと混同されるのを防ぎます。

于 2012-06-19T16:40:58.573 に答える
0

MacScripter.netを介して、これは開始点である必要があります。アクセス許可の管理( 2/2ページ)

于 2009-11-16T18:28:46.007 に答える