Personnalisation de la Fenêtre de Connexion sur macOS
Personnalisez et sécurisez la fenêtre de connexion sur vos appareils MacFleet pour améliorer la sécurité, l'image de marque et l'expérience utilisateur. Ce tutoriel couvre la gestion des listes d'utilisateurs, le contrôle des options d'alimentation, les messages personnalisés et la configuration de la fenêtre de connexion d'entreprise.
Comprendre la Fenêtre de Connexion macOS
La fenêtre de connexion macOS est la première interface que les utilisateurs rencontrent lors du démarrage de leur appareil. Elle offre plusieurs options de personnalisation :
- Modes d'affichage utilisateur - Afficher la liste des utilisateurs ou les champs nom d'utilisateur/mot de passe
- Options d'alimentation - Contrôler les boutons d'arrêt, de redémarrage et de veille
- Messages personnalisés - Afficher des avis organisationnels ou de la personnalisation
- Paramètres de sécurité - Masquer les informations sensibles et contrôler l'accès
Considérations d'Entreprise
La personnalisation de la fenêtre de connexion est cruciale pour la sécurité d'entreprise :
- Masquer les listes d'utilisateurs pour prévenir l'énumération des utilisateurs
- Désactiver les options d'alimentation pour prévenir les arrêts non autorisés
- Afficher des avis de sécurité pour les exigences de conformité
- Personnaliser l'interface pour l'identité organisationnelle
Configuration de Base de la Fenêtre de Connexion
Afficher la Liste des Utilisateurs
#!/bin/bash
# Afficher la liste des utilisateurs dans la fenêtre de connexion
defaults write /Library/Preferences/com.apple.loginwindow SHOWFULLNAME false
echo "Affichage de la liste des utilisateurs activé dans la fenêtre de connexion"
Afficher la Boîte de Dialogue Nom d'Utilisateur/Mot de Passe
#!/bin/bash
# Afficher la boîte de dialogue nom d'utilisateur et mot de passe au lieu de la liste des utilisateurs
defaults write /Library/Preferences/com.apple.loginwindow SHOWFULLNAME true
echo "Boîte de dialogue nom d'utilisateur/mot de passe activée dans la fenêtre de connexion"
Masquer les Options d'Alimentation
#!/bin/bash
# Masquer le bouton d'arrêt
defaults write /Library/Preferences/com.apple.loginwindow ShutDownDisabled true
# Masquer le bouton de redémarrage
defaults write /Library/Preferences/com.apple.loginwindow RestartDisabled true
# Masquer le bouton de veille
defaults write /Library/Preferences/com.apple.loginwindow SleepDisabled true
echo "Toutes les options d'alimentation masquées de la fenêtre de connexion"
Activer les Options d'Alimentation
#!/bin/bash
# Activer le bouton d'arrêt
defaults write /Library/Preferences/com.apple.loginwindow ShutDownDisabled false
# Activer le bouton de redémarrage
defaults write /Library/Preferences/com.apple.loginwindow RestartDisabled false
# Activer le bouton de veille
defaults write /Library/Preferences/com.apple.loginwindow SleepDisabled false
echo "Toutes les options d'alimentation activées dans la fenêtre de connexion"
Afficher un Message Personnalisé
#!/bin/bash
# Afficher un message personnalisé sur la fenêtre de connexion
MESSAGE="Votre appareil est géré par MacFleet. Contactez l'IT pour assistance."
defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "$MESSAGE"
echo "Message personnalisé défini pour la fenêtre de connexion"
Gestion Avancée de la Fenêtre de Connexion
Configuration Complète de la Fenêtre de Connexion
#!/bin/bash
# Configuration avancée de la fenêtre de connexion avec validation
configure_login_window() {
local config_type="$1"
local custom_message="$2"
# Valider les privilèges administrateur
if [[ $EUID -ne 0 ]]; then
echo "Erreur : Ce script nécessite des privilèges administrateur"
echo "Veuillez exécuter avec sudo : sudo $0"
exit 1
fi
case "$config_type" in
"secure")
echo "Application de la configuration sécurisée de la fenêtre de connexion..."
# Masquer la liste des utilisateurs pour la sécurité
defaults write /Library/Preferences/com.apple.loginwindow SHOWFULLNAME true
# Désactiver toutes les options d'alimentation
defaults write /Library/Preferences/com.apple.loginwindow ShutDownDisabled true
defaults write /Library/Preferences/com.apple.loginwindow RestartDisabled true
defaults write /Library/Preferences/com.apple.loginwindow SleepDisabled true
# Définir un message de sécurité
local security_msg="Personnel Autorisé Uniquement - Toute Activité Surveillée"
defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "$security_msg"
echo "✓ Configuration sécurisée appliquée"
;;
"corporate")
echo "Application de la configuration d'entreprise de la fenêtre de connexion..."
# Afficher la liste des utilisateurs pour la commodité
defaults write /Library/Preferences/com.apple.loginwindow SHOWFULLNAME false
# Permettre le redémarrage mais désactiver l'arrêt et la veille
defaults write /Library/Preferences/com.apple.loginwindow ShutDownDisabled true
defaults write /Library/Preferences/com.apple.loginwindow RestartDisabled false
defaults write /Library/Preferences/com.apple.loginwindow SleepDisabled true
# Définir un message d'entreprise
local corp_msg="${custom_message:-Propriété de MacFleet Corporation}"
defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "$corp_msg"
echo "✓ Configuration d'entreprise appliquée"
;;
"kiosk")
echo "Application de la configuration kiosque de la fenêtre de connexion..."
# Masquer la liste des utilisateurs
defaults write /Library/Preferences/com.apple.loginwindow SHOWFULLNAME true
# Désactiver toutes les options d'alimentation
defaults write /Library/Preferences/com.apple.loginwindow ShutDownDisabled true
defaults write /Library/Preferences/com.apple.loginwindow RestartDisabled true
defaults write /Library/Preferences/com.apple.loginwindow SleepDisabled true
# Masquer des éléments supplémentaires pour le mode kiosque
defaults write /Library/Preferences/com.apple.loginwindow HideLocalUsers true
defaults write /Library/Preferences/com.apple.loginwindow HideMobileAccounts true
# Définir un message de kiosque
local kiosk_msg="Mode Kiosque - Accès Autorisé Uniquement"
defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "$kiosk_msg"
echo "✓ Configuration kiosque appliquée"
;;
"standard")
echo "Application de la configuration standard de la fenêtre de connexion..."
# Afficher la liste des utilisateurs
defaults write /Library/Preferences/com.apple.loginwindow SHOWFULLNAME false
# Activer toutes les options d'alimentation
defaults write /Library/Preferences/com.apple.loginwindow ShutDownDisabled false
defaults write /Library/Preferences/com.apple.loginwindow RestartDisabled false
defaults write /Library/Preferences/com.apple.loginwindow SleepDisabled false
# Effacer le message personnalisé
defaults delete /Library/Preferences/com.apple.loginwindow LoginwindowText 2>/dev/null || true
echo "✓ Configuration standard appliquée"
;;
*)
echo "Erreur : Type de configuration inconnu '$config_type'"
echo "Types disponibles : secure, corporate, kiosk, standard"
return 1
;;
esac
# Vérifier la configuration
verify_login_window_config
}
# Vérifier la configuration actuelle de la fenêtre de connexion
verify_login_window_config() {
echo ""
echo "=== Configuration Actuelle de la Fenêtre de Connexion ==="
# Vérifier le mode d'affichage utilisateur
local show_fullname
show_fullname=$(defaults read /Library/Preferences/com.apple.loginwindow SHOWFULLNAME 2>/dev/null || echo "false")
if [[ "$show_fullname" == "true" ]]; then
echo "Affichage Utilisateur : Boîte de Dialogue Nom d'Utilisateur/Mot de Passe"
else
echo "Affichage Utilisateur : Liste des Utilisateurs"
fi
# Vérifier les options d'alimentation
local shutdown_disabled
shutdown_disabled=$(defaults read /Library/Preferences/com.apple.loginwindow ShutDownDisabled 2>/dev/null || echo "false")
echo "Bouton d'Arrêt : $([ "$shutdown_disabled" == "true" ] && echo "Masqué" || echo "Visible")"
local restart_disabled
restart_disabled=$(defaults read /Library/Preferences/com.apple.loginwindow RestartDisabled 2>/dev/null || echo "false")
echo "Bouton de Redémarrage : $([ "$restart_disabled" == "true" ] && echo "Masqué" || echo "Visible")"
local sleep_disabled
sleep_disabled=$(defaults read /Library/Preferences/com.apple.loginwindow SleepDisabled 2>/dev/null || echo "false")
echo "Bouton de Veille : $([ "$sleep_disabled" == "true" ] && echo "Masqué" || echo "Visible")"
# Vérifier le message personnalisé
local login_text
login_text=$(defaults read /Library/Preferences/com.apple.loginwindow LoginwindowText 2>/dev/null || echo "Aucun")
echo "Message Personnalisé : $login_text"
}
# Exemples d'utilisation
configure_login_window "corporate" "Bienvenue dans MacFleet Enterprise"
Système de Gestion de Fenêtre de Connexion d'Entreprise
#!/bin/bash
# Outil de Gestion de Fenêtre de Connexion MacFleet
# Configuration et surveillance complètes de la fenêtre de connexion pour les appareils de flotte
# Configuration
SCRIPT_VERSION="1.0.0"
LOG_FILE="/var/log/macfleet_loginwindow.log"
REPORT_DIR="/etc/macfleet/reports/loginwindow"
CONFIG_DIR="/etc/macfleet/loginwindow"
# Créer les répertoires s'ils n'existent pas
mkdir -p "$REPORT_DIR" "$CONFIG_DIR"
# Modèles de politiques de fenêtre de connexion
declare -A LOGIN_POLICIES=(
["corporate_standard"]="user_list,restart_only,company_branding,moderate_security"
["corporate_secure"]="username_dialog,no_power,security_message,high_security"
["kiosk_mode"]="username_dialog,no_power,kiosk_branding,maximum_security"
["public_access"]="user_list,all_power,public_notice,low_security"
["executive"]="username_dialog,restart_only,executive_branding,high_security"
["guest_network"]="user_list,no_power,guest_notice,moderate_security"
["development"]="user_list,all_power,dev_environment,low_security"
["classroom"]="user_list,restart_only,educational_message,moderate_security"
["healthcare"]="username_dialog,no_power,hipaa_notice,maximum_security"
["financial"]="username_dialog,no_power,compliance_notice,maximum_security"
)
# Modèles de messages pour différents scénarios
declare -A MESSAGE_TEMPLATES=(
["security_warning"]="ACCÈS RESTREINT - PERSONNEL AUTORISÉ UNIQUEMENT - TOUTE ACTIVITÉ SURVEILLÉE"
["corporate_standard"]="Propriété de {COMPANY} | Support IT : {SUPPORT_CONTACT}"
["compliance_notice"]="Ce système contient des informations confidentielles. L'accès non autorisé est interdit."
["guest_notice"]="Accès Invité | Veuillez contacter la réception pour assistance"
["kiosk_mode"]="Terminal Kiosque | Pour assistance appuyez sur F1"
["maintenance"]="Système en Maintenance | Contactez le Département IT"
["emergency"]="Accès d'Urgence Uniquement | Incident de Sécurité en Cours"
["educational"]="Appareil Éducatif | Les étudiants doivent suivre la politique d'usage acceptable"
["hipaa_notice"]="Système Protégé HIPAA | Personnel de Santé Autorisé Uniquement"
["financial_compliance"]="Système de Données Financières | Conformité SOX Requise"
)
# Fonction de journalisation
log_action() {
local message="$1"
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$timestamp] $message" | tee -a "$LOG_FILE"
}
# Application avancée des politiques de fenêtre de connexion
enforce_login_policy() {
local policy_name="$1"
local company_name="${2:-MacFleet}"
local support_contact="${3:-Département IT}"
local dry_run="${4:-false}"
log_action "Application de la politique de fenêtre de connexion : $policy_name (dry_run : $dry_run)"
if [[ -z "${LOGIN_POLICIES[$policy_name]}" ]]; then
log_action "ERREUR : Politique inconnue '$policy_name'"
echo "Politiques disponibles : ${!LOGIN_POLICIES[*]}"
return 1
fi
# Analyser la configuration de politique
IFS=',' read -ra POLICY_PARTS <<< "${LOGIN_POLICIES[$policy_name]}"
local user_display="${POLICY_PARTS[0]}"
local power_options="${POLICY_PARTS[1]}"
local branding_type="${POLICY_PARTS[2]}"
local security_level="${POLICY_PARTS[3]}"
echo "=== Application de la Politique : $policy_name ==="
echo "Affichage Utilisateur : $user_display"
echo "Options d'Alimentation : $power_options"
echo "Image de Marque : $branding_type"
echo "Niveau de Sécurité : $security_level"
if [[ "$dry_run" == "true" ]]; then
echo "MODE TEST - Aucun changement ne sera appliqué"
return 0
fi
# Appliquer les paramètres d'affichage utilisateur
apply_user_display_settings "$user_display"
# Appliquer les paramètres d'options d'alimentation
apply_power_option_settings "$power_options"
# Appliquer l'image de marque et la messagerie
apply_branding_settings "$branding_type" "$company_name" "$support_contact"
# Appliquer les configurations de sécurité
apply_security_settings "$security_level"
# Générer un rapport de conformité de politique
local report_file="$REPORT_DIR/policy_enforcement_${policy_name}_$(date +%Y%m%d_%H%M%S).json"
generate_policy_report "$policy_name" "$report_file"
log_action "Application de politique terminée : $report_file"
echo "$report_file"
}
# Appliquer les paramètres d'affichage utilisateur
apply_user_display_settings() {
local display_type="$1"
case "$display_type" in
"user_list")
defaults write /Library/Preferences/com.apple.loginwindow SHOWFULLNAME false
defaults write /Library/Preferences/com.apple.loginwindow HideLocalUsers false
echo "✓ Affichage de la liste des utilisateurs activé"
;;
"username_dialog")
defaults write /Library/Preferences/com.apple.loginwindow SHOWFULLNAME true
echo "✓ Boîte de dialogue nom d'utilisateur/mot de passe activée"
;;
"hidden_users")
defaults write /Library/Preferences/com.apple.loginwindow SHOWFULLNAME true
defaults write /Library/Preferences/com.apple.loginwindow HideLocalUsers true
defaults write /Library/Preferences/com.apple.loginwindow HideMobileAccounts true
echo "✓ Tous les utilisateurs masqués de l'affichage"
;;
esac
}
# Appliquer les paramètres d'options d'alimentation
apply_power_option_settings() {
local power_config="$1"
case "$power_config" in
"all_power")
defaults write /Library/Preferences/com.apple.loginwindow ShutDownDisabled false
defaults write /Library/Preferences/com.apple.loginwindow RestartDisabled false
defaults write /Library/Preferences/com.apple.loginwindow SleepDisabled false
echo "✓ Toutes les options d'alimentation activées"
;;
"restart_only")
defaults write /Library/Preferences/com.apple.loginwindow ShutDownDisabled true
defaults write /Library/Preferences/com.apple.loginwindow RestartDisabled false
defaults write /Library/Preferences/com.apple.loginwindow SleepDisabled true
echo "✓ Seule l'option de redémarrage activée"
;;
"no_power")
defaults write /Library/Preferences/com.apple.loginwindow ShutDownDisabled true
defaults write /Library/Preferences/com.apple.loginwindow RestartDisabled true
defaults write /Library/Preferences/com.apple.loginwindow SleepDisabled true
echo "✓ Toutes les options d'alimentation désactivées"
;;
esac
}
# Appliquer les paramètres d'image de marque et de messagerie
apply_branding_settings() {
local branding_type="$1"
local company_name="$2"
local support_contact="$3"
local message=""
case "$branding_type" in
"company_branding")
message="${MESSAGE_TEMPLATES[corporate_standard]}"
message="${message/\{COMPANY\}/$company_name}"
message="${message/\{SUPPORT_CONTACT\}/$support_contact}"
;;
"security_message")
message="${MESSAGE_TEMPLATES[security_warning]}"
;;
"kiosk_branding")
message="${MESSAGE_TEMPLATES[kiosk_mode]}"
;;
"executive_branding")
message="Poste de Travail Exécutif | $company_name | Confidentiel"
;;
"guest_notice")
message="${MESSAGE_TEMPLATES[guest_notice]}"
;;
"educational_message")
message="${MESSAGE_TEMPLATES[educational]}"
;;
"hipaa_notice")
message="${MESSAGE_TEMPLATES[hipaa_notice]}"
;;
"compliance_notice")
message="${MESSAGE_TEMPLATES[financial_compliance]}"
;;
*)
message="Géré par $company_name"
;;
esac
if [[ -n "$message" ]]; then
defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "$message"
echo "✓ Message personnalisé appliqué : $message"
fi
}
# Appliquer les paramètres spécifiques à la sécurité
apply_security_settings() {
local security_level="$1"
case "$security_level" in
"maximum_security")
# Masquer les informations de l'ordinateur
defaults write /Library/Preferences/com.apple.loginwindow AdminHostInfo ""
# Désactiver le menu d'entrée
defaults write /Library/Preferences/com.apple.loginwindow showInputMenu false
# Désactiver la connexion automatique
defaults delete /Library/Preferences/com.apple.loginwindow autoLoginUser 2>/dev/null || true
# Activer le délai de fenêtre de connexion
defaults write /Library/Preferences/com.apple.loginwindow GuestEnabled false
echo "✓ Paramètres de sécurité maximale appliqués"
;;
"high_security")
# Afficher des informations minimales de l'ordinateur
defaults write /Library/Preferences/com.apple.loginwindow AdminHostInfo HostName
# Activer le menu d'entrée pour le support linguistique
defaults write /Library/Preferences/com.apple.loginwindow showInputMenu true
# Désactiver le compte invité
defaults write /Library/Preferences/com.apple.loginwindow GuestEnabled false
echo "✓ Paramètres de sécurité élevée appliqués"
;;
"moderate_security")
# Sécurité standard avec quelques fonctionnalités de commodité
defaults write /Library/Preferences/com.apple.loginwindow AdminHostInfo HostName
defaults write /Library/Preferences/com.apple.loginwindow showInputMenu true
defaults write /Library/Preferences/com.apple.loginwindow GuestEnabled false
echo "✓ Paramètres de sécurité modérée appliqués"
;;
"low_security")
# Restrictions minimales pour la commodité
defaults write /Library/Preferences/com.apple.loginwindow showInputMenu true
echo "✓ Paramètres de sécurité faible appliqués"
;;
esac
}
# Générer un rapport complet de conformité de politique
generate_policy_report() {
local policy_name="$1"
local report_file="$2"
# Obtenir les paramètres actuels de la fenêtre de connexion
local show_fullname=$(defaults read /Library/Preferences/com.apple.loginwindow SHOWFULLNAME 2>/dev/null || echo "false")
local shutdown_disabled=$(defaults read /Library/Preferences/com.apple.loginwindow ShutDownDisabled 2>/dev/null || echo "false")
local restart_disabled=$(defaults read /Library/Preferences/com.apple.loginwindow RestartDisabled 2>/dev/null || echo "false")
local sleep_disabled=$(defaults read /Library/Preferences/com.apple.loginwindow SleepDisabled 2>/dev/null || echo "false")
local login_text=$(defaults read /Library/Preferences/com.apple.loginwindow LoginwindowText 2>/dev/null || echo "")
local hide_local_users=$(defaults read /Library/Preferences/com.apple.loginwindow HideLocalUsers 2>/dev/null || echo "false")
local guest_enabled=$(defaults read /Library/Preferences/com.apple.loginwindow GuestEnabled 2>/dev/null || echo "false")
cat > "$report_file" << EOF
{
"policy_report": {
"policy_name": "$policy_name",
"timestamp": "$(date -u +%Y-%m-%dT%H:%M:%SZ)",
"hostname": "$(hostname)",
"script_version": "$SCRIPT_VERSION",
"current_settings": {
"show_fullname": $show_fullname,
"shutdown_disabled": $shutdown_disabled,
"restart_disabled": $restart_disabled,
"sleep_disabled": $sleep_disabled,
"custom_message": "$login_text",
"hide_local_users": $hide_local_users,
"guest_enabled": $guest_enabled
},
"display_mode": "$([ "$show_fullname" == "true" ] && echo "username_dialog" || echo "user_list")",
"security_level": "unknown",
"compliance_status": "compliant"
}
}
EOF
log_action "Rapport de politique généré : $report_file"
}
# Surveiller la configuration de la fenêtre de connexion
monitor_login_window() {
local detailed="${1:-false}"
echo "=== Moniteur de Configuration de Fenêtre de Connexion ==="
# Vérification de configuration de base
local show_fullname=$(defaults read /Library/Preferences/com.apple.loginwindow SHOWFULLNAME 2>/dev/null || echo "false")
local display_mode=$([ "$show_fullname" == "true" ] && echo "Boîte de Dialogue Nom d'Utilisateur/Mot de Passe" || echo "Liste des Utilisateurs")
echo "Mode d'Affichage : $display_mode"
# Statut des options d'alimentation
local shutdown_status=$([ "$(defaults read /Library/Preferences/com.apple.loginwindow ShutDownDisabled 2>/dev/null)" == "true" ] && echo "Masqué" || echo "Visible")
local restart_status=$([ "$(defaults read /Library/Preferences/com.apple.loginwindow RestartDisabled 2>/dev/null)" == "true" ] && echo "Masqué" || echo "Visible")
local sleep_status=$([ "$(defaults read /Library/Preferences/com.apple.loginwindow SleepDisabled 2>/dev/null)" == "true" ] && echo "Masqué" || echo "Visible")
echo "Options d'Alimentation :"
echo " Bouton d'Arrêt : $shutdown_status"
echo " Bouton de Redémarrage : $restart_status"
echo " Bouton de Veille : $sleep_status"
# Message personnalisé
local custom_message=$(defaults read /Library/Preferences/com.apple.loginwindow LoginwindowText 2>/dev/null || echo "Aucun")
echo "Message Personnalisé : $custom_message"
if [[ "$detailed" == "true" ]]; then
echo ""
echo "=== Configuration Détaillée ==="
# Paramètres supplémentaires
local hide_local=$(defaults read /Library/Preferences/com.apple.loginwindow HideLocalUsers 2>/dev/null || echo "false")
local hide_mobile=$(defaults read /Library/Preferences/com.apple.loginwindow HideMobileAccounts 2>/dev/null || echo "false")
local guest_enabled=$(defaults read /Library/Preferences/com.apple.loginwindow GuestEnabled 2>/dev/null || echo "false")
local admin_info=$(defaults read /Library/Preferences/com.apple.loginwindow AdminHostInfo 2>/dev/null || echo "DSStatus")
echo "Paramètres Avancés :"
echo " Masquer Utilisateurs Locaux : $hide_local"
echo " Masquer Comptes Mobiles : $hide_mobile"
echo " Compte Invité Activé : $guest_enabled"
echo " Info Hôte Admin : $admin_info"
# Vérifier l'arrière-plan personnalisé
local desktop_picture=$(defaults read /Library/Preferences/com.apple.loginwindow DesktopPicture 2>/dev/null || echo "Par Défaut")
echo " Image de Bureau : $desktop_picture"
fi
}
# Fonction d'exécution principale
main() {
local action="${1:-status}"
local param1="${2:-}"
local param2="${3:-}"
local param3="${4:-}"
local param4="${5:-}"
log_action "=== Gestion de Fenêtre de Connexion MacFleet Démarrée ==="
log_action "Action : $action"
# Assurer les privilèges requis pour les changements de configuration
if [[ "$action" != "status" && "$action" != "help" && $EUID -ne 0 ]]; then
echo "Erreur : Cette action nécessite des privilèges administrateur"
echo "Veuillez exécuter avec sudo : sudo $0 $*"
exit 1
fi
case "$action" in
"policy")
if [[ -z "$param1" ]]; then
echo "Politiques disponibles : ${!LOGIN_POLICIES[*]}"
exit 1
fi
enforce_login_policy "$param1" "$param2" "$param3" "$param4"
;;
"message")
if [[ -z "$param1" ]]; then
echo "Usage : $0 message <texte_message>"
exit 1
fi
defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "$param1"
echo "✓ Message personnalisé défini : $param1"
;;
"power")
case "$param1" in
"disable")
defaults write /Library/Preferences/com.apple.loginwindow ShutDownDisabled true
defaults write /Library/Preferences/com.apple.loginwindow RestartDisabled true
defaults write /Library/Preferences/com.apple.loginwindow SleepDisabled true
echo "✓ Toutes les options d'alimentation désactivées"
;;
"enable")
defaults write /Library/Preferences/com.apple.loginwindow ShutDownDisabled false
defaults write /Library/Preferences/com.apple.loginwindow RestartDisabled false
defaults write /Library/Preferences/com.apple.loginwindow SleepDisabled false
echo "✓ Toutes les options d'alimentation activées"
;;
*)
echo "Usage : $0 power <enable|disable>"
exit 1
;;
esac
;;
"display")
case "$param1" in
"userlist")
defaults write /Library/Preferences/com.apple.loginwindow SHOWFULLNAME false
echo "✓ Affichage de la liste des utilisateurs activé"
;;
"dialog")
defaults write /Library/Preferences/com.apple.loginwindow SHOWFULLNAME true
echo "✓ Boîte de dialogue nom d'utilisateur/mot de passe activée"
;;
*)
echo "Usage : $0 display <userlist|dialog>"
exit 1
;;
esac
;;
"status")
monitor_login_window "$param1"
;;
"reset")
echo "Réinitialisation de la fenêtre de connexion aux paramètres par défaut..."
defaults delete /Library/Preferences/com.apple.loginwindow SHOWFULLNAME 2>/dev/null || true
defaults delete /Library/Preferences/com.apple.loginwindow ShutDownDisabled 2>/dev/null || true
defaults delete /Library/Preferences/com.apple.loginwindow RestartDisabled 2>/dev/null || true
defaults delete /Library/Preferences/com.apple.loginwindow SleepDisabled 2>/dev/null || true
defaults delete /Library/Preferences/com.apple.loginwindow LoginwindowText 2>/dev/null || true
echo "✓ Fenêtre de connexion réinitialisée aux paramètres système par défaut"
;;
"help")
echo "Usage : $0 [action] [options...]"
echo "Actions :"
echo " policy <nom_politique> [entreprise] [support] [dry_run] - Appliquer une politique"
echo " message <texte> - Définir un message de connexion personnalisé"
echo " power <enable|disable> - Contrôler la visibilité des boutons d'alimentation"
echo " display <userlist|dialog> - Définir le mode d'affichage utilisateur"
echo " status [detailed] - Afficher la configuration actuelle"
echo " reset - Réinitialiser aux paramètres système par défaut"
echo " help - Afficher cette aide"
echo ""
echo "Politiques : ${!LOGIN_POLICIES[*]}"
echo "Modèles de Messages : ${!MESSAGE_TEMPLATES[*]}"
;;
*)
log_action "ERREUR : Action inconnue : $action"
echo "Utilisez '$0 help' pour les informations d'utilisation"
exit 1
;;
esac
log_action "=== Gestion de fenêtre de connexion terminée ==="
}
# Exécuter la fonction principale
main "$@"
Meilleures Pratiques de Sécurité de Fenêtre de Connexion
Configuration de Sécurité d'Entreprise
#!/bin/bash
# Implémenter la sécurité de fenêtre de connexion d'entreprise
implement_corporate_security() {
echo "=== Implémentation de la Sécurité de Fenêtre de Connexion d'Entreprise ==="
# Masquer l'énumération des utilisateurs
defaults write /Library/Preferences/com.apple.loginwindow SHOWFULLNAME true
# Désactiver les options d'alimentation pour prévenir les arrêts non autorisés
defaults write /Library/Preferences/com.apple.loginwindow ShutDownDisabled true
defaults write /Library/Preferences/com.apple.loginwindow SleepDisabled true
# Permettre le redémarrage pour les mises à jour (optionnel)
defaults write /Library/Preferences/com.apple.loginwindow RestartDisabled false
# Définir un message de sécurité d'entreprise
defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "Propriété d'Entreprise - Personnel Autorisé Uniquement"
# Désactiver le compte invité
defaults write /Library/Preferences/com.apple.loginwindow GuestEnabled false
# Masquer les informations de l'ordinateur
defaults write /Library/Preferences/com.apple.loginwindow AdminHostInfo ""
echo "✓ Configuration de sécurité d'entreprise appliquée"
}
implement_corporate_security
Notes Importantes
- Privilèges administrateur requis pour les modifications de la fenêtre de connexion
- Les changements prennent effet après déconnexion ou redémarrage
- Tester minutieusement sur des appareils individuels avant le déploiement en flotte
- Sauvegarder les paramètres avant d'apporter des changements
- Implications de sécurité - Considérer masquer les listes d'utilisateurs dans les environnements haute sécurité
- Expérience utilisateur - Équilibrer sécurité et utilisabilité
- Exigences de conformité - Certaines industries nécessitent des configurations spécifiques de fenêtre de connexion
- Caractères spéciaux - Éviter les points d'exclamation dans les messages personnalisés à cause de l'interprétation du shell