Sur macOS, de nombreuses operations au niveau du systeme necessitent des privileges eleves que votre compte utilisateur normal ne possede pas. La commande sudo (abreviation de “superuser do”) vous permet d’executer des commandes avec un acces de niveau root depuis le Terminal. Ce guide couvre l’utilisation basique et avancee de sudo, le fichier de configuration sudoers, l’activation de Touch ID pour l’authentification sudo et les considerations de securite specifiques a macOS.

Utilisation basique de sudo

Executer une seule commande en tant que root

Prefixez n’importe quelle commande avec sudo pour l’executer avec les privileges root :

# Install a package with Homebrew (some operations need sudo)
sudo installer -pkg /path/to/package.pkg -target /

# Edit a system configuration file
sudo nano /etc/hosts

# Change file ownership
sudo chown root:wheel /usr/local/bin/myapp

# Restart a system service
sudo launchctl kickstart -k system/com.apple.mDNSResponder

Lorsque vous executez sudo pour la premiere fois dans une session de terminal, macOS vous demande votre mot de passe utilisateur. Apres l’authentification, sudo retient vos identifiants pendant 5 minutes (configurable), donc les commandes sudo suivantes dans cette fenetre ne necessitent pas de reauthentification.

Ouvrir un shell eleve

Si vous devez executer plusieurs commandes avec les privileges root :

# Open a root shell (preserves your environment)
sudo -s

# Open a root login shell (loads root's environment)
sudo -i

# Exit the root shell when done
exit

Dans un shell root, chaque commande s’execute avec les privileges systeme complets. Soyez prudent — il n’y a pas de filet de securite pour les commandes comme rm -rf.

Executer une commande en tant qu’autre utilisateur

# Run a command as a specific user
sudo -u _www /usr/bin/some-command

# Open a shell as a different user
sudo -u another_user -s

Commandes sudo courantes sur macOS

Administration systeme

# Flush the DNS cache
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

# Restart networking
sudo ifconfig en0 down
sudo ifconfig en0 up

# Show listening ports
sudo lsof -iTCP -sTCP:LISTEN -P

# Repair disk permissions (macOS El Capitan and earlier)
sudo diskutil repairPermissions /

# Start/stop/restart services via launchctl
sudo launchctl load /Library/LaunchDaemons/com.example.myservice.plist
sudo launchctl unload /Library/LaunchDaemons/com.example.myservice.plist

Operations sur le systeme de fichiers

# Write to a protected directory
sudo cp myfile.conf /etc/

# Edit protected files
sudo nano /etc/apache2/httpd.conf
sudo vim /etc/ssh/sshd_config

# Change permissions on system files
sudo chmod 644 /etc/hosts

Gestion des paquets et logiciels

# Install Xcode command line tools
sudo xcode-select --install

# Accept Xcode license
sudo xcodebuild -license accept

# Install a .pkg file
sudo installer -pkg /path/to/package.pkg -target /

Comprendre le fichier sudoers

Le fichier /etc/sudoers controle qui peut utiliser sudo et ce qu’il peut faire avec. Sur macOS, la configuration par defaut permet aux membres du groupe admin d’executer n’importe quelle commande via sudo.

Visualiser le fichier sudoers

# Always use visudo to edit sudoers (validates syntax)
sudo visudo

# View without editing
sudo cat /etc/sudoers

N’editez jamais /etc/sudoers directement avec un editeur de texte. Utilisez toujours visudo, qui valide la syntaxe avant l’enregistrement. Une erreur de syntaxe dans ce fichier peut vous bloquer l’acces a sudo entierement.

Configuration sudoers par defaut sur macOS

La ligne cle dans le fichier sudoers de macOS est :

%admin  ALL=(ALL) ALL

Cela signifie : tout membre du groupe admin (%admin) peut executer n’importe quelle commande (ALL) en tant que n’importe quel utilisateur (ALL) sur n’importe quel hote (ALL).

Ajouter des regles sudoers personnalisees

Pour un controle plus granulaire, ajoutez des regles dans /etc/sudoers.d/ plutot que d’editer le fichier principal :

# Create a custom sudoers rule file
sudo visudo -f /etc/sudoers.d/custom-rules

Exemples de regles :

# Allow a user to restart Apache without a password
john ALL=(root) NOPASSWD: /usr/sbin/apachectl restart

# Allow a group to run specific commands
%developers ALL=(root) NOPASSWD: /usr/local/bin/deploy.sh

# Allow a user to run any command without a password (use with caution)
jane ALL=(ALL) NOPASSWD: ALL

Modifier le delai d’expiration de sudo

Par defaut, sudo retient votre mot de passe pendant 5 minutes. Pour modifier cela :

sudo visudo

Ajoutez ou modifiez :

Defaults timestamp_timeout=15

Definissez a 0 pour exiger un mot de passe a chaque fois, ou -1 pour ne jamais expirer au sein d’une session.

Touch ID pour sudo

Sur les Mac avec Touch ID, vous pouvez authentifier sudo avec votre empreinte digitale au lieu de taper votre mot de passe.

macOS Sonoma et versions ulterieures

A partir de macOS Sonoma, Apple fournit un fichier dedie pour la configuration de Touch ID pour sudo :

# Create or edit the sudo_local file
sudo nano /etc/pam.d/sudo_local

Ajoutez cette ligne :

auth       sufficient     pam_tid.so

Enregistrez le fichier. La prochaine fois que vous utiliserez sudo dans le Terminal, vous serez invite a utiliser Touch ID.

Versions anterieures de macOS

Sur les versions anterieures a Sonoma, editez la configuration PAM principale de sudo :

sudo nano /etc/pam.d/sudo

Ajoutez auth sufficient pam_tid.so comme premiere ligne :

auth       sufficient     pam_tid.so
auth       sufficient     pam_smartcard.so
auth       required       pam_opendirectory.so
account    required       pam_permit.so
password   required       pam_deny.so
session    required       pam_permit.so

Remarque : Sur les versions plus anciennes de macOS, les mises a jour du systeme peuvent ecraser /etc/pam.d/sudo et vous devrez ajouter a nouveau la ligne Touch ID. L’approche sudo_local sur Sonoma persiste entre les mises a jour.

Touch ID dans iTerm2 et les terminaux tiers

Certains emulateurs de terminal peuvent ne pas prendre en charge Touch ID pour sudo par defaut. Dans iTerm2 :

  1. Allez dans Preferences > Advanced
  2. Recherchez “Allow sessions to survive logging out and back in”
  3. Definissez sur No

Cela garantit que la session PAM est correctement transmise pour Touch ID.

Considerations de securite specifiques a macOS

System Integrity Protection (SIP)

macOS a le System Integrity Protection active par defaut. Meme avec un acces sudo/root, certains repertoires et operations sont proteges :

  • /System, /usr (sauf /usr/local) et /sbin sont en lecture seule
  • Vous ne pouvez pas modifier les binaires systeme ou les extensions du noyau
  • Certains processus systeme ne peuvent pas etre attaches ou modifies

Pour verifier l’etat du SIP :

csrutil status

Ne desactivez pas le SIP sauf si vous avez un besoin specifique et temporaire et que vous comprenez les implications de securite.

Gatekeeper et notarisation

L’execution de logiciels non signes ou non notaries peut necessiter des etapes supplementaires meme avec sudo :

# Remove quarantine attribute from a downloaded app
sudo xattr -r -d com.apple.quarantine /Applications/SomeApp.app

# Allow apps from identified developers
sudo spctl --master-enable

Le compte utilisateur root

macOS possede un compte utilisateur root qui est desactive par defaut. Vous pouvez l’activer, mais cela n’est generalement pas recommande :

Pour activer (non recommande) :

  1. Allez dans Reglages du systeme > Utilisateurs et groupes
  2. Cliquez sur Modifier a cote du Serveur de compte reseau (ou ouvrez l’Utilitaire d’annuaire)
  3. Allez dans le menu Modifier > Activer l’utilisateur root
  4. Definissez un mot de passe fort

Il est plus sur d’utiliser sudo que d’activer et de se connecter en tant que root. Avec sudo, vous avez une piste d’audit indiquant quel utilisateur a execute quelle commande privilegiee.

Gestion des utilisateurs admin

Verifier l’appartenance au groupe admin

# Check if a user is in the admin group
dseditgroup -o checkmember -m username admin

# List all admin users
dscl . -read /Groups/admin GroupMembership

Accorder l’acces administrateur

Via les Reglages du systeme :

  1. Ouvrez Reglages du systeme > Utilisateurs et groupes
  2. Cliquez sur le bouton d’information (i) a cote du compte utilisateur
  3. Activez Autoriser l’utilisateur a administrer cet ordinateur

Via la ligne de commande :

# Add a user to the admin group
sudo dseditgroup -o edit -a username -t user admin

# Remove a user from the admin group
sudo dseditgroup -o edit -d username -t user admin

Resume

La commande sudo est le moyen standard d’executer des commandes avec des privileges eleves sur macOS. Utilisez sudo pour les commandes individuelles et sudo -s ou sudo -i pour les shells root interactifs. Configurez le fichier sudoers avec visudo pour les regles d’acces personnalisees et activez Touch ID pour sudo sur les Mac compatibles en editant /etc/pam.d/sudo_local. N’oubliez pas que le System Integrity Protection de macOS limite ce que meme root peut faire, ce qui est voulu pour la securite. Preferez toujours sudo a l’activation du compte root, car il offre une tracabilite et peut etre configure avec des permissions granulaires.