2 votes

Comment exécuter une commande sudo lors de la connexion/déconnexion sur MacOS ?

J'essaie d'exécuter une commande lors de la connexion et de la déconnexion qui nécessite sudo . J'ai lu sur LaunchDaemon y LaunchAgent mais d'après ce que j'ai compris, LaunchDaemon exécutera la commande au démarrage avec les autorisations de Root, et LaunchAgent l'exécutera à l'ouverture de la session, mais avec les autorisations de l'utilisateur actuel, qui ne sera pas toujours un administrateur.

Sinon, existe-t-il un moyen d'exécuter ma commande sans avoir besoin de sudo ? J'essaie d'effacer tous les fichiers des répertoires personnels (Bureau, Documents, etc.) lors de la connexion/déconnexion de l'utilisateur. sudo rm -rf /users/randomuser/Desktop/* etc. C'est un peu comme un compte d'invité, mais sans que le compte soit un compte d'invité et avec un peu plus de contrôle. Je suis assez novice dans ce genre de choses, donc je vous prie de m'expliquer comme si j'en étais 5. Je suis plus qu'heureux d'essayer une autre solution si nécessaire. Merci de votre compréhension.

EDIT - Merci pour l'aide apportée jusqu'à présent. Voici un peu plus de détails sur le cas d'utilisation :

J'ai un Mac qui sera utilisé par moi-même (administrateur) et quelques autres personnes (deuxième compte). Je ne veux pas que les données persistent entre les connexions sur ce deuxième compte, de la même manière que le compte invité fonctionne. Le problème avec le compte invité est qu'il réinitialise les applications placées dans le dock entre les connexions ainsi que le fond d'écran (que j'aimerais garder le même entre les connexions). Ma solution a été de configurer un compte standard, de verrouiller le dock à l'aide de defaults write com.apple.Dock size-immutable -bool yes et définir le fond d'écran manuellement. En ce qui concerne les données, j'aimerais que tous les fichiers qui ont été téléchargés ou transférés par l'utilisateur soient effacés lorsque l'utilisateur se déconnecte (ou également lorsque l'utilisateur suivant se connecte). Alternativement, s'il existe un moyen pour que le compte invité ne réinitialise pas le dock et le fond d'écran à la déconnexion, cela fonctionnerait également. Merci beaucoup !

2voto

Juliano Points 13802

Sauf si les fichiers sont créés avec sudo l'utilisateur peut supprimer des fichiers dans son propre profil.

Ainsi, la création d'un LaunchAgent qui nettoie le bureau à l'ouverture de la session ferait l'affaire.

Connectez-vous avec le compte que vous souhaitez utiliser pour les invités.

Créez un petit script avec le code suivant et enregistrez-le en tant que /usr/local/bin/cleanDesktop.sh .

#!/bin/bash
rm -rf /Users/$(whoami)/Desktop/* 

Rendez-le exécutable en exécutant chmod +x /usr/local/bin/cleanDesktop.sh .

Créez maintenant un LaunchAgent pour exécuter votre script. Enregistrez le code ci-dessous en tant que ~/Library/LaunchAgent/com.local.cleanDesktop.plist

et exécuter launchctl load ~/Library/LaunchAgent/com.local.cleanDesktop.plist à partir de la ligne de commande.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.local.cleanDesktop</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/cleanDesktop.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

Avertissement ce code supprime des choses et je ne l'ai pas testé. A utiliser avec précaution. De plus, l'utilisateur peut supprimer ce code. Vous pouvez également enregistrer le fichier dans /Library/LaunchAgents . Dans ce cas, il ne sera pas modifiable pour les utilisateurs standard. Mais il fonctionnera pour tous les utilisateurs.

-1voto

Auspexis Points 26

J'ai détaillé le processus que j'ai utilisé pour exécuter un script en tant que Root à la connexion de n'importe quel utilisateur ici : Masquage des dossiers par défaut via l'agent de lancement : ne s'applique pas aux documents

J'ai bien peur de ne pas savoir comment faire fonctionner le système à la déconnexion sans utiliser les crochets de déconnexion, ce que je ne recommanderais pas car Apple a essayé de le déprécier pendant des années.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X