Sous Linux et tous les systèmes d'exploitation de type Unix, ' find ' est un utilitaire de ligne de commande qui localise les fichiers dans une ou plusieurs arborescences de répertoires. De plus, à l'aide de la commande, les utilisateurs peuvent définir des critères de recherche et des actions spécifiques sur les fichiers correspondant à la recherche. Il s'agit donc d'un utilitaire pour la hiérarchie des fichiers, où non seulement l'utilisateur peut l'exploiter pour trouver des données, mais également effectuer des opérations successives dessus.
Les utilisateurs peuvent choisir parmi plusieurs normes telles que la recherche d'un nom de fichier correspondant ou d'une plage de temps correspondant au moment où le fichier a été consulté ou modifié. Les utilisateurs peuvent rechercher des fichiers en utilisant les critères suivants qui trouvent les supports de commande - modèle de fichier, modèle de nom, date de création, propriétaire et autorisations, dossier et date de modification. Alors que l'utilitaire de commande peut rechercher des fichiers dans plusieurs répertoires, par défaut, la « commande de recherche » affiche les résultats des fichiers dans le répertoire de travail actuel.
Sur les systèmes d'exploitation de type Unix, les fichiers et les répertoires appartiennent toujours à quelqu'un. Sous Linux, soit ils sont associés à un propriétaire unique et à un groupe. Plus encore, chacun des fichiers et répertoires se voit attribuer des droits d'accès spéciaux.
Par conséquent, le programmeur doit se souvenir des deux aspects des fichiers - la propriété et les autorisations. Maintenant, que se passe-t-il si l'on veut changer la propriété ou le type d'autorisation sur un dossier ? C'est possible en utilisant la commande chown .
Il est de notoriété publique parmi les codeurs que Linux est livré avec des commandes simples, efficaces et puissantes, tout comme chown . L'expression est très avantageuse car elle permet à un utilisateur de changer la propriété d'un fichier et d'un répertoire. De même, on peut également modifier les droits d'accès d'autorisation d'un fichier ou d'un répertoire pour le propriétaire, le groupe ou d'autres personnes à l'aide de la commande chmod.
Le chown est l'une des commandes les plus utilisées, et par conséquent, nous expliquerons en détail avec des exemples comment utiliser l'expression. Sur un système, les utilisateurs attribuent la propriété et l'autorisation de sécuriser leurs données et limitent qui peut afficher ou modifier le contenu du fichier. Un fichier sous Linux a des propriétaires et des groupes .
Le propriétaire est un utilisateur qui possède certaines propriétés associées au système. Certaines des propriétés incluent l'ID utilisateur, le répertoire personnel et autres. Les codeurs peuvent choisir d'ajouter des utilisateurs dans un groupe pour une gestion efficace du système. Pendant ce temps, un groupe d'un ou plusieurs utilisateurs partageant des privilèges similaires sur le système de fichiers.
Linux est un système d'exploitation conçu pour plusieurs utilisateurs. Sous Linux, on peut définir plusieurs comptes d'utilisateurs, et tous peuvent accéder au système simultanément. Par conséquent, il est nécessaire de conserver un enregistrement des fichiers pour déterminer quelles données appartiennent à qui. D'ailleurs, Linux utilise un système de propriété où chaque fichier appartient à un utilisateur et à un groupe.
Ainsi, le créateur du fichier - Propriétaire, devient l'utilisateur, et de même, le groupe où le fichier devient le groupe actuel de l'utilisateur. Les utilisateurs et les groupes sont définis par des noms et des UID (Unique Identifier) ​​et GID (Group Identifier).
Par conséquent, lorsque vous créez un fichier, il vous appartient ainsi qu'au groupe actuel, qui est le groupe auquel vous vous êtes connecté. Généralement, le nom du groupe est le même que le nom d'utilisateur et, dans la plupart des cas, il est créé par défaut lorsque l'on crée un nouvel utilisateur sur le système. Pour modifier les valeurs de propriété, les programmeurs peuvent utiliser la commande chown . En utilisant chown , on peut changer la propriété et assigner un nouveau groupe.
Un utilisateur doit noter que seul le propriétaire a le privilège de modifier la propriété du groupe. Pendant ce temps, le changement de propriété de l'utilisateur n'est possible que par root car il implique un autre utilisateur. Par conséquent, sans privilèges root, on ne peut pas forcer un autre utilisateur à adopter un fichier particulier. Avant d'apprendre à exécuter la commande chown , examinons les différents types de propriété et d'autorisations.
Propriété et autorisations
Bien que nous ayons discuté de la propriété des fichiers, il est également essentiel de savoir ce que signifient les autorisations de propriété ?
Le système d'exploitation Linux est conçu pour prendre en charge un grand nombre d'utilisateurs en même temps, et par conséquent, le système doit savoir qui est autorisé à accéder à un fichier. Il fournit non seulement des valeurs de propriété, mais définit également comment un utilisateur peut y accéder et s'il est autorisé à y apporter des modifications ou non.
Généralement, les règles d'accès sont appelées autorisations et il existe trois types d'autorisations de fichiers. Comprenons chacun d'eux et savons ce qu'ils signifient.
- Utilisateur - Les autorisations d'utilisateur concernent un seul utilisateur qui détient un accès distinct au fichier. Généralement, cet utilisateur particulier est connu comme le propriétaire du fichier.
- Groupe - L'autorisation de groupe est destinée à un groupe d'utilisateurs ayant accès à un fichier et est connue sous le nom de « groupe propriétaire ».
- Autre - L'autre autorisation s'applique à tous les autres utilisateurs du système que le propriétaire et le groupe. Dans certaines distributions, d'autres utilisateurs sont appelés le « monde ».
La plupart des descriptions de la commande chown et des exemples décrivent la version GNU/Linux.
De même, comme la propriété des données est essentielle, les autorisations d'accès jouent également un rôle important dans la sécurisation des fichiers et des répertoires. Par conséquent, Linux dispose d'autorisations qui définissent ce qu'un utilisateur peut ou ne peut pas faire. Les trois autorisations standard incluent :
- Lire - L'autorisation permet à l'utilisateur de lire des fichiers, des répertoires et des sous-répertoires .
- Écrire - Avec des autorisations d'écriture, un utilisateur peut non seulement accéder aux fichiers et aux répertoires, mais également les modifier et les supprimer. Plus encore, on peut également modifier le contenu tel que renommer ou même créer un fichier de nom dans le répertoire. Mais il faut se rappeler que tant que l'autorisation "exécuter" n'est pas donnée à l'utilisateur, la modification n'entrera pas en vigueur.
- Exécuter - L'autorisation d'exécution permet aux modifications d'être implémentées.
Pourquoi changer la propriété du fichier ?
Nous examinerons quelques situations où il pourrait être nécessaire de changer le propriétaire du fichier. Un tel cas est lorsque l'on doit transférer des fichiers entre différents systèmes d'exploitation Linux. Dans ce cas, il faut non seulement changer l'utilisateur mais aussi les propriétaires du groupe sur le nouveau système Linux.
Un autre cas se produit fréquemment lorsqu'une personne quitte une organisation et que tous les fichiers appartenant à l'employé doivent être transférés à un nouveau membre du personnel. Un utilisateur doit remplacer le propriétaire et le propriétaire du groupe par le nouveau membre de l'équipe. Une autre occurrence est lorsqu'un individu crée un script qui serait utilisé par un autre utilisateur spécifique.
Il existe de nombreuses autres situations hypothétiques dans lesquelles vous pourriez avoir besoin d'utiliser chown. Par exemple, vous créez un fichier alors que vous êtes connecté en tant que root ; par conséquent, il appartient à root. Un autre cas est celui où l'on crée un répertoire en tant que root mais souhaite qu'il soit accessible par un autre utilisateur particulier.
Groupes sous Linux
Sous Linux, un individu peut être membre de plusieurs groupes en même temps. Mais un utilisateur ne peut avoir qu'un seul "groupe actuel". Par conséquent, le groupe actuel est appelé utilisateurs GID. Comme mentionné précédemment, lorsqu'un utilisateur crée un fichier, la propriété correspond à l'UID et au GID.
Par exemple, si John crée un nouveau fichier, il appartient à John et à son groupe actuel. Si John souhaite transférer la propriété, il doit exécuter la commande chown . Il faut se rappeler que seul root peut utiliser la commande pour changer le propriétaire.
Chaque utilisateur a un groupe de connexion configurable, et on peut le changer en utilisant la commande usermod avec l' option -g . Ci-dessous, un exemple considérant John comme propriétaire du fichier :
sudo usermod -g newlogingroup john
Utilisez la commande id avec l'option -g pour vérifier le groupe actuel. Voici un exemple:
id -g
Résultat - 1002
Le résultat est le GID numérique d'un utilisateur. Si quelqu'un veut voir le nom du groupe, il peut saisir ce qui suit :
id -ng
Résultat - football
De même, pour voir toutes les appartenances à un groupe d'un utilisateur, il faut taper 'g' en majuscule.
id -nG
Résultat - football, sudo, groupe d'utilisateurs et équipe
Remarque : L'utilitaire de commande imprime directement le résultat sans virgule.
Les groupes ci-dessus sont tous les groupes dont John est membre. De plus, il faut se rappeler que chaque utilisateur sous Linux a un groupe privé qui ne les a que comme membres.
Alors que d'autres systèmes d'exploitation utilisent également la commande chown , mais leurs groupes fonctionnent différemment. Par exemple, il n'y a pas de groupes privés pour l'utilisateur dans macOS.
Syntaxe
Avant de passer directement à l'utilisation de l'expression chown, examinons comment la syntaxe de base prend forme.
chown [OPTION]… [OWNER][:[GROUP]] FILE…
chown [OPTION]… –reference=RFILE FILE…
Comment utiliser Chown
Le nouveau propriétaire d'un fichier est défini par la valeur - new-owner. Il prend la forme suivante :
[user[:group]]
Plus encore, on ne peut formater le nouveau propriétaire que des cinq manières suivantes :
- USER - Si l'on exécute uniquement la commande avec 'USER', seul le propriétaire du fichier change et non la propriété du groupe.
- UTILISATEUR : - Lorsqu'une commande inclut un nom d'utilisateur avec deux-points : et que le nom du groupe n'est pas spécifié, l'utilisateur devient le propriétaire et la propriété du groupe des fichiers passe au groupe de connexion de l'utilisateur.
- USER:GROUP - Lorsque l'utilisateur et le groupe sont définis, la propriété du fichier est remplacée par le nouvel utilisateur et le nouveau groupe.
- :GROUP - Dans ce cas, seul le groupe passe au groupe donné.
- : - Si seuls deux-points sont spécifiés, la propriété et le groupe du fichier restent inchangés.
Il faut aussi se rappeler que le statut de sortie pour chown est zéro. Ainsi, lorsqu'un utilisateur exécute une commande chown réussie , elle renvoie zéro. De plus, les utilisateurs peuvent afficher l'autorisation d'un fichier en exécutant simplement l'expression ci-dessous :
ls -l
Les points importants
- Les utilisateurs doivent également noter que seuls les utilisateurs disposant de privilèges sudo peuvent changer la propriété de groupe d'un fichier. Par conséquent, les propriétaires ne peuvent pas transférer la propriété du fichier à moins que le propriétaire ne soit la racine.
- On peut spécifier l'utilisateur et le groupe à la fois par nom ou par numéro.
- Le propriétaire d'un fichier ne peut changer le groupe propriétaire que s'il est membre du groupe. Cependant, les membres du groupe propriétaire peuvent désormais changer de groupe propriétaire de fichier. La racine peut remplacer le groupe propriétaire par n'importe quel groupe.
- On peut également utiliser la commande chgrp au lieu de chown car ils utilisent le même appel système.
- Seul le root peut modifier l'heure d'accès ou l'heure de modification d'un fichier.
- Il est toujours préférable d'utiliser la commande chown en tant que root ou avec sudo .
Choix
Les options de ligne de commande, également appelées commutateurs de ligne de commande, sont généralement utilisées pour transmettre des paramètres à un programme. Ils sont l'un des composants essentiels de l'expression car ils peuvent faciliter l'obtention de résultats. Plus encore, les programmeurs doivent se rappeler que la syntaxe des options de ligne de commande diffère selon les différents systèmes d'exploitation.
- -c et --changes - Il affiche uniquement les fichiers modifiés.
- -v et --verbose - Ceci affiche les informations détaillées de tous les fichiers traités.
- -f, --silent, --quiet - Il n'affiche pas la sortie et active le mode silencieux.
- --dereference - Il déférence tous les liens symboliques. Disons si un fichier est un lien symbolique pour qu'il change le propriétaire du fichier et non le lien symbolique.
- -h et - --no-dereference - C'est précisément l'opposé de --dereference, par lequel il changera le propriétaire du lien symbolique au lieu du fichier.
- --from=currentowner:currentgroup - Il changera le propriétaire ou le groupe de tous les fichiers uniquement si le propriétaire ou le groupe ou 'currentowner' ou 'groupowner.'
- --no-preserve-root - En utilisant l'option, il ne considérera pas le répertoire racine d'une manière spécifique.
- -R,--recursive - Il fonctionnera de manière récursive sur les fichiers et les répertoires.
Comment changer le propriétaire d'un fichier
On peut utiliser la commande chown , suivie du nom d'utilisateur du nouveau propriétaire et du fichier cible. Voici un exemple:
chown USER FILE
Prenons maintenant un exemple et transférons la propriété du fichier appelé "essai" à un nouvel utilisateur "John".
chown john trial
Maintenant, que se passe-t-il si l'on veut changer la propriété de plusieurs fichiers ? C'est facile! Il suffit de séparer les noms de fichiers par un "espace". Par exemple, nous allons changer la propriété du fichier appelé trial1 et du répertoire dir1 par un nouveau propriétaire nommé "John".
chown John trial1 dir1
On peut utiliser l'UID au lieu de spécifier le nom d'utilisateur. Prenons l'exemple ci-dessous et changeons la propriété du fichier nommé 'file5' en un nouveau propriétaire avec un UID - 1003. L'expression prendra la forme suivante :
chown 1003 file5
Si l'ID numérique ou l'UID existe également en tant que nom d'utilisateur, la propriété sera transférée au nom d'utilisateur. On peut éviter une telle confusion en ajoutant un préfixe de '+' à l'UID.
Modifier le propriétaire et le groupe d'un fichier
Nous avons appris comment changer le propriétaire d'un fichier. Maintenant, regardons également la commande chown pour modifier à la fois le propriétaire et le groupe d'un fichier. On peut le faire dans une seule expression en divisant le propriétaire et le groupe par deux-points (:). Voici comment la commande chown prendra la forme :
chown USER:GROUP FILE
Prenons un exemple et changeons la propriété du fichier file3 en un nouveau propriétaire nommé John et le nom de groupe 'users' :
chown john:users file3
On peut omettre le nom du groupe après les deux-points pour changer le groupe en groupe de connexion du nouveau propriétaire.
chown john: file3
Les utilisateurs peuvent également modifier le groupe d'un fichier sans modifier la propriété du fichier. L'expression pour ne changer que le groupe est très simple. Voici à quoi ressemble la commande :
chown :GROUP FILE
Le nom du groupe après les deux-points est le nouveau groupe et le fichier cible est un argument. Il faut s'assurer de ne pas laisser d'espace entre les deux-points et le nouveau nom de groupe. Vous trouverez ci-dessous un exemple qui modifie le groupe propriétaire du fichier nommé 'file3' par le nouveau groupe - contactsofjohn .
chown :contactsofjohn file3
Alors que la plupart des programmeurs utilisent couramment la commande chown , mais ce n'est pas la seule. Beaucoup peuvent également utiliser la commande chgrp pour modifier la propriété du groupe des fichiers.
Changer la propriété des liens symboliques
Par défaut, la commande chown modifie la propriété du groupe des fichiers vers lesquels dirigent les liens symboliques. En d'autres termes, le chown ne change pas le propriétaire et le groupe du lien symbolique.
Par exemple, si l'on n'utilise pas l'option récursive, alors le groupe et la propriété du 'symlink3' qui dirige vers 'var/www/file3, resteront les mêmes. Généralement, la ligne de commande renvoie l'erreur - "impossible de déréférencer 'symlink3' : autorisation refusée".
L'erreur est standard car les liens symboliques sur la plupart des distributions Linux sont protégés. Par conséquent, il refuse aux utilisateurs d'opérer sur les fichiers cibles. On peut désactiver la protection des liens symboliques, mais nous ne le recommanderons pas du tout.
Pour changer la propriété des liens symboliques, il faut utiliser le drapeau -h dans l' expression chown . L'indicateur -h signifie '-no-dereference' et garantit que la commande affecte les liens symboliques et non le fichier référencé. Voici comment l'expression prendra forme avec l'option -h.
chown -h www-data symlink3
Modifier récursivement la propriété du fichier
Jusqu'à présent, nous avons vu la plupart des exemples sur la façon de changer la propriété du fichier sur un ou plusieurs fichiers, mais voyons maintenant comment utiliser de manière récursive la commande chown sur tous les fichiers et répertoires d'un répertoire spécifique. Pour ce faire, il faut utiliser l'option -R(--recursive), et elle prendra la forme suivante :
chown -R USER:GROUP DIRECTORY
Prenons un exemple où nous modifions la propriété et le groupe de tous les fichiers et sous-répertoires sous le répertoire /var /downloads. Le nouveau propriétaire et groupe sera john-home .
chown -R john-home: /var/downloads
Si le répertoire contient des liens symboliques, il faut utiliser l'option -h en conjonction avec l'option -R. Voici un exemple de la même chose :
chown -hR john-home: /var/downloads
Quelques autres options que l'on peut utiliser sont les options -H et -L. L'option -H traverse la commande chown dans le cas où un lien symbolique pointe vers un répertoire. De même, l'option -L assure de traverser chaque lien symbolique qui est passé par l' expression chown . Il est fortement recommandé de ne pas utiliser ces options car cela risquerait de faire planter tout leur système. Une mauvaise commande créera un risque de sécurité important et, par conséquent, il est préférable d'éviter de l'utiliser.
Utiliser un fichier de référence
L'option de référence '--reference=ref_file' permet à un utilisateur de modifier l'utilisation et le groupe de propriété des fichiers à ceux mentionnés dans un fichier de référence (ref_file). Il est pratique car il permet de gagner beaucoup de temps et facilite le changement de propriétaire et de groupe de fichiers. Si le fichier de référence est un lien symbolique, la commande chown prendra l'utilisateur et le groupe du fichier cible.
chown --reference=REF_FILE FILE
Prenons maintenant un exemple et allouons la propriété de l'utilisateur et du groupe de file2 à file3.
chown --reference=file2 file3
Ce qui précède est un bref aperçu de la façon dont on peut utiliser la commande chown pour changer la propriété et le groupe d'un fichier. Nous avons couvert la plupart des façons courantes d'utiliser efficacement chown sous Linux.