Je viens de rencontrer quelque chose d'inattendu (pour moi) concernant les autorisations de fichiers sur Linux (Arch Linux). Fondamentalement, j'ai:
userX
dansgroupX
fileX userX:groupX ---rwx----
Ce qui me laisse perplexe: je ne peux effectuer aucune action ( rwx
) sur fileX
. Est-ce correct? Quelqu'un peut-il confirmer qu'il s'agit bien du comportement attendu?
Les seules actions que je peux effectuer sont mv
et rm
parce que j'ai des autorisations d'écriture sur le répertoire parent.
Le truc, c'est que j'ai toujours pensé que ces autorisations s'effondraient les unes sur les autres, à commencer par la plus générale (autre -> groupe -> utilisateur). En d'autres termes, si o=rwx
qui s'en soucie quelles sont les persmissions pour le groupe et l'utilisateur? Apparemment, ce n'est pas le cas, mais cela n'a pas beaucoup de sens pour moi; cela semble contre-intuitif. La seule chose à laquelle cette approche semble être utile, c'est d'exclure facilement une personne / un groupe très spécifique, ce qui ne semble pas être une façon intelligente de s'y attaquer (à mon humble avis). D'ailleurs, le propriétaire (et le groupe?) Devrait pouvoir de chmod
toute façon non? Des réflexions à ce sujet?
id
Réponses:
Si c'était le cas, les «autres» autorisations s'appliqueraient à tout le monde.
C'est différent de votre phrase précédente. Ici, vous sous-entendez que les autorisations sont combinées, par exemple, que userX a la permission de lecture si userX possède le fichier et que le fichier est lisible par l'utilisateur, ou si un groupe auquel appartient userX possède le fichier et le fichier est groupe -readable, ou si le fichier est lisible par un autre. Mais ce n'est pas comme ça que ça fonctionne. En fait, cela
o=rwx
signifie que lesrwx
autorisations s'appliquent aux autres, mais cela ne dit rien sur les entités qui ne sont pas des autres.Tout d'abord, peu importe à quels groupes un utilisateur appartient. Le noyau n'a pas la notion d'utilisateurs appartenant à des groupes. Ce que le noyau maintient est, pour chaque processus, un ID utilisateur (l' UID effectif ) et une liste d' ID de groupe (le GID effectif et les GID supplémentaires). Les groupes sont déterminés au moment de la connexion, par le processus de connexion - c'est le processus de connexion qui lit la base de données du groupe (par exemple
/etc/group
). Les ID utilisateur et groupe sont hérités par les processus enfants¹.Lorsqu'un processus tente d'ouvrir un fichier, avec les autorisations Unix traditionnelles:
Un seul ensemble de bits rwx est jamais utilisé. L'utilisateur a priorité sur le groupe qui a priorité sur les autres. Lorsqu'il existe des listes de contrôle d'accès , l'algorithme décrit ci-dessus est généralisé:
Voir aussi Priorité d'ACLS lorsqu'un utilisateur appartient à plusieurs groupes pour plus de détails sur la façon dont les entrées ACL sont utilisées, y compris l'effet du masque.
-rw----r-- alice interns
Indique ainsi un fichier qui peut être lu et écrit par Alice, et qui peut être lu par tous les autres utilisateurs à l'exception des stagiaires. Un fichier avec des autorisations et la propriété----rwx--- alice interns
est accessible uniquement aux stagiaires, sauf Alice (qu'elle soit stagiaire ou non). Étant donné qu'Alice peut appelerchmod
pour modifier les autorisations, cela ne fournit aucune sécurité; c'est un cas de bord. Sur les systèmes avec ACL, le mécanisme généralisé permet de supprimer des autorisations d'utilisateurs ou de groupes spécifiques, ce qui est parfois utile.L'utilisation d'un seul ensemble de bits, plutôt que de gérer tous les bits pour chaque action (lecture, écriture, exécution), présente plusieurs avantages:
¹ Ils peuvent changer lorsqu'un processus setuid ou setgid est exécuté. Ce n'est pas lié au problème en question.
la source
Les autorisations les plus spécifiques ont priorité sur les moins spécifiques.
Étant donné que vous êtes le propriétaire du fichier, vous ne bénéficierez que des autorisations de propriétaire. Le propriétaire n'a aucune autorisation. Ainsi, vous ne pouvez rien faire. Si vous n'aviez pas été le propriétaire du fichier et un membre du groupe, les autorisations de groupe s'appliqueraient.
Veuillez lire cette section de la page wiki
https://en.wikipedia.org/wiki/File_system_permissions#Classes
la source
-rwxrw----
signifie que le propriétaire a des autorisations de lecture, d'écriture et d'exécution, que le groupe a des autorisations de lecture et d'écriture et que d'autres n'ont aucune autorisation.Les autorisations que vous avez fournies accordent au groupe «groupX» des autorisations pour lire, écrire et exécuter le fichier. Si vous êtes membre du groupe "groupX" mais pas le propriétaire du fichier, ces autorisations s'appliquent à vous.
Dans ce cas, je suppose que vous êtes bien le propriétaire du fichier. Seules les autorisations définies pour le propriétaire s'appliqueront alors à vous. Bien sûr, le propriétaire peut remplacer ou modifier les autorisations sur le fichier. Le groupe ne peut cependant pas le faire. Par exemple, vim vous demandera de confirmer si vous écrivez dans un fichier dont vous n'avez pas les autorisations d'écriture mais dont vous êtes le propriétaire.
Je lis généralement les autorisations de gauche à droite. Suis-je le propriétaire? Si oui, les autorisations du propriétaire s'appliquent. Si non; suis-je membre du groupe? Si oui, les autorisations de groupe s'appliquent. Sinon, les autorisations pour «Autre» s'appliquent à moi.
Dans certains cas, il est utile d'être propriétaire d'un fichier mais de ne pas avoir d'autorisations d'écriture. Il vous protège contre la suppression ou la modification accidentelle du fichier. Personnellement, j'ai défini l'autorisation 400 sur tous mes fichiers de modèle, juste pour m'assurer de ne pas les modifier par accident. Il en va de même pour les autorisations d'exécution.
la source
J'ai pu ajouter un utilisateur à un groupe, donner des autorisations au groupe à un répertoire (070), puis APRÈS LE REDÉMARRAGE a pu accéder au dossier.
Créer un groupe: sudo groupadd groupname
Ajouter un utilisateur au groupe: sudo gpasswd -a nom d'utilisateur groupname
Assurez-vous que le répertoire entier est bien sous la propriété du groupe (doit être membre actuel du nom du groupe pour effectuer): sudo chgrp -R nom du groupe chemin_répertoire /
Donnez seulement le groupe rwx pour le dossier (peut être juste rw, ajustez si nécessaire): sudo chmod -R 070 directory_path
Après avoir fait ce qui précède, assurez-vous de vous déconnecter et de vous reconnecter. Si cela ne fonctionne pas, redémarrez la machine. Faire cela a fonctionné pour moi.
la source
username
le propriétaire du répertoire? sinon, vous avez mal compris la question