Créer et configurer les répertoires Setgid pour la collaboration - RHCSA Préparation d'objectif

Créer et configurer les répertoires Setgid pour la collaboration - RHCSA Préparation d'objectif

Les autorisations et les droits du système de fichiers GNU / Linux sont à la base de la sécurité du système, et l'un de ses principes est la séparation claire des droits des fichiers et des dossiers. Dans un environnement lourdement multi-utilisateur, comme le serveur d'une école, les droits de fichiers empêchent un utilisateur par défaut de supprimer ou d'écraser accidentellement les documents d'un autre. Cependant, il existe des cas d'utilisation où plusieurs utilisateurs doivent accéder (lire, écrire et même supprimer) d'autres fichiers d'utilisateur - tels peuvent être le cas dans le serveur scolaire mentionné ci-dessus, où les élèves travaillent sur le même projet. Dans cette section de la préparation des examens RHCSA, nous apprendrons à créer un environnement pour une telle collaboration, en utilisant la technique Setgid (Set GroupID). Notez que même si nous effectuons ces étapes sur un système d'exploitation récent, le Setgid n'est pas une nouvelle chose, et vous le trouverez dans toutes les distributions.

Dans ce tutoriel, vous apprendrez:

  • Comment ajouter des utilisateurs à un groupe supplémentaire
  • Comment utiliser Set-Gid sur un répertoire
  • Comment vérifier la propriété appropriée dans le répertoire Set-Gid
  • Comment utiliser le répertoire spécial en tant que membre du groupe
Permettre une collaboration avec Setgid Directory.

Exigences et conventions logicielles utilisées

Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Red Hat Enterprise Linux 8
Logiciel GNU Coreutils 8.30
Autre Accès privilégié à votre système Linux en tant que racine ou via le Sudo commande.
Conventions # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier

Le cas d'utilisation

Pour démontrer l'utilisation du SetGID, nous avons un serveur virtuel, et nous devons créer un groupe d'utilisateurs, ajouter des membres et configurer un répertoire auquel ils ont tous les deux accès. Jusqu'à présent, ce n'est qu'un
Question de paramètres d'autorisation. L'astuce sera d'ajouter le setgid au répertoire, de sorte que les fichiers créés à l'intérieur du répertoire disposeront du groupe de propriétaires du répertoire parent. Étant donné que le groupe aura lu et rédiger des autorisations dans le répertoire, tous les membres du groupe peuvent lire et écrire les fichiers, sans avoir besoin de l'appartenance à l'origine du groupe de réglage utilisateur.

Configuration de base

Nous créons d'abord les objets nécessaires. Créons le répertoire du projet:

# mkdir -p / étudiant_projects / rocket_science

Et nos deux utilisateurs, Sarah et John, Utilisation de la commande userAdd:

# useradd John # useradd Sarah

Nous devons également créer un groupe d'utilisateurs qui permettra une collaboration entre ses membres:

# groupadd rocketENGineers

Ensuite, nous définissons ce groupe en tant que propriétaire du répertoire du projet, récursivement:

# Chown -r: RocketEngineers / Student_Projects / Rocket_science

Ensuite, nous ajoutons nos utilisateurs au rasétisation groupe:

# Usermod -a -g Rocketenneers John # Usermod -a -g Rocketenneers Sarah

Nous avons ajouté le groupe en tant que groupe secondaire. Pour plus de détails sur les groupes, consultez le tutoriel des membres du groupe.



Pour terminer la configuration de base, nous devons ajouter une autorisation complète au groupe dans le répertoire:

# Chmod 770 / Student_Projects / Rocket_science

Et avec cela, notre configuration de base est complète. Les deux utilisateurs peuvent écrire dans le répertoire et les fichiers créés appartiendront à l'utilisateur, et le groupe de possession sera le groupe principal de l'utilisateur. Nous pouvons vérifier le
autorisations avec lesquelles nous avons fixé stat:

# Stat / Student_Projects / Rocket_Science Fichier: / Student_Projects / ROCKET_SCIENCE Taille: 6 blocs: 0 IO Bloc: 4096 Dispositif de répertoire: FD00H / 64768D INODE: 17789698 Liens: 2 Access: (0770 / drwxrwx ---) UID: (0 ​​/ Root: (0770 / drwxrwx ---) UID: (0 ​​/ Root ) GID: (1003 / Rocketenneers) Contexte: Uncifined_u: Object_R: Default_T: S0 Access: 2020-10-04 18:29:57.500453785 +0200 Modifier: 2020-10-04 18:29:47.650278956 +0200 Changement: 2020-10-04 18:30:34.809115974 +0200 Naissance: -

Les identifiants diffèrent très probablement. Nous pouvons voir que le propriétaire du répertoire est racine, tandis que la propriété du groupe appartient au rasétisation groupe. Cela permet aux deux membres
du groupe à lire et à écrire depuis et vers le répertoire.

Collaboration sans setgid

Supposons que les deux utilisateurs souhaitent partager quelques notes avec cette configuration. Sarah J'ai un fichier texte avec des données importantes dans son répertoire d'origine:

$ id uid = 1002 (Sarah) gid = 1002 (Sarah) Groupes = 1002 (Sarah), 1003 (RocketEngineers) Context = Uncifined_u: Unfined_r: Unfinined_T: S0-S0: C0.C1023 $ Cat General_project.notes texte

Pour le partager avec John, Elle copie le dossier au répertoire partagé (il y a donc encore une sauvegarde dans son répertoire d'origine, juste au cas où):

$ cp général_project.Notes / Student_Projects / Rocket_science /

En vérifiant les propriétés, nous pouvons voir que le propriétaire est en effet Sarah, et le groupe possédant le fichier est également Sarah, Le groupe principal de l'utilisateur:

$ stat / étudiant_projects / rocket_science / General_project.NOTES Fichier: / Student_Projects / Rocket_Science / General_Project.Remarques Taille: 5 blocs: 8 Blocs IO: 4096 Dispositif de fichier régulier: FD00H / 64768D: 18019570 Liens: 1 Accès: (0664 / -rw-rw-r--) UID: (1002 / Sarah) GID: (1002 / Sarah) Contexte: Uncifined_U: Object_R: Default_T: S0 Accès: 2020-10-04 18:31:30.229099624 +0200 Modifier: 2020-10-04 18:31:30.229099624 +0200 Changement: 2020-10-04 18:31:30.229099624 +0200 Naissance: -

Passons à John. Il a également quelques résultats sur le projet et souhaite les partager.

$ id uid = 1001 (John) gid = 1001 (John) Groupes = 1001 (John), 1003 (RocketEngineers) context = Unfined_u: Unfined_r: Unfined_T: S0-S0: C0.c1023 $ echo "mytext"> fusée.txt $ cp fusée.txt / student_projects / rocket_science /


Les mêmes autorisations s'appliquent, le fichier nouvellement copié appartiendra à John:

$ stat / student_projects / rocket_science / fusée.Fichier TXT: / Student_Projects / Rocket_science / Rocket.TITME TXT: 7 blocs: 8 Blocs IO: 4096 Dispositif de fichier régulier: FD00H / 64768D Inode: 18356857 Liens: 1 Accès: (0664 / -rw-rw-r--) UID: (1001 / John) GID: (1001 / JOHN) Context: Uncifined_U: Object_R: Default_T: S0 Access: 2020-10-04 18:32:24.433075710 +0200 Modifier: 2020-10-04 18:32:24.433075710 +0200 Changement: 2020-10-04 18:32:24.433075710 +0200 Naissance: -

Puisque les deux sont membres du rasétisation groupe, ils peuvent lire le contenu du répertoire, et comme leurs deux notes sont lisibles dans le monde, ils peuvent tous deux se lire
des dossiers.

$ Cat / Student_Projects / Rocket_science / General_Project.notes texte

Le problème se pose quand John aimerait ajouter quelques notes sur SarahFichier de données important:

$ echo "Quelques commentaires" >> / Student_projects / Rocket_science / General_project.Notes -Bash: / Student_Projects / Rocket_science / General_Project.Remarques: autorisation refusée

En effet, ils ne peuvent pas travailler sur les fichiers de l'autre, les lire seulement. Maintenant Sarah pourrait définir la propriété du groupe de son dossier à leur groupe commun, résolvant ainsi le problème. Mais pourquoi aurait-elle besoin
qu'avec chaque fichier, si nous obtenions le setgid pour nous aider?

Définition de l'indicateur SetGid

Pour définir l'indicateur SetGid, nous utilisons chod:

# Chmod G + S / Student_Projects / Rocket_science

Remarquez le drapeau «S» aux autorisations Grop (définie comme audacieuse pour la clarté):

# Stat / Student_Projects / Rocket_Science Fichier: / Student_Projects / ROCKET_SCIENCE Taille: 53 Blocs: 0 Bloc IO: 4096 Directory Device: FD00H / 64768D Inode: 17789698 Liens: 2 Accès: (2770 / DRWXRWs---) Uid: (0 / root) gid: (1003 / rocketEngineers) Contexte: Unconfined_u: object_r: default_t: s0 Access: 2020-10-04 18:32:29.389167450 +0200 Modifier: 2020-10-04 18:32:24.433075710 +0200 Changement: 2020-10-04 18:34:04.449927062 +0200 Naissance: -

Tester et vérifier les résultats

Maintenant Sarah peut partager ses nouvelles notes de recherche:

$ conclusions de chat.Txt Rocket a besoin d'ailes $ conclusions CP.txt / student_projects / rocket_science / $ stat / student_projects / rocket_science / résultats.Fichier TXT: / Student_Projects / Rocket_Science / Résultats.TITME TXT: 19 blocs: 8 Blocs IO: 4096 Dispositif de fichier ordinaire: FD00H / 64768D Inode: 18999000 Liens: 1 Accès: (0664 / -rw-rw-r--) UID: (1002 / Sarah) GID: ( 1003 / RocketEngineers) Contexte: Uncifined_U: Object_R: Default_T: S0 Accès: 2020-10-04 18:35:15.195236593 +0200 Modifier: 2020-10-04 18:35:15.195236593 +0200 Changement: 2020-10-04 18:35:15.195236593 +0200 Naissance: -


La propriété du groupe est définie au groupe du répertoire parent setgid en place. Qui provoquera John Pour pouvoir commenter les nouvelles notes de recherche:

$ echo "Vérifié!">> / Student_projects / Rocket_science / Résultats.txt $ cat / étudiant_projects / rocket_science / Résultats.Txt Rocket a besoin d'ailes vérifiées!

Et avec cela, nous avons terminé notre objectif de création d'un répertoire de collaboration pour un groupe d'utilisateurs. Nous pourrions le faire pour d'autres groupes avec la méthode ci-dessus, séparant les données de différents projets par
Autorisations, donc un membre d'un groupe ne peut pas supprimer accidentellement des données d'un autre projet.

# Titre vidéo: Travailler dans un répertoire Setgid
# Description de la vidéo: modification des fichiers d'autres utilisateurs dans un répertoire setgid
# Nom du fichier vidéo: rhcsa_setgid.webm

Travailler dans un répertoire SetGid - Édition des fichiers d'autres utilisateurs dans un répertoire SETGID

Conclusion

Sous les autorisations strictes GNU / Linux et les droits de propriété, setgid est un moyen simple de permettre aux utilisateurs du système d'interagir avec les fichiers de l'autre de manière sécurisée, permettant un travail de groupe
sans utiliser une solution externe lourde, ni gâcher les groupes initiaux de l'utilisateur et les autorisations. Dans l'exemple ci-dessus, nous n'avions pas besoin de toucher les répertoires domestiques des utilisateurs, ni leur système
Autorisations, nous venons de créer un endroit spécial où ils peuvent partager ce dont ils ont besoin.

Des exercices

  1. Créer plusieurs répertoires de projet avec différents groupes. Vérifiez si les membres d'un projet peuvent lire les fichiers d'un autre projet.
  2. Créer un répertoire transversal, où tout membre du projet a accès à.
  3. Créer un projet croisé lecture seulement Répertoire, où un seul projet (gestion de projet) peut écrire, mais les membres de tous les projets peuvent lire.

Tutoriels Linux connexes:

  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Choses à installer sur Ubuntu 20.04
  • Masterring Bash Script Loops
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Gestion de la saisie des utilisateurs dans les scripts bash
  • À quelle fréquence devez-vous redémarrer votre serveur Linux?
  • Téléchargement Linux
  • Comment créer des sauvegardes incrémentielles et différentielles avec du goudron
  • Fichiers de configuration Linux: 30 premiers