Maison  >  Article  >  Tutoriel système  >  Explication détaillée du principe de fonctionnement du shell et des autorisations Linux

Explication détaillée du principe de fonctionnement du shell et des autorisations Linux

王林
王林avant
2024-02-09 14:39:13634parcourir

Linux, à proprement parler, est le cœur d'un système d'exploitation. En d’autres termes, les utilisateurs ordinaires ne peuvent pas appeler directement le noyau. Afin de communiquer avec le core, il faut passer par le programme "shell" du core, également appelé shell. Shell est un interpréteur de ligne de commande qui reçoit les commandes saisies par l'utilisateur et les convertit en codes d'opération exécutés par le système. Shell peut appeler différentes fonctions système pour effectuer différentes opérations en fonction du type de commande. Par conséquent, nous pouvons utiliser Shell pour exécuter diverses commandes et opérations afin de contrôler et de gérer le système. En bref, le Shell agit comme un pont entre l'utilisateur et le noyau sous-jacent.

Comment comprendre ? Pourquoi ne pouvons-nous pas utiliser directement le noyau ?

«

D'un point de vue technique, la définition la plus simple de Shell : interpréteur de commandes (command Interpreter) comprend principalement :

将使用者的命令翻译给核心(kernel)处理。
同时,将核心的处理结果翻译给使用者。
shell 运行原理和 Linux 权限详解

«

Remarque : shell est le nom collectif de tous les programmes shell, et bash est un shell spécifique. Par exemple : shell centos 7 : bash

  • Par rapport à l'interface graphique de Windows, lorsque nous utilisons Windows, nous n'utilisons pas directement le noyau Windows, mais cliquons sur l'interface graphique pour terminer nos opérations (par exemple, pour accéder au lecteur D, nous double-cliquons généralement sur la lettre du lecteur D. Ou exécutez une application).
  • Le shell a la même fonction pour Linux, analysant principalement nos instructions et analysant les instructions du noyau Linux. Les résultats des commentaires sont exécutés via le noyau et analysés pour l'utilisateur via le shell.
  • Comment fonctionne la coque
shell是做命令行解释的
对系统有危害性的命令会被阻止从而保护操作系统
其好处为子进程出现任何问题都不会影响父进程shell
  • Aide à la compréhension :
  • Si vous êtes un programmeur ennuyeux et timide, alors Shell est comme un entremetteur
  • Le noyau du système d’exploitation est la jolie fleur de votre village qui fait battre votre cœur.
  • Vous êtes tombé amoureux de Xiaohua, mais vous êtes trop gêné pour l'avouer directement, alors laissez votre famille trouver un entremetteur pour vous aider à proposer le mariage
  • Vous communiquez directement avec l'entremetteur sur tout, et l'entremetteur transmettra vos réflexions à Xiaohua
  • Et nous avons découvert que le nom de famille de l’entremetteuse était Wang, nous l’avons donc appelée Wang Po, ce qui correspond à la bash que nous utilisons souvent.
  1. Autorisations Linux

2.1 La notion d'autorisations

  • Il existe deux types d'utilisateurs sous Linux : le super utilisateur (root) et l'utilisateur ordinaire.
  • Super utilisateur : peut tout faire sous le système Linux sans restrictions
  • Utilisateurs ordinaires : faites des choses limitées sous Linux.
  • L'invite de commande du superutilisateur est "#" et l'invite de commande de l'utilisateur ordinaire est "$".
shell 运行原理和 Linux 权限详解
  • Commande de changement d'utilisateur

Commande : su [nom d'utilisateur]

Fonction : Changer d'utilisateur.

«

Par exemple, pour passer de l'utilisateur root à l'utilisateur normal, utilisez su user. Pour passer de l'utilisateur ordinaire à l'utilisateur root, utilisez suroot (root peut être omis). À ce stade, le système vous demandera de saisir le mot de passe de l'utilisateur root.

shell 运行原理和 Linux 权限详解
  • Passer à root : utilisez su -, nous pouvons passer à l'utilisateur root (entrez le mot de passe du compte root à ce moment, le mot de passe ne sera pas affiché à l'écran)
  • Revenir à l'utilisateur normal : utilisez su – username pour revenir à l'utilisateur normal (vous n'avez pas besoin de saisir de mot de passe pour le moment, mais nous vous déconseillons de revenir en arrière comme ceci, car lors de l'utilisation de la commande su –, plus des processus bash seront créés)
  • Il est recommandé de revenir à l'utilisateur normal : entrez exit ou appuyez sur Ctrl+d pour revenir à l'utilisateur normal

2.2 Gestion des autorisations

  • Que sont les autorisations

«

Les autorisations déterminent essentiellement si quelqu'un peut faire quelque chose.

  • Pour les personnes : Par exemple, je suis le propriétaire de cette maison, je peux donc entrer et sortir librement de la maison
  • Cibler les choses : je veux manger un ordinateur, je veux jouer à League of Legends avec du pain et regarder un film. Vous pouvez manger du pain, mais pas les ordinateurs. Vous pouvez manger du pain, mais vous ne pouvez pas manger d’ordinateurs. Cela inclut deux attributs :

«

Les fichiers sont affectés par les personnes et les fichiers sont affectés par leurs propres caractéristiques (propriétés des objets), donc autorisations des fichiers = personnes + attributs des objets

Attributs d'autorisation de fichier : r (lecture), w (écriture), x (autorisation d'exécution)

Personne (pas une personne spécifique, mais un rôle) : propriétaire, groupe, autre (autre)

  • Classement des visiteurs du fichier (personnes)
  • Le propriétaire du fichier et du répertoire de fichiers : u—Utilisateur (problème juridique civil chinois)
  • L'utilisateur du groupe auquel appartient le propriétaire du fichier et du répertoire de fichiers : g—Groupe (pas grand chose à dire)
  • Autres utilisateurs : o—Autres (étrangers)
  • Types de fichiers et droits d'accès (propriétés des objets)
shell 运行原理和 Linux 权限详解

"

Utilisez la commande ls -l (ll) pour distinguer le type de fichier par le caractère correspondant à la première colonne de l'attribut multi-colonnes affiché.

shell 运行原理和 Linux 权限详解

«

Il n'est pas nécessaire d'en énumérer un autre, car il est autre si ce n'est pas le propriétaire ou le groupe auquel il appartient

Aide à comprendre – propriétaire et groupe

«

Prenons un exemple simple. Au sein d'une entreprise, deux équipes de projet doivent réaliser la même tâche de code. Elles se font concurrence, mais l'entreprise ne leur fournit qu'un seul serveur. Le code qu'elles complètent nécessite de le soumettre, c'est le code. vous avez écrit, ce doit être uniquement pour vous et votre chef d'équipe de le voir, pas pour que votre groupe concurrent le voie, ce qui donne naissance à la notion de groupe d'appartenance.

shell 运行原理和 Linux 权限详解

Type de fichier

  • d : dossier
  • - : Fichier ordinaire
  • l : Lien logiciel (similaire au raccourci Windows)
  • b : Bloquer les fichiers de l'appareil (tels que le disque dur, le lecteur optique, etc.)
  • p: fichier tuyau
  • c : fichier de périphérique de caractère (tel qu'un écran et d'autres périphériques série)
  • s : fichier de socket
shell 运行原理和 Linux 权限详解
  • Autorisations de base

i. Read (r/4) : pour les fichiers, Read a l'autorisation de lire le contenu du fichier ; pour les répertoires, il a l'autorisation de parcourir les informations du répertoire

ii. Write (w/2) : pour les fichiers, Write a l'autorisation de modifier le contenu des fichiers pour les répertoires, il a l'autorisation de supprimer les fichiers dans le répertoire déplacé 

iii. Exécuter (x/1) : pour les fichiers, exécuter a l'autorisation d'exécuter le fichier ; pour les répertoires, il a l'autorisation d'entrer dans le répertoire

iv. « - » signifie que vous n'avez pas la permission

shell 运行原理和 Linux 权限详解

2.3 Méthode de représentation de la valeur d'autorisation du fichier

Représentation des personnages

Linux signifie Instructions Linux Instructions
r – – Lecture seule – w – Écrire uniquement
– – x Exécutable uniquement r w – Lisible et inscriptible
– wx Inscriptible et exécutable r – x Lisible et exécutable
r w x Lisible, inscriptible et exécutable ––– Aucune autorisation

Comment représenter les valeurs octales

Symbole d'autorisation (lire, écrire, exécuter) Octal binaire
r 4 1 0 0
w 2 0 1 0
x 1 0 0 1
r w 6 1 1 0
r x 5 1 0 1
w x 3 0 1 1
r w x 7 1 1 1
– – – 0 0 0 0
shell 运行原理和 Linux 权限详解

权限更改

$ chmod 777 text.c
$ chmod 000 text.c
$ chmod 640 text.c
shell 运行原理和 Linux 权限详解

2.4 文件访问权限的相关设置方法

chmod

  • 功能:设置文件的访问权限
  • 格式:chmod [参数] 权限 文件名
  • 常用选项:

R -> 递归修改目录文件的权限

说明:只有文件的拥有者和 root 才可以改变文件的权限

  • chmod 命令权限值得格式

① 用户表示符 +/-= 权限字符

  • +: 向权限范围增加权限代号所表示的权限
  • -: 向权限范围取消权限代号所表示的权限
  • =: 向权限范围赋予权限代号所表示的权限
    用户符号:
  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户

示例:

shell 运行原理和 Linux 权限详解

注意:chmod 可以给拥有者,所属组,其他用户同时修改权限,中间用逗号隔开

如果要修改不是自己的文件的时候需要 sudo 临时权限提升或者直接切成 root 身份

  • sudo chmod 用户表示符 +/-= 权限字符 文件名

chown

功能:修改文件的拥有者

格式:chown [参数] 用户名 文件名

实例:

$ sudo chown root test.c// 修改拥有者
$ sudo chown lighthouse test.c// 修改拥有者
$ sudo chown :lighthouse test.c// 修改所属组
$ sudo chown lighthouse:lighthouse test.c// 可以将拥有者、所属组同时修改
$ sudo chown root:root test.c// 可以将拥有者、所属组同时修改
shell 运行原理和 Linux 权限详解

chgrp

功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组

实例:

$ sudo chgrp root text.c
$ sudo chgrp lighthouse text.c
shell 运行原理和 Linux 权限详解

2.4 修改文件的掩码

umask

功能:查看或修改文件掩码

语法:umask 权限值

shell 运行原理和 Linux 权限详解

新建文件夹默认权限 = 0666

新建目录默认权限 = 0777

shell 运行原理和 Linux 权限详解

但是我们观察到,新建的文件和目录并不是默认的起始权限,这里是什么原因呢?

原因就是创建文件或目录的时候还要受到 umask 的影响。假设默认权限是 mask,则实际创建的出来的文件权限是:umask & ~umask

shell 运行原理和 Linux 权限详解
  • 我们也可以通过修改文件的 umask 码值来修改文件的权限:
shell 运行原理和 Linux 权限详解

说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为 0022,普通用户默认为 0002。

2.5 file 指令

file

功能说明:辨识文件类型。

语法:file [选项] 文件或目录…

常用选项:

-c 详细显示指令执行过程,便于排错或分析程序执行的情形。

-z 尝试去解读压缩文件的内容。

shell 运行原理和 Linux 权限详解
  1. 目录权限

面试题:进入一个目录要什么权限?

  • 可读权限: 如果目录没有可读权限,则无法用 ls 等命令查看目录中的文件内容.
  • 可写权限: 如果目录没有可写权限,则无法在目录中创建文件, 也无法在目录中删除文件.
  • 可执行权限:如果没有目录可执行权限,则无法 cd 到目录中
x
r
w
  1. 粘滞位

新发现:

就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限.我创建的一个文件, 凭什么被你一个外人可以删掉

shell 运行原理和 Linux 权限详解

结论

如果目录本身对 other 具有 w 权限,other 可以删掉任何目录下的东西
如果目录本身对 other 没有 w 权限,other 则不可以删除

我们的需求:other 可以在特定的目录下创建文件并写入,但是不想让任何人删除掉自己的文件

这里为了解决这个不科学的问题,Linux 引入了粘滞位的概念

粘滞位

语法:chmod +t 目录名

功能:给目录加上粘滞位

注意

«

Il ne peut être défini que pour les répertoires, limitant généralement les autres autorisations. Pour les répertoires avec des bits collants définis, seuls le propriétaire du fichier et l'utilisateur root peuvent le supprimer dans ce répertoire, et les autres ne peuvent pas le supprimer

Exemple :

shell 运行原理和 Linux 权限详解

«

S'il y a plusieurs personnes ou si le système dispose de beaucoup de données temporaires, tous les fichiers temporaires sont placés dans le répertoire /tmp du système. Toutes les autorisations doivent être libérées, mais si vous souhaitez uniquement que le propriétaire du fichier supprime ses propres fichiers, vous devez définir le bit collant

  1. Résumé
  • Les autorisations exécutables d'un répertoire indiquent si vous pouvez exécuter des commandes dans le répertoire.
  • Si l'annuaire n'a pas – )
  • Et si le répertoire a les autorisations -x mais pas les autorisations -r, l'utilisateur peut exécuter des commandes et accéder au répertoire. Mais parce qu'il n'y a pas d'autorisation de lecture sur le répertoire
  • Par conséquent, même si vous pouvez exécuter la commande ls dans le répertoire, vous n'êtes toujours pas autorisé à lire les documents du répertoire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer