Guide

Nouvelles mises à jour et améliorations de Roundfleet.

Avis important

Les exemples de code et scripts fournis dans ces tutoriels sont uniquement à des fins éducatives. Roundfleet n'est pas responsable des problèmes, dommages ou vulnérabilités de sécurité qui pourraient survenir lors de l'utilisation, modification ou implémentation de ces exemples. Toujours vérifier et tester le code dans un environnement sécurisé avant de l'utiliser dans des systèmes de production.

Personnalisation de la Fenêtre de Connexion sur macOS

Personnalisez et sécurisez la fenêtre de connexion sur vos appareils Roundfleet 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 Roundfleet. 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 Roundfleet 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 Roundfleet Enterprise"

Système de Gestion de Fenêtre de Connexion d'Entreprise

#!/bin/bash

# Outil de Gestion de Fenêtre de Connexion Roundfleet
# 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/roundfleet_loginwindow.log"
REPORT_DIR="/etc/roundfleet/reports/loginwindow"
CONFIG_DIR="/etc/roundfleet/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:-Roundfleet}"
    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 Roundfleet 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

Related Tutorials

Gestion d'Entreprise de l'Historique de Connexion sur macOS

Guide complet pour traquer, surveiller et analyser l'historique de connexion des utilisateurs sur les appareils macOS avec les commandes who, last et dscl pour l'audit de sécurité d'entreprise et la conformité.

7 juil. 2025

Gestion des Privilèges Utilisateur et Conformité Sécurité sur macOS

Gestion complète des privilèges utilisateur, contrôle d'accès administrateur, surveillance de conformité sécuritaire et détection automatisée d'escalade de privilèges pour les appareils macOS en environnements d'entreprise.

7 juil. 2025

Gestion Entreprise des Détails Utilisateur sur macOS

Guide complet pour la récupération et gestion d'informations utilisateur en entreprise sur les appareils Roundfleet avec profilage utilisateur détaillé, capacités d'audit et contrôles de sécurité.

7 juil. 2025

Gestion Entreprise de Création Utilisateur sur macOS

Guide complet pour le provisioning utilisateur et gestion du cycle de vie en entreprise sur les appareils Roundfleet avec workflows automatisés, contrôles de sécurité et processus standardisés de création utilisateur.

7 juil. 2025

Gestion des Comptes Utilisateurs sur macOS

Apprenez à créer, gérer et configurer les comptes utilisateurs sur les appareils macOS en utilisant les outils en ligne de commande. Guide complet pour la création d'utilisateurs administrateurs et standards, politiques de mots de passe et gestion d'utilisateurs en entreprise.

7 juil. 2025

Suppression de Comptes Utilisateur et Gestion du Cycle de Vie sur macOS

Apprenez à supprimer en toute sécurité les comptes utilisateur, gérer la rétention des données, implémenter des procédures de départ sécurisées et traiter la gestion du cycle de vie des utilisateurs d'entreprise sur les appareils macOS.

7 juil. 2025

Supprimer les comptes mobiles sur les appareils macOS

Apprenez à supprimer efficacement les comptes mobiles sur les appareils macOS pour la gestion des utilisateurs, la réaffectation d'appareils et le nettoyage organisationnel.

7 juil. 2025

Vérification de l'existence d'utilisateurs sur les appareils macOS

Apprenez à vérifier l'existence des comptes utilisateur sur les appareils macOS en utilisant des scripts shell pour une gestion efficace des utilisateurs.

7 juil. 2025