Résolution des problèmes liés aux autorisations
Consultez les informations suivantes pour résoudre les problèmes de droit d'accès dans une instance Oracle Linux sur Oracle Cloud Infrastructure.
Echec de Sudo to Root User avec "sudo : /usr/bin/sudo must be own by uid 0 and have the setuid bit" Erreur
Une fois connecté à une instance Oracle Linux en tant qu'utilisateur opc et que vous tentez de passer à l'utilisateur root, l'erreur suivante s'affiche :
[opc@<oracle-linux-instance-name> ~]$ sudo su -
sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
Ce problème se produit si un utilisateur ou un processus a modifié la propriété et les droits d'accès sur le fichier binaire sudo. Etant donné que le fichier /usr/bin/sudo doit appartenir à root, les fichiers binaires ne peuvent pas être exécutés.
Pour résoudre ce problème, vous devez rétablir les valeurs d'origine des droits d'accès et de propriété des utilisateurs et des groupes des fichiers du package sudo, telles que définies dans la base de données RPM.
Pour des raisons de sécurité, les connexions SSH directes en tant qu'utilisateur root sont désactivées par défaut sur les instances Oracle Cloud Infrastructure. Toutefois, si l'accès SSH root est explicitement activé sur l'instance, ou si vous avez défini le mot de passe root et que vous pouvez utiliser su pour accéder directement au compte root, vous pouvez résoudre le problème directement :
Si SSH root est activé ou si vous disposez du mot de passe root :
- Connectez-vous via SSH à l'instance en tant qu'utilisateur
rootou utilisez la commande su pour obtenir les privilègesroot. - Réinitialisez la propriété :
rpm --setugids sudo - Réinitialiser les droits d'accès :
rpm --setperms sudo - Vérifiez les autorisations :
La sortie affiche la propriété root et le bit setuid sur
ls -l /usr/bin/*sudo*sudo, par exemple :-rwsr-xr-x. 1 root root 151424 ... /usr/bin/sudo - Quittez la session racine.
- Utilisez la commande
sudopour passer à l'utilisateurrootafin de vérifier que le problème est résolu :sudo -s
Si l'accès SSH root est désactivé et que vous ne disposez pas du mot de passe root :
Etant donné que le binaire sudo est inutilisable, vous ne pouvez pas exécuter ces commandes directement à partir de l'instance en tant qu'utilisateur opc. Procédez comme suit pour récupérer l'accès à l'aide d'une instance de secours :
- A l'aide de la console, arrêtez l'instance concernée. Ouvrez le menu de navigation, puis sélectionnez Compute. Sous Compute, sélectionnez Instances. Sélectionnez l'instance à récupérer.
- Détachez le volume d'initialisation de l'instance. Sous Stockage, sélectionnez le volume d'initialisation. Dans le menu, sélectionnez Copier l'ID de ressource. Notez l'ID de ressource à utiliser ultérieurement. Dans le menu, sélectionnez Détacher le volume d'initialisation. Confirmez que vous souhaitez dissocier le volume d'initialisation.
- Créez une instance de secours avec une image de plate-forme de système d'exploitation Oracle Linux, avec la plus petite forme disponible, dans le même domaine de disponibilité et le même compartiment que l'instance affectée.
- Attachez le volume d'initialisation détaché à l'instance de secours :
- Dans les détails de l'instance de secours, sous Stockage, sous Volumes de blocs attachés, sélectionnez Attacher un volume de blocs.
- Entrez l'OCID de volume et fournissez l'ID de ressource de volume d'initialisation que vous avez copié précédemment.
- Sélectionnez le type d'accès "Lecture/écriture"
- Ajoutez le volume et notez le chemin du périphérique.
- Connectez-vous à l'instance de secours en tant qu'utilisateur
opc. - Passez à l'utilisateur root :
sudo -s - Identifiez l'appareil du volume de blocs attaché :
ou
lsblkLe périphérique correspond au chemin de périphérique que vous avez noté lors de l'ajout du volume de blocs.fdisk -l - Créez un point d'assemblage et montez la partition racine, par exemple :
mkdir /mnt/recovery mount /dev/sdb1 /mnt/recovery - Répertoires du système de montage lié :
for dir in /dev /proc /sys /run; do mount --bind $dir /mnt/recovery$dir; done - Effectuez une opération Chroot dans le système des fichiers monté :
chroot /mnt/recovery - Réinitialisez la propriété :
rpm --setugids sudo - Réinitialiser les droits d'accès :
rpm --setperms sudo - Quittez le chroot :
exit - Démontez les systèmes de fichiers :
for dir in /dev /proc /sys /run; do umount /mnt/recovery$dir; done umount /mnt/recovery - Quittez la racine de l'instance de secours :
exit - Arrêtez l'instance de secours.
- Détachez le volume d'initialisation de l'instance de secours.
- Attachez le volume d'initialisation à l'instance d'origine en tant que volume d'initialisation.
- Démarrez l'instance d'origine et connectez-vous en tant qu'utilisateur
opc. - Utilisez la commande
sudopour basculer vers l'utilisateurrootafin de vérifier que le problème est résolu :sudo -s