Cet article présente principalement les principes de base du contrôle des autorisations dans les systèmes Linux.
Modèle de sécuritéDans les systèmes Linux, toutes nos opérations sont essentiellement des processus accédant aux fichiers. Pour accéder aux fichiers, nous devons d'abord obtenir les autorisations d'accès correspondantes, et les autorisations d'accès sont obtenues via le modèle de sécurité du système Linux.
Pour le modèle de sécurité des systèmes Linux, nous devons connaître les deux points suivants :
Notez que MAC et DAC ne s'excluent pas mutuellement. DAC est le modèle de sécurité le plus basique et est généralement le mécanisme de contrôle d'accès le plus couramment utilisé que Linux doit avoir. MAC est un mécanisme de sécurité amélioré construit sur DAC et appartient aux modules facultatifs. Avant l'accès, les systèmes Linux effectuent généralement d'abord une vérification DAC. En cas d'échec, l'opération échoue directement ; si elle réussit la vérification DAC et que le système prend en charge le module MAC, il effectue ensuite une vérification des autorisations MAC.
Pour distinguer les deux, nous appelons le système Linux qui prend en charge MAC SELinux, ce qui signifie qu'il s'agit d'un système à sécurité renforcée pour Linux.
Ici, nous parlerons du modèle de sécurité DAC dans les systèmes Linux.
Modèle de sécurité DACLe contenu principal de DAC est le suivant : Sous Linux, un processus a théoriquement les mêmes autorisations que l'utilisateur qui l'exécute. Tout ce qui est impliqué est centré autour de ce noyau.
Contrôle des informations d'identification des utilisateurs et des groupesInformations sur l'utilisateur, le groupe et le mot de passe
Enregistrez les informations sur les utilisateurs et les groupes via /etc/passwd et /etc/group, et enregistrez les mots de passe et leurs informations de modification via /etc/shadow, avec un enregistrement par ligne.
Les utilisateurs et les groupes sont représentés respectivement par UID et GID. Un utilisateur peut appartenir à plusieurs groupes en même temps. Par défaut, chaque utilisateur doit appartenir à un GID avec le même UID et le même nom.
Pour /etc/passwd, chaque champ d'enregistrement est le nom d'utilisateur : Mot de passe (crypté et enregistré dans /etc/shadow) : UID : GID (UID par défaut) : Commentaire de description : Répertoire personnel : Shell de connexion (le premier programme en cours d'exécution)
Pour /etc/group, les champs de chaque enregistrement sont : Nom du groupe : Mot de passe (généralement il n'y a pas de mot de passe de groupe) : GID : Liste des utilisateurs des membres du groupe (liste des UID des utilisateurs séparés par des virgules)
Pour /etc/shadow, les champs de chaque enregistrement sont : Nom de connexion : Mot de passe crypté : Heure de la dernière modification : Intervalle de temps minimum : Intervalle de temps maximum : Temps d'avertissement : Temps d'inactivité :
Exemple
Voici des exemples d'informations sur les utilisateurs et les groupes. Les informations de mot de passe dans /etc/shadow sont cryptées et stockées, aucun exemple n'est fourni.
Informations sur le contrôle des autorisations de fichiersType de fichier
Les types de fichiers sous Linux sont les suivants :
Groupe de contrôle d'accès
Divisé en trois groupes pour le contrôle :
Autorisations configurables
Les valeurs d'autorisation courantes (mais pas toutes) sont indiquées ci-dessous, notamment :
Exemple
Vous pouvez vérifier son type de fichier et ses autorisations via ls -l, et modifier les autorisations via chmod.Par exemple,
Dans la sortie, le premier caractère indique le type de fichier, y compris le fichier ordinaire (-), le fichier de répertoire (d), le ou les fichiers socket, le fichier pipe (p), le fichier de caractères (c) et le fichier de bloc (b). , fichier de lien (l); La partie -rwxr-xr-x à partir du deuxième caractère représente le bit d'autorisation du fichier, avec un total de 9 bits.
Pour le fichier /usr/bin/qemu-i386, la signification de ce contrôle d'autorisation est :
Autorisations définies pour test/, test2/, test3/ :
Autorisations de processus
Pour les processus, les attributs suivants sont liés aux autorisations d'accès aux fichiers :
Exemple
Nous pouvons utiliser ps et top pour sélectionner et afficher les processus avec euid et ruid. Ou utilisez top pour afficher l'euid et le ruid du processus
Exemple vu en haut :
Entrez d'abord en haut pour obtenir quelque chose comme ce qui suit
Ici, l'option -d est utilisée pour étendre la fréquence de rafraîchissement de top pour faciliter l'utilisation. Comme on peut le voir ici, seul le champ USER représente l'identifiant utilisateur effectif du processus correspondant.
Ouvrez les options d'affichage de la lecture de l'identifiant utilisateur :
a. Pendant que la commande top est en cours d'exécution, entrez f et vous verrez une ligne similaire à la suivante :
b. Entrez c pour activer le commutateur d'affichage du nom d'utilisateur réel.
c. Enfin, appuyez sur Retour pour revenir en haut et vous verrez l'option d'identification réelle de l'utilisateur. Entrez « o » à ce moment pour ajuster l'ordre des colonnes. Enfin, nous pouvons voir le résultat incluant « l'identifiant d'utilisateur effectif » et « l'identifiant d'utilisateur réel » comme suit :
Stratégie de contrôle des autorisations pour les fichiers d'accès aux processusRègles
Stratégie de contrôle approximatif des autorisations pour les fichiers d'accès aux processus
Pour un processus d'accès aux fichiers, la chose la plus importante est euid, donc ses attributs d'autorisation sont tous centrés sur euid.
Modifier les attributs d'autorisation via l'exécution du fichier exécutable
Lors de l'appel d'un fichier exécutable via exec :
Comme suit :
Modifier les attributs d'autorisation via l'appel système setuid(uid)
Lors de la modification des attributs d'autorisation via setuid(uid) :
Exemple
Quelques exemples particuliers supplémentaires :
set-user-id
Comme mentionné précédemment, la signification de cette sortie est que, pour le fichier /usr/bin/sudo,
Après ce paramètre, le propriétaire dispose des autorisations de lecture, d'écriture et d'exécution, ce qui n'est pas différent. Mais pour les processus utilisateur ordinaires qui n’appartiennent pas au groupe racine, c’est très différent.
Lorsqu'un processus utilisateur ordinaire exécute la commande sudo, il obtient les autorisations d'exécution via le x dans les autres, puis utilise le s dans l'utilisateur pour disposer temporairement des autorisations du propriétaire (racine) du fichier exécutable sudo, c'est-à-dire des super autorisations .
C'est également pourquoi les utilisateurs ordinaires peuvent exécuter de nombreuses commandes avec des privilèges d'administrateur via la commande sudo.
installer le stick-bit
Après ce paramètre, tout le monde dispose d'autorisations de lecture, d'écriture et d'exécution pour le répertoire /tmp, ce qui n'est pas différent. Cependant, le sticky bit t est placé dans l'autre partie, et sa fonction est tout à fait différente.
Si le répertoire n'a pas le sticky bit défini, toute personne disposant d'autorisations d'écriture sur le répertoire peut supprimer tous les fichiers et sous-répertoires qu'il contient, même si elle n'est pas le propriétaire du fichier correspondant et n'a pas d'autorisation de lecture ou d'écriture après le répertoire ; sticky bit est défini, l'utilisateur peut Seuls les fichiers et sous-répertoires lui appartenant peuvent être écrits ou supprimés.
C'est pourquoi n'importe qui peut écrire des fichiers et des répertoires dans le répertoire /tmp, mais ne peut écrire et supprimer que les fichiers ou répertoires qui lui appartiennent.
Citer un fragment d'application du programme man pour décrire l'utilisation de set-user-id et du set-user-id enregistré
Le programme man peut être utilisé pour afficher les manuels d'aide en ligne. Le programme man peut être installé pour spécifier set-user-ID ou set-group-ID pour un utilisateur ou un groupe spécifié.
Le programme man peut lire ou écraser des fichiers à certains emplacements, ce qui est généralement configuré par un fichier de configuration (généralement /etc/man.config ou /etc/manpath.config) ou des options de ligne de commande.
Le programme man peut exécuter d'autres commandes pour traiter le fichier contenant la page de manuel affichée.
Pour éviter les erreurs de traitement, man bascule entre deux privilèges : les privilèges de l'utilisateur exécutant la commande man et les privilèges du propriétaire du programme man.
Le fil conducteur à comprendre : lorsque seul man est exécuté, les privilèges du processus sont les privilèges de l'utilisateur man. Lorsqu'un processus enfant est exécuté via man (comme une commande shell via !bash), l'utilisateur passe à l'utilisateur actuel et revient après l'exécution.
Le processus est le suivant :
Jetons un coup d'oeil à ce qui se passera si l'homme démarre une coquille :
En fait, la façon dont nous décrivons comment man utilise la fonction setuid n'est pas particulièrement correcte, car le programme peut définir l'ID utilisateur sur root À ce stade, setuid changera les trois uid en l'identifiant que vous avez défini, mais nous n'en avons besoin que. Définissez un identifiant utilisateur efficace.
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!