Quelles sont les autorisations de base des fichiers Linux ?
Linux, comme UNIX, est un système multi-utilisateurs, et les autorisations de fichiers sont l'un des moyens par lesquels le système se protège contre les altérations malveillantes. Une façon d'obtenir l'entrée lorsque l'autorisation vous est refusée consiste à utiliser su pour root. Gardez à l'esprit que quiconque connaît le mot de passe root a un accès complet. Mais passer au superutilisateur n'est pas toujours pratique ni recommandé car il est facile de faire des erreurs et de modifier des fichiers de configuration importants en tant que superutilisateur. Tous les fichiers et répertoires appartiennent à la personne qui les a créés. Par exemple, dans la liste :
-rw-rw-r-- 1 john sap 150 Mar 19 08:08 file1.txt
Le fichier file1.txt appartient ou appartient à john. Cela signifie que vous pouvez spécifier qui est autorisé à lire le fichier, à écrire dans le fichier ou (s'il s'agit d'une application au lieu d'un fichier texte) qui peut exécuter le fichier. Vous pouvez également contrôler l'accès aux répertoires de la même manière.
La lecture, l'écriture et l'exécution sont les trois principaux paramètres des autorisations. Étant donné que les utilisateurs sont placés dans un groupe lors de la création de leurs comptes, vous pouvez également spécifier si certains groupes peuvent lire, écrire ou exécuter un fichier. En utilisant l'exemple file1.txt ci-dessus, vous pouvez voir qu'il y a beaucoup de détails fournis. Vous pouvez voir qui peut lire (r) et écrire dans (w) le fichier, ainsi que qui a créé le fichier (john) et à quel groupe appartient le propriétaire (sap). N'oubliez pas cependant que, par défaut, le nom de votre groupe est le même que votre nom de connexion.
Les autres informations à droite du groupe incluent la taille du fichier, la date et l'heure de création du fichier et le nom du fichier. La première colonne affiche les autorisations actuelles ; il a dix emplacements. Le premier emplacement représente le type de fichier. Les neuf emplacements restants sont en fait trois ensembles d'autorisations pour trois catégories différentes d'utilisateurs. Par exemple :
-rw-rw-r--
Ces trois ensembles sont le propriétaire du fichier, le groupe auquel appartient le fichier et "autres", c'est-à-dire tous les autres utilisateurs.
- (rw-) (rw-) (r--) 1 john sap | | | | type owner group others
Le premier élément, qui spécifie le type de fichier, affiche généralement l'un des éléments suivants :
- d — un répertoire
- – (tiret) — un fichier normal (plutôt qu'un répertoire ou un lien)
- l — un lien symbolique vers un autre programme ou fichier ailleurs sur le système
Au-delà du premier élément, dans chacun des trois ensembles suivants, vous verrez l'un des éléments suivants :
- r — le fichier peut être lu
- w — le fichier peut être écrit dans
- x — le fichier peut être exécuté (s'il s'agit d'un programme)
Lorsque vous voyez un tiret dans propriétaire, groupe ou autres, cela signifie qu'une autorisation particulière n'a pas été accordée. Examinez à nouveau la première colonne de file1.txt et identifiez ses autorisations.
# ls -l file1.txt -rw-rw-r-- 1 john sap 150 Mar 19 08:08 file1.txt
Le propriétaire du fichier (dans ce cas, John) est autorisé à lire et à écrire dans le fichier. Le groupe, sap, a également la permission de lire et d'écrire dans file1.txt. Ce n'est pas un programme, donc ni le propriétaire ni le groupe n'ont la permission de l'exécuter. Tous les autres utilisateurs peuvent uniquement lire le fichier.
Comment les bits d'autorisation de fichier correspondent-ils aux valeurs fournies à chmod ?
Les bits de permissions appliqués à un objet du système de fichiers correspondent directement aux valeurs qui peuvent être spécifiées dans le tuple à 4 chiffres fourni à l'utilitaire chmod dans la commande suivante :
chmod abcd [file system object]
Chaque valeur du jeu de chiffres abcd est composée d'une somme des valeurs 1 2 et 4. En additionnant ces valeurs pour chaque chiffre, une valeur peut être générée pour définir tous les attributs d'objet de fichier :
- un – Ce chiffre contrôle les paramètres d'attributs spéciaux. la valeur 1 définit le bit setuid, la valeur 2 définit le bit setgid et la valeur 4 définit le sticky bit sur l'objet
- b , c et d – Ces chiffres contrôlent les autorisations de lecture, d'écriture et d'exécution pour le propriétaire du fichier, le groupe principal des propriétaires de fichiers et tous les autres utilisateurs. La valeur 4 active l'autorisation de lecture, la valeur 2 active l'autorisation d'écriture et la valeur 1 active l'autorisation d'exécution.
Exemples
Pour définir un fichier file pour qu'il soit collant, lisible et accessible en écriture par le propriétaire, lisible par son groupe principal et inaccessible par tous les autres :
# chmod 4610 filename
Pour accorder toutes les autorisations à tout le monde sur le système :
# chmod 0777 filename
Pour plus d'informations sur chmod, consultez la page de manuel chmod.
Comment définir les autorisations de fichiers et de répertoires à l'aide de chown et chmod ?
Utilisez le chown commande pour changer le propriétaire et/ou le groupe du fichier. La syntaxe est simple. Tapez simplement chown, suivi de l'utilisateur propriétaire du fichier, puis éventuellement de deux-points (":") et du nom du groupe. Veuillez noter que les noms d'utilisateur et/ou de groupe doivent exister sur le système. Par exemple :
# chown john:sap file1.txt
# ls -l file1.txt -rw-rw-r-- 1 john sap 150 Mar 19 08:08 file1.txt
résultats dans l'utilisateur john propriétaire du fichier. Le groupe propriétaire du fichier est également défini sur le groupe de john qui est sap.
Utilisez la commande chmod pour modifier les autorisations. Cet exemple montre comment modifier les autorisations sur file1.txt avec la commande chmod. Si vous êtes le propriétaire du fichier ou si vous êtes connecté au compte root, vous pouvez modifier les autorisations du propriétaire, du groupe et des autres. À l'heure actuelle, le propriétaire et le groupe peuvent lire et écrire dans le fichier. Toute personne extérieure au groupe ne peut que lire le fichier (r–).
ATTENTION :N'oubliez pas que les autorisations de fichiers sont une fonction de sécurité. Chaque fois que vous autorisez quelqu'un d'autre à lire, écrire et exécuter des fichiers, vous augmentez le risque que des fichiers soient falsifiés, modifiés ou supprimés. En règle générale, vous ne devez accorder des autorisations de lecture et d'écriture qu'à ceux qui en ont vraiment besoin.Comment modifier les autorisations de fichiers/répertoires à l'aide de notations abrégées ?
Dans l'exemple suivant, vous souhaitez autoriser tout le monde à écrire dans le fichier, afin qu'il puisse le lire, y écrire des notes et l'enregistrer. Cela signifie que vous devrez modifier la section "autres" des autorisations de fichier. Jetez d'abord un coup d'œil au fichier. À l'invite du shell, vous taperez :
# ls -l file1.txt -rw-rw-r-- 1 john sap 150 Mar 19 08:08 file1.txt
Maintenant, vous devez taper ce qui suit :
# chmod o+w file1.txt
La commande ci-dessus indique au système que vous souhaitez autoriser les autres à écrire sur le fichier file1.txt. Pour vérifier les résultats, listez à nouveau les détails du fichier. Maintenant, le fichier ressemble à ceci :
-rw-rw-rw- 1 john sap 150 Mar 19 08:08 file1.txt
Désormais, tout le monde peut lire et écrire dans le fichier. Pour supprimer les autorisations de lecture et d'écriture de file1.txt, utilisez la commande chmod pour supprimer les autorisations de lecture et d'écriture.
# chmod go-rw file1.txt
En tapant go-rw , vous dites au système de supprimer les autorisations de lecture et d'écriture pour le groupe et pour les autres du fichier file1.txt.
Le résultat ressemblera à ceci :
-rw------- 1 john sap 150 Mar 19 08:08 file1.txt
Considérez ces paramètres comme une sorte de raccourci lorsque vous souhaitez modifier les autorisations avec chmod, car tout ce que vous avez vraiment à faire est de vous souvenir de quelques symboles et lettres avec la commande chmod. Voici une liste de ce que le raccourci représente :
Identités
u - the user who owns the file (that is, the owner) g - the group to which the user belongs o - others (not the owner or the owner's group) a - everyone or all (u, g, and o)
Autorisations
r - read access w — write access x — execute access
Actions
+ — adds the permission - — removes the permission = — makes it the only permission
Voici quelques exemples courants de paramètres pouvant être utilisés avec chmod :
g+w - adds write access for the group o-rwx - removes all permissions for others u+x - allows the file owner to execute the file a+rw - allows everyone to read and write to the file ug+r - allows the owner and group to read the file g=rx - allows only the group to read and execute (not write)
Comment supprimer toutes les autorisations pour tous les utilisateurs à l'aide de notations abrégées ?
Vous voulez tester vos compétences en matière d'autorisations ? Supprimez toutes les autorisations de file1.txt — pour tout le monde.
# chmod a-rwx file1.txt
Maintenant, voyez si vous pouvez lire le fichier avec la commande cat file1.txt, qui devrait renvoyer ce qui suit :
cat: file1.txt: Permission denied
La suppression de toutes les autorisations, y compris les vôtres, a réussi à verrouiller le fichier. Mais comme le fichier vous appartient, vous pouvez toujours modifier ses autorisations avec la commande suivante :
# chmod u+rw file1.txt
Comment répertorier les autorisations de fichiers au format octal ?
Pour répertorier les autorisations de fichiers au format octal, utilisez stat commande fournie par les coreutils forfait. Pour obtenir les autorisations octales de tous les fichiers et répertoires du répertoire de travail actuel, exécutez la commande ci-dessous :
$ stat -c "%a %n" *
Pour obtenir des autorisations octales de contenu dans un répertoire particulier, par exemple /usr/share, exécutez la commande ci-dessous :
$ stat -c "%a %n" /usr/share/* 755 /usr/share/aclocal 755 /usr/share/alsa 755 /usr/share/anaconda 755 /usr/share/appdata ...
Pour obtenir des autorisations octales uniquement pour le répertoire, par exemple /usr/share, et non le contenu qu'il contient, exécutez la commande ci-dessous :
$ stat -c "%a %n" /usr/share/ 755 /usr/share/
Comment réinitialiser toutes les autorisations de fichiers système par défaut au cas où toutes les autorisations de fichiers seraient passées à 777 ?
Vous avez accidentellement exécuté la commande suivante.
# chmod -R 777 /
Existe-t-il un moyen de revenir aux autorisations d'origine ?
Exécutez la commande suivante pour revenir aux autorisations d'origine.
# rpm -a --setperms
Cela montrera quelques erreurs mais on peut les négliger.
Comment copier les fichiers avec une autorisation spécifique sur le réseau ?
Afin de réaliser la copie de fichiers avec des autorisations spécifiques, l'utilitaire rsync peut être utilisé :
# rsync --chmod=u+rwx,g+rx,o+rx testfile [email protected]:/tmp/
Cela copiera le fichier de test dans le répertoire personnel de l'utilisateur et les autorisations sur le fichier copié seront de 755.