[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: chmod marche pas ... pourquoi?



On 2005-05-22 23:59:07 +0200, Debian User wrote:
> > Essaie de voir ce que tu obtiens au niveau des appels système...
> 
> Hein? C'est quoi donc? Comment je fais-je?

En fait, tu as déjà des front-end. Déjà, "ls -l" te donne ce qu'il
faut, mais on ne sait jamais, il fait peut-être un traitement, et
c'est pour ça qu'il peut être préférable d'obtenir le champ st_mode
(qui donne le type du fichier et les permissions) directement.

Avec le stat de coreutils:

$ stat -c%f fichier

Avec le stat de zsh (module zsh/stat):

$ printf "%x\n" `stat -L +mode fichier`

ou pour l'avoir en octal:

$ printf "%o\n" `stat -L +mode fichier`

Normalement, tu devrais obtenir a1ff (en hexa) ou 120777 (en octal).

La page man stat(2) te donne la signification:

       S_IFLNK    0120000   symbolic link
[...]
       S_IRWXU    00700     mask for file owner permissions
       S_IRUSR    00400     owner has read permission
       S_IWUSR    00200     owner has write permission
       S_IXUSR    00100     owner has execute permission
       S_IRWXG    00070     mask for group permissions
       S_IRGRP    00040     group has read permission
       S_IWGRP    00020     group has write permission
       S_IXGRP    00010     group has execute permission
       S_IRWXO    00007     mask for permissions for others (not in group)
       S_IROTH    00004     others have read permission
       S_IWOTH    00002     others have write permisson
       S_IXOTH    00001     others have execute permission

Maintenant, si c'est vraiment incorrect: pour corriger, c'est normal
que tu n'y arrives pas avec chmod. La page man chmod(1) dit:

  chmod never changes the permissions of symbolic links; the chmod system
  call  cannot change their permissions.  This is not a problem since the
  permissions of symbolic links are never used.  However, for  each  sym-
  bolic link listed on the command line, chmod changes the permissions of
  the pointed-to file.  In contrast, chmod ignores symbolic links encoun-
  tered during recursive directory traversals.

En revanche, l'appel système chmod modifie peut-être les permissions
du lien symbolique. Dans ce cas, il faut que tu te fasses un petit
programme C qui le fasse. Mais le plus simple est peut-être de faire
un rm du lien symbolique et de recréer le lien avec "ln -s".

-- 
Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA



Reply to: