Problèmes de principe de fonctionnement et d'autorisation du Shell sous Linux

Table des matières

1. Le principe de fonctionnement du shell

2. Le concept des autorisations Linux

2.1 Changement de compte utilisateur

2.2 Augmenter uniquement les autorisations de la commande actuelle

2.3 Ajouter des utilisateurs ordinaires à la liste de confiance

3. Gestion des autorisations Linux

3.1 Classification des visiteurs du dossier

3.2 Types de fichiers et droits d'accès

3.3 Méthode de représentation de la valeur d'autorisation des caractères

3.3.1 Méthode de représentation des personnages

3.3.2 Représentation octale

3.4 Méthodes de configuration associées pour les autorisations d'accès aux fichiers

3.4.1 Modifier les autorisations d'accès aux fichiers

3.4.2 Modifier le propriétaire d'un fichier

3.4.3 Modifier le groupe auquel appartient un fichier

3.4.4 Modifier le masque de fichier

3.5 Autorisations du répertoire

3.6 Mors collant


1. Le principe de fonctionnement du shell

Windows utilise l'interface graphique comme mode interactif, tandis que Linux utilise l'interface de ligne de commande comme mode interactif. Bien que les méthodes d'interaction de Windows et Linux soient différentes, elles sont essentiellement les mêmes. L'interface graphique et l'interface de ligne de commande permettent aux utilisateurs d'effectuer des opérations associées, et l'interface graphique et l'interface de ligne de commande sont des « programmes shell ».

À proprement parler, Linux est un noyau de système d'exploitation, appelé « noyau », mais les utilisateurs ordinaires ne peuvent pas utiliser le noyau directement, mais communiquent avec le noyau via le « programme shell » du noyau, c'est-à-dire Shell.

Shell est "l' interpréteur de ligne de commande " :

  • Traduire les commandes utilisateur vers le noyau pour traitement
  • Traduire les résultats du traitement de base aux utilisateurs

Par rapport à l'interface graphique (GUI) de Windows, l'exploitation de Windows n'exploite pas directement le noyau Windows, mais utilise l'interface graphique pour cliquer pour terminer l'opération. Shell a la même fonction pour Linux. Il analyse principalement les instructions utilisateur et les transmet au noyau Linux après analyse. Les résultats des commentaires sont ensuite exécutés via le noyau et les résultats sont analysés à l'utilisateur via Shell.

Principe de fonctionnement du shell :

  • Créez un processus enfant et laissez le processus enfant interpréter la ligne de commande
  • Tout problème dans le processus enfant n'affectera pas le processus parent Shell

Par rapport à Windows, chaque fois qu'un programme est exécuté, un processus enfant est créé, tel que WeChat et QQ. Si un problème survient dans l’un de ces processus enfants, cela n’affectera pas le processus parent.

Remarque :  Shell n'est qu'un terme général désignant tous les programmes shell. Par exemple : le programme shell de CentOS 7 s'appelle bash

2. Le concept des autorisations Linux

Il existe deux types d'utilisateurs sous Linux, à savoir le super utilisateur (root) et l'utilisateur ordinaire. Les super-utilisateurs peuvent tout faire sous Linux avec presque aucune restriction, tandis que les utilisateurs ordinaires ne peuvent généralement travailler que dans leur propre répertoire de travail (/home/xxx) et effectuer un travail limité sur le système. On peut considérer que le concept d'autorisations est utilisé pour restreindre les utilisateurs ordinaires, et que les super-utilisateurs sont presque illimités.

L'invite de commande pour le superutilisateur est "#" 

L'invite de commande pour les utilisateurs ordinaires est "$" 

2.1 Changement de compte utilisateur

 Lorsque les autorisations sont insuffisantes, vous devez passer d'un utilisateur ordinaire à un utilisateur root.

su 用户名

Pour passer d'un utilisateur ordinaire à un utilisateur root, saisissez su root puis saisissez le mot de passe du compte root. 

Passer du compte root au compte ordinaire sans saisir de mot de passe

Avis:

  • Lors du passage d'un compte normal à un compte root, la racine dans la commande peut être omise car il n'y a qu'un seul compte root.
  • Cette commande peut également être utilisée pour passer d'un utilisateur ordinaire à un autre. Il suffit de saisir le mot de passe du compte de l'utilisateur à changer.
  • Après avoir changé d'utilisateur, si vous souhaitez revenir au dernier utilisateur, vous pouvez utiliser Ctrl+D.

2.2 Augmenter uniquement les autorisations de la commande actuelle

Il est fort probable que vous n'ayez pas de compte root dans l'entreprise, mais parfois, lorsque vous ne disposez pas de suffisamment d'autorisations pour effectuer certaines opérations, vous devez temporairement élever vos autorisations.

En tant qu'utilisateur ordinaire, changez le mot de passe d'un autre utilisateur ordinaire

Mais tous les utilisateurs ne peuvent pas utiliser la commande sudo. 

La figure ci-dessus montre que l'utilisateur tmp n'existe pas dans le fichier sudoers, les autorisations de commande ne peuvent donc pas être élevées. Ce n'est qu'après avoir été ajouté à la liste de confiance par l'utilisateur root que les autorisations de commande peuvent être élevées.

2.3 Ajouter des utilisateurs ordinaires à la liste de confiance

Vous devez être sous le compte root pour effectuer cette opération

Utilisez la commande vim /etc/sudoers pour ouvrir le fichier de configuration, recherchez %wheel ALL=(ALL) ALL , puis ajoutez-le selon le cas de l'image.

Une fois l'ajout terminé, l'utilisateur peut utiliser la commande sudo, ce qui signifie qu'il a la possibilité d'élever ses privilèges.

3. Gestion des autorisations Linux

3.1 Classification des visiteurs du dossier

  • Le propriétaire des fichiers et des répertoires de fichiers ( File Owner )
  • Utilisateur du groupe du propriétaire du fichier ( le groupe auquel appartient le fichier )
  • autres utilisateurs ( autre )

Avis:

  • Pour un certain fichier, son propriétaire, son groupe et autres sont joués par le super utilisateur (root) et les utilisateurs ordinaires.
  • Sous Linux, tous les utilisateurs appartiennent à un certain groupe, même si le groupe n'a qu'un seul utilisateur (dans ce cas, le groupe est nommé d'après le nom de l'utilisateur)

Appartenance à un groupe

Dans une certaine entreprise, il y a deux équipes (Groupe A et Groupe B) développant le même projet sur le même serveur Linux (mode courses de chevaux), et vous êtes membre du Groupe A.

S'il n'y a pas de concept de groupe, une fois le fichier créé, soit seul le propriétaire peut le voir, soit tout le monde peut le voir. Dans les situations réelles, l'espoir est que le propriétaire et les membres du groupe puissent le voir, mais que les autres ne le puissent pas. Il y a donc la notion de groupe d'appartenance. Vous pouvez définir le fichier pour qu'il soit visible par le propriétaire et le groupe auquel il appartient, mais pas par les autres. Par conséquent, l’existence du groupe permet une configuration des autorisations plus flexible afin de répondre à la collaboration en équipe.

Vous pouvez utiliser la commande ll pour afficher le propriétaire et le groupe d'un fichier ou d'un répertoire de fichiers.

3.2 Types de fichiers et droits d'accès

En utilisant la commande ll, vous pouvez voir qu'il y a une chaîne de caractères devant elle, qui représente le type et les attributs du fichier.

Cette chaîne de caractères est composée de 10 caractères. Le premier caractère représente le type de fichier du fichier.

  • - : Fichier ordinaire
  • d : répertoire
  • l : fichier de lien (similaire au raccourci sous Windows)
  • b : Bloquer les fichiers de l'appareil (tels que le disque dur, le lecteur optique, etc.)
  • p : fichier de canal
  • c : fichier de périphérique de caractères
  • s : fichier de socket

Remarque :  sous Linux, le type de fichier n'a rien à voir avec le suffixe du fichier.

Les 9 caractères restants sont regroupés en groupes de trois, indiquant si le fichier possède certains attributs relatifs à son propriétaire, son groupe et autres.

Le premier caractère de chaque groupe de trois caractères indique si le fichier possède un attribut lisible, le deuxième représente s'il possède un attribut accessible en écriture et le troisième représente s'il possède un attribut exécutable. S'il a un attribut lisible, le caractère en première position est r ; s'il a un attribut inscriptible, le caractère en deuxième position est w ; s'il a un attribut exécutable, le caractère en troisième position est x. Si une certaine position est le caractère - , cela signifie qu'il n'y a pas d'attribut pour la position correspondante.

Exemple

Le fichier data.txt est un fichier ordinaire. Le propriétaire et le groupe auquel le fichier appartient peuvent y lire et y écrire, mais les autres membres du fichier n'ont que des droits de lecture sur celui-ci. 

3.3 Méthode de représentation de la valeur d'autorisation des caractères

3.3.1 Méthode de représentation des personnages

La méthode de représentation lorsque la commande ll imprime la valeur d'autorisation du fichier est la représentation de caractères.

3.3.2 Représentation octale

La position de chaque caractère dans la représentation des caractères ne représente que deux résultats possibles (vrai ou faux), donc ces trois caractères peuvent être convertis en trois bits binaires, puis convertis en un nombre octal pour la représentation.

3.4 Méthodes de configuration associées pour les autorisations d'accès aux fichiers

3.4.1 Modifier les autorisations d'accès aux fichiers

méthode de définition des symboles

chmod [who] [+-=] [mode] 文件名

Options couramment utilisées : -R modifier récursivement les autorisations des fichiers répertoire

  • + : Ajouter l'autorisation représentée par le code d'autorisation à la portée de l'autorisation
  • - : Annuler l'autorisation représentée par le code d'autorisation de la plage d'autorisations
  • = : attribuez l'autorisation représentée par le code d'autorisation à la portée de l'autorisation.

Mode

  • vous : propriétaire
  • g : groupe auquel il appartient
  • o:autre
  • a : tous les utilisateurs

Ajouter un autre accès en écriture au fichier tmp.txt

 méthode de réglage numérique

chmod [numbers] filename

Convertissez le nombre octal correspondant en binaire, puis définissez la valeur d'autorisation correspondante

  • 0 : Aucune autorisation
  • 1 : Exécuter les autorisations
  • 2 : autorisation d'écriture
  • 4 : Autorisation de lecture

Définissez les autorisations pour le fichier stat1.cpp sur -rw-rw-r--

3.4.2 Modifier le propriétaire d'un fichier

chown 文件所有者 文件名

Options couramment utilisées :  -R modifier récursivement le propriétaire des fichiers de répertoire 

Modifiez le propriétaire du fichier stat1.cpp en gg-bruse

Remarque :  La modification du propriétaire du fichier nécessite un utilisateur root. S'il s'agit d'un utilisateur ordinaire, les autorisations doivent être élevées.

3.4.3 Modifier le groupe auquel appartient un fichier

chown 文件所有者:文件所属组 文件名
chgrp 文件所属组 文件名

Modifiez le propriétaire et le groupe du fichier stat1.cpp en gg-bruse

Modifiez le groupe de fichiers de stat1.cpp en gg-bruse

3.4.4 Modifier le masque de fichier

Afficher les fichiers et répertoires nouvellement créés, chacun avec ses propres autorisations par défaut

Les autorisations par défaut pour les nouveaux fichiers sont 0666 et les autorisations par défaut pour les nouveaux répertoires sont 0777. Le premier 0 est lié aux autorisations spéciales. Il n'est pas nécessaire d'entrer dans les détails ici. Les trois chiffres suivants sont la représentation numérique octale des autorisations, qui sont traduites en représentations de caractères.

Cependant, les valeurs d'autorisation des fichiers et répertoires réellement créés ne sont pas les mêmes que les valeurs traduites. La raison en est que la création de fichiers et de répertoires est également affectée par umask. En supposant que l'autorisation par défaut est masque, l'autorisation réellement créée les autorisations de fichier sont : masque&(~umask)

umask 权限值 #使用umask指令可以查看或修改文件掩码

Les valeurs d'autorisation des fichiers et répertoires réellement créés nécessitent une conversion supplémentaire pour être obtenues. Convertissez d’abord les trois derniers chiffres octaux du masque en binaire, puis inversez-les au niveau du bit.

Ensuite, effectuez une opération ET au niveau du bit sur les valeurs d'autorisation par défaut précédentes du nouveau fichier et la valeur d'autorisation par défaut du nouveau répertoire respectivement. Ce que nous obtenons, ce sont les valeurs d'autorisation des fichiers et répertoires que nous avons créés.

On peut également comprendre que les bits d'autorisation qui apparaissent dans l'umask n'apparaîtront pas dans les autorisations finales.

Remarque :  Le masque par défaut pour les super-utilisateurs est 0022 et le masque par défaut pour les utilisateurs ordinaires est 0002.

3.5 Autorisations du répertoire

  • Autorisations en lecture :  si l'utilisateur ne dispose pas d'autorisations en lecture pour le répertoire, le contenu du fichier dans le répertoire ne peut pas être affiché via la commande ls.
  • Autorisations en écriture :  si l'utilisateur ne dispose pas d'autorisations en écriture pour le répertoire, il ne peut pas créer ou supprimer de fichiers dans le répertoire via une série d'instructions.
  • Autorisations exécutables :  Si l'utilisateur ne dispose pas d'autorisations exécutables pour le répertoire, il ne peut pas accéder au répertoire via la commande cd.

À ce stade, un problème se pose : tant que l'utilisateur dispose d'autorisations d'écriture pour un certain répertoire, le fichier dans le répertoire peut être supprimé, que l'utilisateur dispose ou non d'autorisations d'écriture pour le fichier, ce qui est évidemment déraisonnable. Comme indiqué ci-dessous, j'ai des autorisations d'écriture pour le répertoire actuel mais je n'ai pas d'autorisations d'écriture pour le fichier test.txt, mais la suppression est toujours réussie.

Afin de résoudre ce problème déraisonnable, Linux a introduit le concept de sticky bits

3.6 Mors collant

chmod +t 目录名

Après avoir ajouté le sticky bit à un répertoire, le dernier chiffre de la valeur d'autorisation du répertoire devient le caractère "t".

À l'heure actuelle, même si un autre utilisateur dispose d'autorisations d'écriture sur le répertoire, il ne peut pas supprimer les fichiers du répertoire.

Lorsqu'un répertoire est défini sur le sticky bit, les fichiers du répertoire ne sont accessibles que par :

  • Suppression du super utilisateur
  • Le propriétaire du répertoire est supprimé
  • Le propriétaire du fichier est supprimé.

Remarque :  Bien que le sticky bit soit ajouté au répertoire, si l'utilisateur dispose d'autorisations d'écriture sur le répertoire, cela n'affectera pas la création de fichiers dans le répertoire.

Je suppose que tu aimes

Origine blog.csdn.net/GG_Bruse/article/details/131706942
conseillé
Classement