The UNIX and Linux Forums  
Bonjour et bienvenu par les États-Unis à la UNIX et Linux Forums! Merci de votre visite et vous joindre à notre communauté mondiale.

Go Back   Les systèmes UNIX et Linux Forums > Top Forums > UNIX pour les nuls Questions et réponses > Réponses aux questions fréquemment posées > Conseils et Didacticiels
.
google unix.com



Conseils et Didacticiels Des articles de nos utilisateurs.

Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
Fil Thread Starter Forum Réponses Last Post
Pour donner le "décompresser" permissions et "créer" les permissions de fichiers Mike1234 HP-UX 3 03-02-2008 05:34 PM
Permissions Unix mobershaw SUN Solaris 0 01-24-2006 06:06 PM
Permissions de fichiers UNIX jerardfjay UNIX for Advanced & Expert Users 3 03-15-2005 12:25 PM
Permissions Unix Moukoko UNIX pour les nuls Questions et réponses 2 03-11-2004 08:12 AM

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Recherche sur ce Thread Rating: Thread Rating: 6 votes, 4.83 average. Modes d'affichage
  #1 (permalink)  
Old 05-28-2005
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Location: Ashburn, Virginia
Posts: 9115
Permissions de fichiers Unix

Introduction

J'ai vu certains de désinformation concernant les permissions de fichiers Unix. Je vais essayer de mettre les choses au clair. Jetez un oeil à cet exemple de sortie de ls:
Code:
$ ls -ld /usr/bin /usr/bin/cat
drwxrwxr-x   3 root     bin         8704 Sep 23  2004 /usr/bin
-r-xr-xr-x   1 bin      bin         9388 Jul 16  1997 /usr/bin/cat
$
Sur la première ligne, que "root" indique que le répertoire est la propriété de l'utilisateur appelé "root". Et ce "bin" est le groupe de l'annuaire. Vous aurez besoin de comprendre les utilisateurs et les groupes et je suppose que vous faites. Mon but est d'expliquer que «drwxrwxr-x" et "-r-xr-xr-x" stuff. Ce champ est une combinaison du type de fichier et l'autorisation d'accès. Collectivement, cette information est parfois appelé le mode fichier. Et parfois, il est appelé le permissions. Un bon endroit pour commencer est de prendre un coup d'oeil sur la manière dont cette information est stockée sur le disque. La façon dont il est stocké sur un certain nombre de décisions qui ont été faites au fil des ans.

Comment le "File Mode" est conservé.

Sur disque, des informations sur un fichier est stocké dans une structure appelée "inode». Chaque fichier aura son propre inode. Un élément de données dans un inode est appelée la "mode", et il ressemble à ceci:
Code:
 |------file mode------|
 |                     |
 |
 |       |----full-----|
         |
 |-type| |   |--basic--|
 |     | |   |         |
 oo0 000 000 000 000 000
 ... ... ... ... ... ...
    |     |   |   |   |
    |     |   |   |   |---- rwx for other
    |     |   |   |
    |     |   |   |-------- rwx for group
    |     |   |
    |     |   |------------ rwx for user
    |     |
    |     |---------------- set uid, set gid, sticky bit
    |
    |---------------------- file type: regular (-)
                                       directory (d)
                                       character special (c)
                                       block special (b)
                                       fifo (p)
                                       symbolic link (l)
                                       socket (s)
Je pense que la "mode" signifie juste que les permissions et le type de fichier a été poussé à économiser de l'espace. Mais l'auteur de la ls est le traitement de la mode en un seul point. C'est pourquoi le type de fichier est le premier caractère de l'autorisation de la chaîne "ls-l" output. Le type de fichier est habituellement l'un des sept types que je présente ci-dessus. Certaines versions d'Unix va ajouter un peu plus. La seule autre chose à l'avis de la présentation de données est qu'il n'ya pas de place pour ajouter plus de bits d'autorisation.

Représenter les permissions en octal

Le ls programme peut afficher, par exemple, "rwxrwxrwx" pour les permissions sur un fichier. Il est aussi très courant d'utiliser un nombre octal à exprimer les permissions sur un fichier. Et comme vous voyez ci-dessus, c'est la façon dont ils sont stockés. Vous mai entendre quelqu'un dire que certains ont des permissions 777. C'est la même chose que "rwxrwxrwx" et beaucoup plus facile à prononcer. Vous avez donc besoin de savoir comment les convertir. Trois chiffres binaires ou bits correspond à un chiffre octal:

Code:
  421
  rwx
Ainsi, la «lecture est une valeur de 4 bits, le bit à écrire vaut 2 et les exécuter bit vaut 1. Vous avez simplement à ajouter à ces obtenir un chiffre octal. Donc" rwxrwxrwx "est 777. Et"-rwxr-x -- - "est de 750. Si vous ne voyez toujours pas comment obtenir de" rx "à 5, peut-être ce tableau permettra de:

Code:
--- = 0
--x = 1
-w- = 2
-wx = 3
r-- = 4
r-x = 5
rw- = 6
rwx = 7
Note 4 octale dont nous avons besoin de chiffres pour exprimer tous les bits d'autorisation. Les trois premiers sont des bits et sont souvent zéro. Et vous avez presque toujours en apprendre davantage sur le premier mobile 9 bits. Certaines personnes en rester là et de ne jamais apprendre les trois premiers bits. Mais il ya 12 bits d'autorisation, et pas seulement 9. Cela dit, nous allons maintenant jeter un coup d'oeil à la traîne 9 bits.

Les bits d'autorisation de base

Nous avons 3 triples: un triple pour l'utilisateur, un triple pour le groupe, et un triple pour les autres. Parfois, «l'utilisateur» est le propriétaire. Et, parfois, «l'autre» est appelé le "monde". Je vais profiter de "l'utilisateur" et "autres" parce que la commande chmod ug utilise les lettres o et de se référer à ces triples.

Set de Bits qui s'applique à vous?

Quand Unix décide ce que vous pouvez faire, il n'utilise pas tous les 9 bits. Unix reprend le premier triple qui s'applique à vous. Considérez ceci:
Code:
----rwxrwx   1 joe        users           29 Mar 22 19:39 somefile
Même si joe possède ce fichier, il ne peut pas y accéder. (Depuis joe détient le dossier, il pourrait donner l'accès lui-même. Plus d'informations sur cela plus tard.) Aussi racine est spécial. rwx racine est accordée à tous les répertoires et rw à tous les fichiers. Sur un fichier, si l'un des 3 x bits sont fixés, la racine a la permission d'exécution. Cette autorisation est souvent handicapés sur le réseau de fichiers monté.

Que dois-rw et x signifie vraiment pour un fichier?

Pour un fichier, "lire" et "écrire" est assez intuitive. Le x pour "exécuter" signifie que le noyau mai tentative d'exécuter le fichier. Pour que cela fonctionne, le fichier doit être un exécutable (sortie d'un compilateur) ou un script shell avec un "#!" première ligne. Pour un répertoire, les choses sont un peu plus complexe. Avec un répertoire, "écrire" permission signifie que vous pouvez créer de nouveaux fichiers dans le répertoire ou de supprimer les anciens fichiers. On a parfois des surprises aux gens que vous pouvez supprimer un fichier dont vous ne pouvez pas lire. La commande unix rm pour ce test et à la délivrance d'un avertissement, mais vous pouvez supprimer cet avertissement avec-f. Et aucun avertissement ou, si vous souhaitez supprimer un fichier illisible écriture à partir d'un répertoire, vous avez mai. Rmdir et ne sera pas la peine de vérifier à tous.

Que dois-rw et x signifie vraiment pour un répertoire?

Un répertoire est un fichier de trop, et à «lire» la permission, vous pouvez lire. Mais vous ne pouvez vraiment pas faire grand-chose sans la permission x aussi. Avec les répertoires, vous avez habituellement la fois lire et d'exécuter l'autorisation ou pas. Sur un répertoire, que x est officiellement appelé "l'autorisation de recherche». Vous avez besoin de x pour utiliser un répertoire dans un chemin d'accès. Donc, si vous essayez de "cat / etc / passwd", vous aurez besoin sur x / et / etc Vous avez aussi besoin de x cd dans un répertoire. Supposons que vous avez lu, mais pas de recherche (x) la permission d'un répertoire. Que pouvez-vous faire? Pas grand-chose. Vous pouvez utiliser "ls" pour afficher les noms de fichier. Même "ls-l" ne fonctionnera pas. Lire l'accès sans autorisation de recherche n'est pas très utile. Qui est encore mieux que d'avoir seulement la permission d'écriture sur un répertoire ... qui est complètement inutile. Je n'ai pas vu de toute autre documentation qui indique clairement, alors permettez-moi de répéter: écrire, mais pas la permission d'exécution sur un répertoire de subventions rien all.Suppose vous avez la recherche (x) mais pas de l'autorisation de lecture sur un répertoire. Maintenant vous pouvez ouvrir les fichiers dans le répertoire si vous connaissez le nom du fichier. Vous pouvez cd dans le répertoire. Et c'est elle. Vous ne pouvez même pas créer un nouveau fichier. Ajout d'écriture vous permettront de créer des fichiers. Et vous pouvez ensuite supprimer les fichiers si vous connaissez leur nom.

Les liens symboliques sont des

Les paramètres d'autorisation sur un lien symbolique est un peu particulier aussi. Ils sont complètement ignorés. De nombreuses versions d'Unix n'ont aucun moyen de les changer.

Le setuid et setgid l'Bits

Jetez un oeil à ceci:
Code:
$ ls -l /etc/passwd /etc/shadow /usr/bin/passwd
-r--r--r--   1 root     sys        14006 Jan 14 11:17 /etc/passwd
-r--------   1 root     sys         8281 Jan 14 11:18 /etc/shadow
-r-sr-sr-x   3 root     sys        96244 Sep  5  2001 /usr/bin/passwd
Le fichier passwd est modifiable uniquement par root (Rappelez-vous, la racine est spéciale. On peut écrire un fichier qui n'a pas de fixer les permissions d'écriture). À l'ombre du dossier, qui est l'endroit où sont stockés les mots de passe, ne peut même pas être lu par les utilisateurs ordinaires. Mais joe veut changer son mot de passe. Il peut le faire en exécutant / usr / bin / passwd. Avis rs ces permissions. Le programme passwd a des bits SUID et SGID fixés. Cela transforme les x en s. En octal, il serait 6555. Le programme passwd est la propriété de root. Quand Joe fonctionne, il ne fonctionne pas comme "joe". Au lieu de cela, il fonctionne comme elle le propriétaire qui est root. Ainsi, le programme passwd joe pouvez changer le mot de passe pour lui. Le SGID bit fonctionne de la même manière, sauf qu'elle provoque le programme à exécuter passwd avec le groupe au lieu de sys joe le groupe. Le SUID et SGID ne reçoivent pas leur propre position dans le ls. Lorsque le bit suid est fixé, ls affiche plutôt que ax pour le propriétaire la permission d'exécution. Que faire si le bit suid est fixé, mais le propriétaire d'exécuter bit est éteint? ls affiche un grand S dans l'affaire. Le SGID bit est affiché de manière similaire, sauf qu'elle interagit avec le groupe l'autorisation d'exécution. (Le concept a été mis en uid inventé par Dennis Ritchie comme il l'a été en développement Unix.)

Pour étendre sur les choses un peu, alors que Joe est en cours d'exécution à la suid-root passwd program, "Joe" est le réel et l'uid "root" est le bon uid. Le programme passwd peut obtenir de ces deux identifiants si elle veut. C'est ainsi que le programme passwd joe sait pour permettre de changer seulement le mot de passe de joe.

Le Sticky Bit

Le Posix la norme dit que si le sticky bit est placé sur un répertoire, une simple écriture sur le répertoire n'est plus suffisant pour permettre à des fichiers à supprimer. Vous devez également posséder le fichier ou le répertoire propre. racine continue à être en mesure de supprimer à partir de n'importe quel répertoire, peu de droits. Autrefois ce peu servi un autre but. Sur certains OS, il ne reste. Je développerai dans une annexe ci-dessous. Le sticky bit sur "l'autre" exécuter dans le bit ls afficher. Sauf que, et il utilise t T plutôt que de s et S. Par exemple:
Code:
drwxrwxrwt   5 root       root          1024 Feb 11 20:43 /tmp
Dans ce répertoire / tmp ci-dessus, n'importe qui peut créer de nouveaux fichiers. Mais en raison du peu collante, un utilisateur ne peut pas supprimer les fichiers d'un autre utilisateur.

Permissions de fichiers avec limitation de umask

Lorsque les fichiers sont créés le programme qui crée pouvez spécifier le paramètre d'autorisation initiale. Vous pouvez remplacer avec umask. Le umask est un ensemble d'interdire bits. Il ya un umask commande qui vous permet de visualiser et de modifier l'umask. Par exemple, "umask 022" interdit d'écrire groupe et d'autres d'écrire sur les nouveaux fichiers créés. Or "umask 027" interdit d'écrire et de groupe, il interdit d'autres de lire, d'écrire, ou exécuter. Vous pouvez faire un "umask 0" pour laisser le programme faire ce qu'il veut car il crée des programmes. Mais vous ne pouvez pas aller plus loin. Vous ne pouvez pas forcer le programme à tourner un peu. Le umask paramètre affecte les fichiers, répertoires, les pipes nommés (ou FIFO), et des fichiers spéciaux. Elle mai ou mai de ne pas affecter les liens symboliques. Il affecte également Certaines formes d'Inter Process Communication mais qui est au-delà du champ d'application du présent article. Et, croyez-le ou non, nommé sockets sont exonérés de l'umask. Cette exemption est nécessaire par Posix.

Changer de dossier avec les autorisations chmod

Seul le propriétaire d'un fichier ou root peut changer les permissions sur un fichier. Cette opération est pas affecté à tous par la mise en umask. Si vous modifiez les autorisations sur un lien symbolique, le lien sera suivie et vous changerez le fichier cible. Il est possible que seul root aura le pouvoir d'établir un fichier de sticky bit. À titre d'exemple, "chmod 700 somefile" va permettre au propriétaire de lire, d'écrire et d'exécuter le fichier, tout en refusant tout accès à d'autres utilisateurs.

Utilisation du mode symbolique avec chmod et umask

Posix introduit une nouvelle syntaxe pour la commande chmod. L'idée était que la nouvelle syntaxe va remplacer l'utilisation d'un octal constant avec la commande chmod. L'octal constant est encore autorisée et je crois qu'il est ici pour rester. Mais la nouvelle symbolique de syntaxe vous permet de modifier quelques bits, sans savoir ce que les autres. Par exemple, disons que je veux faire un fichier inaccessible à d'autres mais je ne suis pas ce que pour changer l'accès de l'utilisateur ou le groupe. J'aurais besoin de faire:
ls-l fichier
Rechercher dans les fichiers et comprendre les paramètres en cours.
chmod 750 fichier
J'ai eu à déterminer que les deux premiers chiffres sont courants 7 et 5, avant que je puisse faire ma commande chmod. Avec la nouvelle syntaxe, je peux simplement faire:
chmod o \u003d file
pour désactiver la final 3 bits. Comme autre exemple, "chmod u + x fichier" permettra à l'utilisateur d'exécuter le fichier. D'autre part, ces deux commandes sont équivalentes:
chmod 750 fichier
chmod u \u003d rwx, g \u003d rx, o \u003d fichier
et je préfère la première syntaxe.

Le mode symbolique, peut être une virgule sépare la liste de spécifications. Chaque cahier des charges comporte trois volets: <who> <operation> <bitlist>
Code:
The who part can be:
u  (user)
g  (group)
o  (other)
a  (all)
   (whatever is allowed by umask (subset of all))

The operator can be  = or - or +
= (set bits to bitlist)
- (subtract bitlist from current bit
+ (add bitllist to current bits)

The bitlist can be one of the following letters:
r (read permission)
w (write permission)
x (execute permision)
X (conditional execute permision)
u (current permissions for user)
g (current permissions for group)
o (current permissions for others)
s (set uid or set gid)
t (sticky bit)
Le X est le même que x, sauf si le fichier est un nondirectory et n'a actuellement pas de x bits. La s (set uid gid ou l'ensemble) ne peut être spécifié pour un utilisateur ou un groupe d'autorisations. Le t ne peut être spécifiée pour les permissions. Quelques exemples de l'aide. Nous avons vu au-dessus de / usr / bin / passwd a été 6555 (-r-sr-sr-x ls). Voici quelques moyens qui pourraient être obtenus:
chmod 6555 / usr / bin / passwd
chmod u \u003d RXS, g \u003d RXS, o \u003d rx / usr / bin / passwd
chmod ug \u003d RXS, o \u003d rx / usr / bin / passwd
chmod a \u003d rx, ug + s / usr / bin / passwd
Et il ya beaucoup d'autres façons de le faire.

Pour la plupart chmod est à l'abri de umask en bits que, quel que soit il veut mettre ne sont pas modifiées par le umask. Toutefois, dans un état, la commande chmod examinera le réglage actuel de umask pour déterminer quels bits il voudrait fixer. Cela se produit lorsque vous quittez le "qui" champ vide. Comme ceci:
chmod somefile \u003d w
La différence entre un "\u003d w" et "\u003d w" est subtile. Voici un exemple qui aide mai. De nombreux programmes tentent de créer des fichiers avec 666 (-rw-rw-rw-) permissions. Mais cela est modifiée par le umask. Supposons que vous souhaitez définir un fichier à 666, mais modifié par le umask. Nous pourrions éteindre tous les bits, puis tourner à lire et à écrire les bits qui sont autorisés par le umask courant:

chmod a \u003d, \u003d rw somefile

Et en parlant de umask, vous pouvez utiliser avec la symbolique des arguments de commande umask ainsi. Cependant, Posix, Dans leur grande sagesse, a décidé que dans ce cas, la logique serait inversée. Donc, si l'utilisation de umask avec un argument octal-vous préciser les bits doivent être interdites. Mais si vous utilisez umask symbolique avec un argument, vous spécifiez les bits à autoriser. Ce sont donc équivalentes:
umask 022
umask u \u003d rwx, go \u003d rx

Sommaire

À ce stade, vous avez suffisamment d'informations pour comprendre la plupart de ces 12 bits d'autorisation. Il existe plusieurs cas très particuliers que j'ai ignoré ou occulté. Dans des postes ci-dessous je vais y remédier. Les informations contenues dans ce premier message est très universel. Un Posix OS compatible doit prendre en charge ce genre de choses. Cela couvre presque toutes les versions d'Unix libérés au cours des 10 dernières années. Les articles suivants de discuter des caractéristiques qui mai ne pas être universelle.
 

Bookmarks

Tags
chmod, les permissions de fichiers, linux commandes, sticky bit, suid, umask

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 05:36 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0