Avez-vous déjà été confronté à une situation où vous deviez effectuer une tâche sur un système Linux, pour vous retrouver confronté à un refus d’accès frustrant ? Eh bien, dites adieu à ces soucis et bienvenue dans le monde des permissions spéciales sous Linux !
Ce tutoriel est votre passeport pour maîtriser les subtilités des permissions spéciales sous Linux : le bit collant, l’ID utilisateur défini (SUID) et l’ID de groupe défini (SGID). Ces permissions spéciales offrent un niveau supérieur de contrôle de sécurité.
Continuez la lecture et gérez vos fichiers en toute sécurité avec précision et confiance !
Prérequis
Avant de plonger dans les détails des permissions spéciales sous Linux, assurez-vous d’avoir une machine Linux. Ce tutoriel utilise Ubuntu 22.04 LTS (Jammy Jellyfish) pour des démonstrations pratiques.
Exécution de fichiers avec des permissions spéciales sous Linux (SUID)
Les permissions de fichier Linux déterminent généralement la capacité d’un utilisateur à lire, écrire ou exécuter un fichier en fonction de ses autorisations et de celles de son groupe. Cependant, il existe des situations où un utilisateur doit exécuter un fichier avec les autorisations du propriétaire du fichier plutôt que les siennes.
Par exemple, considérez un programme que seuls les utilisateurs root peuvent exécuter, mais il est nécessaire qu’un utilisateur régulier l’exécute pour une tâche spécifique. Dans de tels cas, l’SUID devient inestimable.
Pour voir comment définir les autorisations SUID, suivez ces étapes:
1. Ouvrez le terminal et exécutez les commandes suivantes pour créer un utilisateur (useradd
) appelé A-utilisateur
(arbitraire) et attribuez-lui un mot de passe (passwd
).

2. Ensuite, exécutez la commande stat
ci-dessous pour voir les autorisations existantes de la commande cat
.
Prenez note des autorisations d’accès ci-dessous, car vous en aurez besoin pour les comparaisons ultérieures:
- 0755 – Permet au fichier d’être exécuté avec les autorisations de son propriétaire, fournissant des privilèges élevés aux utilisateurs non privilégiés lors de l’exécution du fichier.
- -rwxr-xr-x – Définit les autorisations du propriétaire pour lire, écrire et exécuter le fichier (rwx), tandis que les membres du groupe et les autres utilisateurs peuvent lire et exécuter le fichier (r-x et r-x).

cat
command3. Maintenant, exécutez la commande chmod
ci-dessous, qui ne fournit pas de sortie mais définit le bit SUID sur la commande cat
.
Cette commande permet à la commande cat
de s’exécuter avec les autorisations du propriétaire du fichier plutôt qu’avec les autorisations de l’utilisateur exécutant la commande.
? Notez que l’utilisation de SUID doit être faite avec prudence, car elle peut potentiellement introduire des risques de sécurité si elle n’est pas correctement mise en œuvre. Assurez-vous d’appliquer SUID uniquement aux commandes et fichiers de confiance.
4. Une fois que vous avez défini le bit SUID, exécutez la commande stat
suivante pour vérifier le bit SUID en réexaminant les permissions de la commande cat
.
Si réussi, vous verrez ce qui suit, où vous ferez une comparaison avec les informations que vous avez notées à l’étape deux :
- 0755 changé en 4755, où le nombre 4 représente le bit SUID.
- -rwxr-xr-x changé en -rwsr-xr-x, où s représente respectivement l’emplacement de permission d’exécution (x) de l’utilisateur.

5. Exécutez la commande cat
ci-dessous pour tester la permission de l’utilisateur actuellement connecté d’accéder au fichier /etc/shadow
. Ce fichier est un fichier système critique qui stocke les mots de passe des utilisateurs chiffrés et des informations connexes, auquel seul un utilisateur root peut accéder.
Par défaut, la commande cat
vous permet de voir le contenu d’un fichier sous Linux. Mais ce comportement n’est pas toujours vrai pour chaque fichier.
Le message ci-dessous apparaît puisque l’utilisateur actuel n’a pas la permission d’accéder au fichier.

6. Maintenant, exécutez chaque commande ci-dessous pour passer (su
) à l’utilisateur nouvellement créé (A-user
) et essayez d’accéder à nouveau au fichier /etc/shadow
.
Cette fois, la commande cat
s’exécute avec les autorisations du propriétaire du fichier (généralement root) plutôt qu’avec les autorisations de l’utilisateur qui a exécuté la commande.
Étant donné que vous avez temporairement accordé la permission à A-user de lire le contenu de ce fichier, vous obtiendrez une sortie comme celle ci-dessous.

7. Pour des raisons de sécurité, exécutez les commandes suivantes pour quitter
l’utilisateur actuel (A-user) et restaurer les autorisations de la commande cat
à leur état d’origine.

cat
command8. Enfin, exécutez la commande ci-dessous pour vérifier que le bit SUID a été supprimé.
Remarquez que les bits SUID 4 et s ne sont plus dans les autorisations d’accès.

Activation des flux de travail collaboratifs dans les répertoires Linux (SGID)
L’exécution de fichiers avec des autorisations spéciales dans Linux via SUID fonctionne indubitablement bien. Mais que se passe-t-il si vous visez des flux de travail collaboratifs, où plusieurs utilisateurs collaborent sur des projets? En général, vous devez vous assurer que les fichiers nouvellement créés héritent de la propriété de groupe du répertoire parent.
Lorsque vous êtes confronté à ce scénario, le SGID se révèle être le facteur déterminant. Cette fonctionnalité puissante simplifie la gestion des ressources partagées et améliore les flux de travail basés sur les groupes dans les environnements Linux.
Pour voir comment fonctionne le SGID, vous allez créer un groupe, y ajouter des utilisateurs, définir les permissions SGID sur un répertoire, et tester sa fonctionnalité comme suit :
1. Exécutez les commandes suivantes pour vous connecter en tant qu’utilisateur root et créer un nouveau groupe nommé demo
(arbitraire). Ce groupe est celui que vous utiliserez pour tester la fonctionnalité SGID.
Ces commandes ne produisent pas de sortie

2. Ensuite, exécutez les commandes ci-dessous pour créer deux utilisateurs (userA
et userB
) que vous utiliserez pour simuler un environnement collaboratif.

3. Après avoir créé de nouveaux utilisateurs, exécutez les commandes usermod
ci-dessous, qui n’affichent pas de sortie dans le terminal mais ajoutent les utilisateurs (userA
et userB
) au groupe demo
.
4. Maintenant, exécutez chaque commande ci-dessous, créez un répertoire (mkdir
) appelé /demo-dir
(arbitraire), et définissez les propriétaires du répertoire sur userA
et demo
, respectivement.
? Lorsque ces commandes réussissent, elles ne produisent pas de sortie, ce qui s’applique tout au long de ce tutoriel.
5. Ensuite, exécutez la commande ls
suivante pour voir les permissions du répertoire /demo-dir
.
La sortie ci-dessous vérifie que l’utilisateur du répertoire /demo-dir est défini sur utilisateurA et le groupe sur demo.

6. Avec les autorisations vérifiées, exécutez la commande chmod
ci-dessous pour définir le bit SGID sur le répertoire /demo-dir/
comme suit :
g+s
– Set the SGID bit on the/demo-dir/
directory.o-rwx
– Remove all permissions (read, write, execute) for others.u+rwx
– Grant read, write, and execute permissions to the owner.g+rwx
– Grant read, write, and execute permissions to the group.
7. Une fois que le bit SGID est défini, exécutez la commande suivante pour vérifier les autorisations du répertoire /demo-dir
.
Si la commande réussit, vous verrez le bit SGID défini, représenté par le numéro 2
avant le mode d’autorisation octal et s
à la place de l’autorisation d’exécution du propriétaire du groupe (x
) (rws
).

8. Ensuite, exécutez chaque commande ci-dessous pour créer un répertoire /home
pour utilisateurA
.
9. Exécutez les commandes suivantes pour passer en (su
) utilisateurA
et créer un fichier (touch
) appelé textA.txt
(arbitraire) dans le répertoire /demo-dir
.
Ces commandes n’ont pas de sortie (ce qui s’applique tout au long de ce tutoriel), mais vous vérifierez les autorisations du fichier à l’étape suivante.
10. Exécutez la commande ls
ci-dessous pour voir les autorisations du fichier textA.txt
.
Ci-dessous, le groupe propriétaire du fichier textA.txt est demo, qui est le groupe principal du créateur, userA. Les membres du groupe demo peuvent lire et modifier le fichier, tandis que les autres ne peuvent que le lire.
Pour garantir que les nouveaux fichiers dans le répertoire /demo-dir héritent de la propriété de groupe du répertoire, un bit SGID doit être défini sur le répertoire, comme vous le verrez dans les étapes suivantes.

11. À présent, invoquez les commandes suivantes pour quitter
l’utilisateur actuel (userA) et définir le bit SGID (chmod g+s
) dans le répertoire /demo-dir

12. Une fois que le SGID est défini, exécutez la commande ci-dessous pour vérifier le bit SGID ajouté au répertoire /demo-dir
.
Comme indiqué ci-dessous, vous remarquerez que le bit SUID 2 est ajouté, et il y a un s à l’emplacement de l’exécution du groupe propriétaire. Cette sortie confirme que le bit SGID a été défini avec succès pour le répertoire /demo-dir.

13. Ensuite, revenez à l’utilisateur userA
et créez un autre fichier appelé testA.txt
(arbitraire) dans le répertoire /demo-dir
.
14. Une fois créé, exécutez la commande ls
ci-dessous pour vérifier la propriété du nouveau fichier (testA.txt
).
Si le SGID fonctionne comme prévu, la sortie indique que tandis que userA est le propriétaire, la propriété du groupe est demo en raison du bit SGID défini sur le répertoire /demo-dir.

15. Maintenant, créez un répertoire /home
pour userB
afin de tester davantage la fonctionnalité SGID.
16. Passez à l’utilisateur userB
et créez un fichier appelé testB.txt
(arbitraire) dans le même répertoire /demo-dir
.

17. Affichez (ls
) les informations sur le nouveau fichier (testB.txt
).
Vérifiez la propriété du fichier textB.txt.

Protection des fichiers dans les répertoires (Bit collant)
La promotion de workflows collaboratifs dans les répertoires Linux favorise le travail d’équipe et la collaboration transparente. Mais lorsque vous devez établir un environnement sécurisé pour gérer efficacement les fichiers, les autorisations du Bit collant feront l’affaire.
En définissant le Bit collant, vous confiez essentiellement les « clés du château » au propriétaire du fichier, au propriétaire du répertoire ou à l’utilisateur root. Cela garantit que seuls eux ont le pouvoir de supprimer ou de renommer le fichier dans le répertoire, offrant une protection supplémentaire pour les données sensibles.
Pour définir les autorisations du Bit collant, vous devez d’abord créer un répertoire partagé en suivant les étapes suivantes :
1. Connectez-vous en tant qu’utilisateur root et créez un répertoire partagé (mkdir
) où plusieurs utilisateurs peuvent créer des fichiers.
2. Ensuite, exécutez les commandes suivantes pour modifier les autorisations du répertoire /shared-dir
afin d’accorder des permissions d’écriture à tout le monde.
Le premier chiffre (1
) dans 1777
définit le bit collant, tandis que le reste (777
) rend le répertoire lisible, inscriptible et exécutable par tout le monde.
Les fonctionnalités ou attributs du bit collant dans un système Linux sont les suivants :
Feature | Function |
Directory Protection | When the Sticky Bit is set on a directory, it allows only the owner of a file within that directory to delete or rename their own files. Other users, even if they have write permissions to the directory, cannot delete or rename files owned by other users. |
Shared Directories | The sticky bit is handy for directories that are shared among multiple users. For example, on a system with a /tmp directory used by all users to store temporary files, setting the Sticky Bit prevents users from accidentally or maliciously deleting files owned by other users. |
ci-dessous, vous pouvez voir la lettre ‘t’ dans la partie finale du champ d’autorisation, ce qui indique que le bit collant est défini pour le répertoire /shared-dir.

3. Passez à userA
et créez un fichier appelé fileA.txt
(arbitraire) dans le répertoire /shared-dir
:
4. Quittez l’utilisateur A, passez à userB
et créez un autre fichier appelé fileB.txt
(arbitraire) dans le même répertoire /shared-dir
.
5. Maintenant, quittez utilisateurB
, passez à utilisateurA
et tentez de supprimer le fichier fileB.txt
de utilisateurB
.
Vous obtiendrez une sortie comme celle ci-dessous puisque seul le propriétaire du fichier peut apporter des modifications ou supprimer le fichier.

6. Enfin, exécutez la liste de commandes suivante (ls
) pour répertorier tous les fichiers dans le répertoire partagé (/shared-dir
).
Si les autorisations du Sticky Bit fonctionnent, vous verrez que le fichier fileB.txt créé par utilisateurB est intact et n’a pas été supprimé.

Conclusion
En concluant cette exploration des autorisations spéciales dans Linux, vous avez débloqué un ensemble robuste d’outils : le SUID, le SGID et le Sticky Bit. Armé de ces connaissances, vous pouvez désormais affiner le contrôle d’accès et protéger vos fichiers avec précision.
Mais ne vous arrêtez pas là ! Pourquoi ne pas essayer de configurer un répertoire partagé avec SGID et expérimenter la manière dont les fichiers héritent de la propriété de groupe ? Le monde Linux est à votre portée, et à chaque entreprise, vous maîtriserez l’art de sécuriser votre système avec finesse !
Source:
https://adamtheautomator.com/special-permissions-in-linux/