Avouons-le :le système de fichiers Linux peut être complexe. Ajoutez des systèmes de fichiers distants montés, des supports amovibles et tous les répertoires spécifiques au serveur que vous avez créés, et vous ou vos utilisateurs pouvez avoir du mal à vous rappeler exactement où un fichier donné est stocké. C'est là que le find
La commande entre en jeu. Elle vous permet de rechercher des fichiers ou des répertoires en fonction de divers critères. Je vais faire un examen de base de find
ci-dessous, mais l'objectif de cet article est un peu différent :rechercher des ressources par autorisations.
Pourquoi dois-je rechercher par autorisations ?
- Audit de sécurité
- Résoudre les problèmes d'accès des utilisateurs
- Résoudre les problèmes d'accès aux applications
Exemple rapide de recherche par nom
Il existe d'autres articles sur Enable Sysadmin qui couvrent le find
commander efficacement. Je vais cependant résumer rapidement la commande ici.
Syntaxe :
find (where to search) (what to search for)
Exemple :
# find /etc -name rsyslog
# find /home/user01 -type d
Cependant, cet article se concentre sur l'utilisation de -perm
option, qui recherche en fonction des paramètres d'autorisations.
Mode absolu versus mode symbolique
Rappelez-vous que les autorisations sont définies en utilisant le chmod
commande. Le chmod
La commande reconnaît à la fois le mode absolu et le mode symbolique. Consultez mon article récent Comment gérer les autorisations Linux pour les utilisateurs, les groupes et autres pour un examen de la gestion de l'accès aux ressources, y compris les deux modes. Le find
La commande reconnaît également l'un ou l'autre mode, vous pouvez donc utiliser celui qui vous vient le plus naturellement. Pour moi, c'est le mode absolu. Vous devez vous rappeler quelques éléments sur le mode absolu et le mode symbolique pour utiliser efficacement le find -perms
commande.
Mode absolu
Le mode absolu utilise des valeurs octales pour représenter les autorisations. Les valeurs sont répertoriées dans l'ordre selon l'autorisation à attribuer à l'utilisateur, au groupe et à tous les autres.
Par exemple :
# chmod 764 file1
Définit l'utilisateur avec 7 (rwx), groupe avec 6 (rw), et d'autres avec 4 (r) pour file1
.
Mode symbolique
Le mode symbolique utilise des symboles pour représenter les niveaux d'accès, et il utilise des opérateurs mathématiques pour donner (+ ) ou supprimer (- ) autorisations.
Par exemple :
# chmod o+rw file1
Donne les autres identité lue et écrire vers file1
.
Rechercher les autorisations de ressources en utilisant le mode absolu
La recherche d'autorisations la plus fondamentale n'utilise aucun paramètre supplémentaire. La déclaration se lit comme "trouver une ressource avec ces autorisations."
Par exemple :
# find /etc -perm 777
La commande est :Rechercher le /etc
répertoire de ressources avec le 777 niveau d'accès (rwx pour toutes les identités).
L'exemple ci-dessus ne trouve que les ressources avec exactement l'autorisation spécifiée, ni plus ni moins. Et si vous avez besoin d'un peu plus de flexibilité ? Il y a deux paramètres supplémentaires qui peuvent être très utiles. Le premier est le -
caractère (tiret), et le second est le /
caractère (barre oblique). Regardons les deux.
Rechercher par -
L'utilisation du -
signifie "au moins ce niveau d'autorisation est défini, et toutes les autorisations supérieures."
Exemple :
# find . -perm -644
Cet exemple affiche toutes les ressources du répertoire actuel avec au moins 644 autorisations.
Rechercher par /
L'utilisation du /
l'option signifie "l'une des autorisations répertoriées est définie."
Exemple :
# find . -perm /644
Cet exemple affiche les ressources avec 644 ou des autorisations supérieures.
Rechercher les autorisations de ressources en utilisant le mode symbolique
Le mode symbolique utilise le ugo symboles (utilisateur, groupe, autres), rwx symboles (lire, écrire, exécuter) et opérateurs mathématiques (tels que + ou - ) pour définir les autorisations.
Rechercher par -
Le -
L'option fonctionne de la même manière en mode symbolique que ci-dessus en mode absolu. Il affiche les ressources avec "au moins ce niveau d'accès".
Exemple :
# find -perm -u+w,g+w
Rechercher par /
Le /
fonctionne également de la même manière en mode symbolique. Il affiche les ressources avec "toutes les autorisations répertoriées".
Exemple :
# find -perm /u+w,g+w
Les autorisations standard Linux sont très courantes et vous savez maintenant comment rechercher des ressources avec un niveau d'accès donné configuré. Cependant, Linux profite également des autorisations spéciales . Le find
La commande peut également afficher ces autorisations.
Rechercher des ressources avec des autorisations spéciales configurées
Les autorisations spéciales Linux définissent des contrôles d'accès supplémentaires sur les ressources. Il existe trois autorisations spéciales :Définir l'ID utilisateur (SUID), Définir l'ID de groupe (SGID) et Sticky Bit. Les détails de chacun sortent du cadre de cet article, mais permettez-moi de résumer rapidement :
Autorisation spéciale | Description |
SUID | Un fichier est exécuté par un utilisateur avec l'identité du propriétaire, même si cet utilisateur n'est pas le propriétaire |
SGID | Le contenu d'un répertoire hérite automatiquement de l'association de groupe du dossier parent (idéal pour les répertoires partagés par les équipes de projet) |
Bout collant | Le fichier se charge automatiquement en mémoire et ne peut être ni supprimé ni modifié par une personne autre que le propriétaire |
Consultez cet article pour plus d'informations sur les autorisations spéciales.
Les autorisations spéciales sont configurées à l'aide d'un quatrième bit (le plus à gauche) :
- SUID =4
- SGID =2
- Bloc collant =1
Astuce :La sortie de ls -l
la commande affichera un s dans le champ exécutable pour l'utilisateur si SUID est configuré, un s dans le champ exécutable du groupe si SGID est configuré, et un T ou t si le Sticky Bit est défini (selon que l'exécution est également définie).
Le contenu suivant couvre la recherche de fichiers avec des autorisations spéciales spécifiques configurées.
Rechercher des fichiers avec SUID configuré
Pour trouver les fichiers où le niveau d'accès SUID est défini, utilisez le -perm
option, mais incluez le quatrième chiffre. SUID a une valeur octale de 4 .
Par exemple, pour rechercher des ressources avec le SUID configuré :
# find /usr/bin -perm 4755
Rechercher des fichiers avec SGID configuré
Vous pouvez utiliser la même syntaxe pour afficher les ressources avec l'autorisation SGID définie en utilisant la valeur octale SGID de 2 .
Par exemple, pour rechercher des ressources avec le SGID configuré :
# find /usr/bin -perm 2755
Rechercher des fichiers avec le Sticky Bit configuré
Enfin, vous pouvez utiliser la valeur octale de 1 pour afficher les ressources avec le Sticky Bit configuré.
Voici un exemple de Sticky Bit :
# find /etc -perm /1444
Remarque :Le -
et /
les paramètres fonctionnent de la même manière avec les autorisations spéciales qu'avec les autorisations standard.
[ D'autres lecteurs ont apprécié : Linux sysadmin basics :User account management ]
Exemples de bonus
Voici quelques commandes supplémentaires qui pourraient être utiles pour afficher les autorisations. Pendant que j'écrivais l'article, je n'arrêtais pas de penser, Attendez, qu'en est-il de ça ? puis en ajoutant des exemples bonus. Voici donc plusieurs commandes supplémentaires pour l'audit des autorisations.
Bonus 1 :Utilisez -not pour annuler les résultats
Vous pouvez utiliser le -not
option avec find
pour spécifier tout ce qui ne correspond pas aux critères donnés.
Le premier exemple montre un find
normal tentative, et le second affiche find
avec -not
.
# find /etc/network -perm 777
L'exemple ci-dessus affiche les ressources dans /etc/network
que fait avoir 777 autorisations configurées.
# find /etc/network -not -perm 777
Cet exemple affiche les ressources à l'intérieur de /etc/network
qui ont des autorisations autres que 777 configuré.
Bonus 2 :Définissez les autorisations en utilisant find et chmod
L'un des avantages de find
est qu'il inclut une fonction d'exécution. Vous pouvez combiner cela avec des commandes de suivi, telles que xargs
, rm
, ou chmod
.
# find -perm -111 -exec chmod -R 777 {} \;
Dans cet exemple, le {}
les caractères représentent les résultats de la find
commande, et le \;
les caractères représentent une terminaison du chmod
commande.
Avertissement :Faites attention à comprendre exactement quel sera l'effet de votre exécution combinée "recherche + autres commandes". Une faute de frappe pourrait facilement find
tous les fichiers dans /etc
puis essayez de les supprimer ou de configurer des autorisations qui empêchent les utilisateurs légitimes d'accéder à leurs répertoires personnels.
Bonus 3 :Afficher les autorisations en utilisant ls et grep
Parfois, vous n'avez pas besoin de la fonctionnalité avancée de find
commande. Au lieu de cela, vous avez juste besoin d'un affichage rapide et facile des autorisations spécifiques. Dans ce cas, fiez-vous au ls
et grep
commandes.
Exemple :
# ls -l | grep rwxrw-r--
Cette commande affiche tout le contenu du répertoire avec les autorisations spécifiées.
Bonus 4 :Afficher les autorisations ACL
Le find
La commande n'affiche pas facilement les fichiers avec les autorisations de la liste de contrôle d'accès (ACL) appliquées. Dans ce cas, utilisez le getfacl
commande à la place.
Exemple :
# getfacl file1
Voir Une introduction aux listes de contrôle d'accès Linux (ACL) pour plus d'informations sur les listes de contrôle d'accès.
Récapitulez
Le find
La commande est un utilitaire pratique pour afficher les répertoires ou les fichiers que vous devez localiser. Cependant, la recherche peut également être un excellent outil de sécurité car elle affiche les répertoires et les fichiers avec des autorisations spécifiées. En tant qu'administrateur système, vous pouvez utiliser ces informations pour vous assurer que les ressources du serveur sont définies conformément aux politiques de sécurité de votre entreprise. N'oubliez pas que vous pouvez utiliser le >>
redirecteur pour documenter ces autorisations. Un tel document peut être utilisé comme base de référence des autorisations pour les audits futurs.
[ Vous pensez à la sécurité ? Consultez ce guide gratuit pour renforcer la sécurité du cloud hybride et protéger votre entreprise. ]