Question

Je veux écrire un programme d'AppleScript vérifie d'abord pour voir si l'utilisateur dispose des privilèges d'administrateur, et si elle ne puis demander un

re-log-in ou quelque chose.

Finalement, le script va devoir faire un chmod sudo d'un dossier que je viens de créer ... Je peux le faire avec un script do et avec l'administrateur priviledges.

Cependant, je ne l'ai pas compris comment soit demander admin privs pour une commande AppleScript, ou même simplement vérifier si l'utilisateur a privs admin.

Quelqu'un sait? ou au moins me pointer un ref BON AppleScript? (Référence Apple.com ne me aide)

merci.

Était-ce utile?

La solution

Une solution du forum d'Apple:

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

semble faire l'affaire. Il est difficile de lire, et comme Philip Regan dit, je le fais via la ligne de commande, mais il me semble donner la protection que j'ai besoin ...

Autres conseils

Il suffit d'utiliser le with administrator privileges. Si un utilisateur ne dispose pas des privilèges d'administrateur, AppleScript leur demandera le nom et le mot de passe. Utilisez un bloc try ... on error dans le cas où l'utilisateur annule, entre le mot de passe erroné ou tout simplement ne pas simplement des droits d'administrateur.

Si vous voulez vraiment savoir si l'utilisateur actuel est un administrateur, vérifiez que l'utilisateur est dans le groupe d'administration:

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()

Voici une autre solution de rechange qui ne mentionne encore.

La commande dscl vous permet d'effectuer une variété de tâches de service d'annuaire
et l'un d'eux est la possibilité de rechercher le type de compte d'un utilisateur.

La commande: dscl. lecture / Groupes / admin GroupMembership listera tous les comptes admin
sur OS X.

Donc, si vous voulez incorporer dans un AppleScript que vous pourriez faire ce qui suit:

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 

Une fois que vous découvrez si la variable isAdmin est vrai ou faux, vous pouvez alors
effectuer une variété de fonctions. En outre, si le script a été déployé ou envoyé par ARD, vous pouvez définir la variable userName (la première ligne dans le script ci-dessus) pour vérifier l'utilisateur en cours avec une commande whoami. Donc, la première ligne alors ressembler à ceci:

set userName to do shell script "whoami"

Je suis un peu agacé que le système des événements ne dispose pas d'une propriété dans l'objet utilisateur, mais les requêtes basées id et dscl semble le meilleur pari. Pour faciliter la lecture que j'utilise:

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

Notez les espaces autour d'administration. Cela l'empêche de former être mêlé avec des groupes comme lpadmin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top