CH-J Server Managergestion de serveur sur SSH
Menu
Tous les guides et articles →

Comment modifier des fichiers dans /etc via SFTP et sudo

Pourquoi SFTP refuse l’accès dans /etc et comment modifier un fichier de configuration en toute sécurité sans élargir l’accès à root.

Pourquoi SFTP refuse l’accès

SFTP s’exécute sous le compte utilisé pour la connexion et ne possède pas d’équivalent à sudo. La plupart des fichiers dans /etc appartiennent à root : un compte ordinaire peut donc en lire certains, mais ne peut écrire dans aucun. Ce comportement est normal et ne doit pas être corrigé en assouplissant les permissions.

Ce qu’il faut éviter

N’exécutez pas chmod 777 sur un fichier de configuration, ne transférez pas la propriété des fichiers de /etc à votre compte et n’activez pas la connexion de root par mot de passe pour une seule modification. Certains services refusent les fichiers dont les permissions sont trop larges, et chacun de ces changements réduit la sécurité du serveur bien après la fin de la modification.

Utiliser sudoedit dans un terminal

sudoedit copie le fichier dans un emplacement temporaire, l’ouvre dans votre éditeur sous votre propre compte et ne le réécrit à son emplacement initial qu’après l’enregistrement. L’éditeur lui-même ne s’exécute pas en tant que root.

sudoedit /etc/nginx/nginx.conf

Envoyer une copie, puis l’installer

Si vous préférez un éditeur local, envoyez le fichier dans votre répertoire personnel et installez-le avec sudo. Sauvegardez d’abord l’original dans un emplacement qu’aucune directive d’inclusion de configuration ne lit. La commande install définit le propriétaire et le mode de permissions ; sur les systèmes avec SELinux, restorecon rétablit le contexte approprié. Vérifiez le propriétaire et le mode de l’original avant de reprendre ces valeurs, car tous les fichiers n’utilisent pas root et 644.

stat -c '%U %G %a' /etc/nginx/nginx.conf
sudo cp -a /etc/nginx/nginx.conf /root/nginx.conf.bak
sudo install -o root -g root -m 644 ~/nginx.conf.new /etc/nginx/nginx.conf
sudo restorecon -v /etc/nginx/nginx.conf

Valider avant d’appliquer

Un fichier comportant une erreur de syntaxe peut arrêter un service lors de son prochain redémarrage. Exécutez la vérification du service concerné avant de le recharger. Lorsque vous modifiez les paramètres SSH, gardez votre session actuelle ouverte et testez une nouvelle connexion depuis une deuxième fenêtre.

sudo nginx -t
sudo sshd -t
sudo visudo -cf /etc/sudoers.d/example

Modifier avec sudo dans CH-J Server Manager

File Manager propose d’ouvrir un fichier avec sudo lorsque le compte SSH ne peut pas le lire et prévient que l’enregistrement nécessitera sudo. Lors de l’enregistrement, les données sont envoyées dans le répertoire temporaire privé du compte puis, après vérification, sudo les met en place en conservant le propriétaire, les permissions, l’ACL et le contexte SELinux. Une sauvegarde facultative conserve une copie de l’original avant son remplacement. Le mot de passe est transmis uniquement à sudo sur le serveur et n’est stocké ni sur disque ni dans les journaux. Si la politique sudo impose un terminal (requiretty), l’application ne contourne pas cette exigence. L’application ne valide pas le contenu du fichier : exécutez donc vous-même la vérification du service.

Documentation détaillée

man: sudo / sudoedit →

man: install →

Déverrouillage biométrique et sécurité →