Propriétés de l'utilisateur / privilèges AppleScript
-
20-09-2019 - |
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.
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.
Via MacScripter.net cela devrait être un début: Gestion des autorisations (page 2 de 2)