Vous avez une bonne idée des autorisations de fichiers et de répertoires sous UNIX, ce qui est un bon début.
Il existe trois types d'autorisations
pour trois catégories de propriétaires
-
u
: l'utilisateur ou le propriétaire
-
g
: propriétaire du groupe
-
o
: les autres ou tous les autres
D'une manière générale, il existe deux types d'entités dans le système de fichiers UNIX :
D'un point de vue technique, un répertoire n'est rien d'autre qu'un type spécial de fichier, contenant simplement une liste de fichiers et de répertoires.
Maintenant, expliquons clairement ce que signifient les trois types de permission (lecture, écriture, exécution) pour un répertoire. Supposons que l'utilisateur connecté en question soit le propriétaire du répertoire (pour simplifier les choses)
-
lire : Le répertoire (techniquement le fichier répertoire), peut être lire c'est-à-dire que le contenu du répertoire peut être listé, par exemple, à l'aide de la commande ls
commande.
-
écrire : Le répertoire (techniquement le fichier répertoire), peut être écrit . Cela signifie qu'un nouveau fichier/sous-répertoire peut être créé et supprimé à l'aide de commandes telles que touch
, vim
, cp
etc.
-
exécuter : Le répertoire (techniquement le fichier répertoire), peut être exécuté . Cela signifie simplement que le propriétaire peut changer pour ce répertoire, c'est-à-dire cd
dans le répertoire.
Maintenant avec soin réfléchir à chacune des autorisations mentionnées ci-dessus de manière indépendante . Voici les différentes possibilités d'autorisation et ce que le propriétaire peut faire dans chaque cas :
-
- - -
: Aucune autorisation. Le répertoire est pratiquement inutile.
-
- - x
: Le propriétaire peut accéder au répertoire, mais il ne peut ni créer/supprimer des fichiers/répertoires dans le répertoire, ni afficher le contenu du répertoire.
-
- w -
: Le propriétaire peut créer/supprimer des fichiers/répertoires à l'intérieur de ce répertoire, mais il ne peut ni lister son contenu, ni changer de répertoire.
-
- w x
: Le propriétaire peut créer/supprimer des fichiers/répertoires à l'intérieur de ce répertoire, les modifier, mais ne peut pas dresser la liste de leur contenu.
-
r - -
: Le propriétaire ne peut lister que le contenu du répertoire.
-
r - x
: Le propriétaire ne peut pas créer/supprimer des fichiers/répertoires dans ce répertoire.
-
r w -
: Le propriétaire ne peut pas changer de répertoire.
-
r w x
: Le propriétaire peut effectuer les trois actions dans le répertoire.
Ceci devrait vous aider à comprendre clairement quelles actions sont possibles avec quelles permissions de répertoire.
Une fois que les concepts ci-dessus vous paraissent clairs, reprenons l'énoncé de votre problème :
D'après ce que j'ai (cru) comprendre, l'autorisation de lecture signifie que vous pouvez voir le contenu d'un répertoire (c'est-à-dire, ls directory
devrait énumérer le contenu du répertoire) ;
C'est tout à fait exact et cela devrait être évident d'après la discussion ci-dessus.
l'autorisation d'écriture signifie que vous pouvez créer, modifier ou supprimer des fichiers dans le répertoire (c'est-à-dire, touch directory/newfile
ou vi directory/fileimade
ou rm directory/fileihate
tout devrait fonctionner) ;
Partiellement correct. Avec le droit d'écriture disponible dans le répertoire, vous pouvez écrire les fichier de répertoire Cela signifie que ajoutant y suppression dans le fichier du répertoire. (Cela devrait être clair maintenant, mais je le répète, un répertoire est simplement un fichier, bien que spécial, qui stocke simplement une liste de tous les fichiers et sous-répertoires qu'il contient). Cela signifie que vous pouvez créer et supprimer des fichiers (ou des répertoires) dans le répertoire, mais que vous ne pouvez pas les supprimer. ne peut pas modifier des fichiers à moins de disposer d'une autorisation d'écriture sur le fichier. Vous pouvez supprimer un fichier pour lequel vous n'avez pas les droits de lecture ou d'écriture, puisque vous disposez des droits d'écriture pour le répertoire qui le contient. touch directory/newfile
ou vi directory/fileimade
ou rm directory/fileihate
Tout devrait fonctionner correctement.
et l'autorisation d'exécution signifie que vous pouvez faire du répertoire votre répertoire de travail (c'est-à-dire, cd directory
devrait fonctionner)
C'est tout à fait exact.
Si j'ai r--
sur un répertoire, je reçois des erreurs lors de la tentative de cd directory
o touch directory/newfile
comme prévu. Mais si je lance ls directory
-- bien, je n'obtiens pas d'erreur, mais aucun fichier n'est listé, même si je sais qu'il y a des fichiers que je possède et/ou sur lesquels j'ai des droits dans le répertoire. Donc, ls
s'est exécutée avec succès, mais aucune donnée n'a été transmise à la sortie standard. Pourquoi ?
Vous avez raison. Le cas où aucune sortie n'est affichée se produit lorsque le répertoire est complètement vide. Si vous disposez d'une autorisation de lecture sur un répertoire, son contenu devrait être listé indépendamment de l'autorisation sur les fichiers/sous-répertoires. Une autre possibilité est que les fichiers et les répertoires soient cachés. Essayez d'exécuter ls -a directory
. Vous pouvez vérifier à nouveau que vous disposez des droits de lecture sur le répertoire en exécutant la commande suivante ls -ld directory
. Vérifiez également la sortie de alias ls
.
Si j'ai -w-
sur un répertoire, je reçois des erreurs sur cd
y ls
comme prévu. Mais si j'essaie de créer un nouveau fichier - touch directory/newfile
- Je reçois également une erreur. Pourquoi ?
Vous devriez pouvoir créer un fichier, à moins qu'aucun autre fichier/répertoire du même nom n'existe déjà. Quelle est l'erreur que vous obtenez ?
Tous les x fonctionnent exactement comme prévu ; je peux cd
dans les répertoires avec --x
mais rien d'autre. Je peux cd
dans les répertoires avec -wx
Les services d'information et de conseil peuvent créer et supprimer des fichiers, mais les services d'information et de conseil peuvent également créer et supprimer des fichiers. ls
renvoie une erreur. Et je peux cd
en r-x
de répertoires, de lister leur contenu et de travailler sur des fichiers pour lesquels j'ai des permissions existantes, mais je ne peux pas créer ou supprimer des fichiers. Tout cela me semble logique.
Qu'est-ce que je n'ai pas bien compris à propos de r--
y -w-
?
Veuillez relire la discussion ci-dessus et voir si cela vous aide.