AppleScript のユーザープロパティ/権限
-
20-09-2019 - |
質問
最初にユーザーが管理者権限を持っているかどうかを確認し、持っていない場合は再ログインなどを要求する AppleScript プログラムを作成したいと考えています。
最終的に、スクリプトは作成したばかりのフォルダーに対して sudo chmod を実行する必要があります...do スクリプトと管理者権限を使用してそれを行うことができます。
ただし、applescript コマンドの管理者特権をリクエストする方法、またはユーザーが管理者特権を持っているかどうかを確認する方法さえわかりません。
知っている人はいますか?それとも、少なくとも良い AppleScript 参照を教えてください。(Apple.com のリファレンスは役に立ちません)
ありがとう。
解決
アップルのフォーラムから解決策ます:
if ("80" is not in (do shell script "id -G")) then
Error....
トリックを行うようです。それを読むのは難しい、とフィリップ・リーガンが言ったように、私は、コマンドラインを介して、それをやっているが、私が必要な保護を与えるようで...
他のヒント
ただ、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()
これはまだ誰も言及していない別の代替ソリューションです。
の dscl コマンドを使用すると、ディレクトリ サービスのさまざまなタスクを実行できます。
その 1 つは、ユーザーのアカウント タイプを検索する機能です。
コマンド: dscl 。/グループ/管理者グループメンバーシップを読むすべての管理者をリストします
OS X 上のアカウント。
したがって、これを 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 経由でデプロイまたは送信されている場合は、whoami コマンドを使用して現在のユーザーをチェックするように userName 変数 (上記のスクリプトの最初の行) を設定できます。したがって、最初の行は次のようになります。
set userName to do shell script "whoami"
私は、システムイベントは、このためのユーザーオブジェクトのプロパティを持っていないことを少しイライラだけど、idとDSCLベースのクエリは、最善の策に思えます。読みやすくするために私が使用します:
set imadmin to " admin " is in (do shell script "groups")
管理者の周りのスペースに注意してください。これは、lpadminのようなグループと混同されて形成防ぎます。
経由 MacScripter.net これが始まりとなるはずです: 権限の管理 (2/2 ページ)