Lorsque jutilise setfacl pour gérer les autorisations que doivent avoir les fichiers / répertoires enfants, pour une raison quelconque, les fichiers ont toutes les autorisations sauf celle dexécution (« x »).

someuser@someuser-MS-7816:/opt/lampp/htdocs/project$ getfacl . # file: . # owner: someuser # group: webs # flags: -s- user::rwx group::rwx other::rwx default:user::rwx default:group::rwx default:other::rwx someuser@someuser-MS-7816:/opt/lampp/htdocs/project$ touch file someuser@someuser-MS-7816:/opt/lampp/htdocs/project$ mkdir dir someuser@someuser-MS-7816:/opt/lampp/htdocs/project$ ls -l total 4 drwxrwsrwx+ 2 someuser webs 4096 paź 31 13:35 dir -rw-rw-rw- 1 someuser webs 0 paź 31 13:35 file 

Je pensais que cela avait quelque chose à voir avec umask, mais le changer de différentes manières ne donne jamais le résultat attendu à moins que je ne manque quelque chose.

Comment cela peut-il être corrigé?

Réponse

La réponse de Hauke Laging essaie de dire:

Tout programme qui crée un fichier ou un répertoire spécifie le mode (autorisations) quil souhaite que ce fichier ait. Ceci est presque toujours codé en dur dans le programme C (ou dans le langage utilisé ) et nest presque jamais directement accessible à lutilisateur. Ensuite, la valeur umask et lACL par défaut peuvent désactiver les bits dautorisation, mais pas ajoutez-les.

Votre problème est que, alors que mkdir spécifie un mode de 777 (rwxrwxrwx), presque tous les programmes qui créent des fichiers spécifient 666 (rw-rw-rw-). Cela inclut touch, le shell (pour la redirection dE / S; par exemple, program > file), les éditeurs (vi, vim, emacs, etc…), dd, split, et ainsi de suite. Par conséquent, vous nobtiendrez pas les autorisations de rwxrwxrwx sur un fichier brut immédiatement après sa création (par lun de ces programmes), peu importe ce que vous faites avec les ACL; vous devez créer le fichier, puis chmod.

Il existe quelques exceptions à cette règle:

  • cp et les programmes associés (par exemple, cpio, tar, etc.) qui copient ou re -créer un fichier, qui (tentera de) définir le nouveau fichier sur le même mode que le fichier dorigine.
  • Les compilateurs, qui créent des fichiers exécutables binaires, spécifient un mode de 777 (au moins, si le la compilation réussit), de sorte que lutilisateur pourra réellement exécuter le programme quil vient de compiler.

Commentaires

  • Je suppose que cela sapplique aux modes dautorisation Unix traditionnels, qui correspondent à user, group et other Entrées ACL. Si vous avez des entrées ACL par défaut pour des utilisateurs ou des groupes nommés, elles ‘ seront héritées comme spécifié, nest-ce pas?
  • Sagit-il dune citation de quelque part? Si tel est le cas, ajoutez la source et, dans le cas contraire, supprimez la mise en forme du devis.
  • @terdon: Ce n’est pas un devis; cest (comme décrit) une paraphrase de la réponse de Hauke Laging . Comment cela devrait-il être géré? (1) Jaurais pu modifier lautre réponse, mais je sais que les réécritures massives des messages dautres personnes sont mal vues. (Et notez, FWIW, que mon représentant sur ce site était < 2000 en octobre 2014.) (2) Jaurais pu le publier comme commentaire sur lautre réponse. Ou plutôt, jaurais pu le publier sous la forme dune série de trois commentaires, car il contient > 1 200 caractères. Mais cela ne correspond pas à ma compréhension de l’objet des commentaires. … (Suite)
  • Hé, ce n’était ‘ t une plainte! Cest une bonne réponse et je ne lai trouvée que parce que je me demandais la même chose. Je supprimerais simplement la mise en forme de la citation, que ‘ est tout. Publier une réponse clarifiant une réponse existante est très bien tant que vous mentionnez loriginal (ce que vous avez fait). Oui, lajout dun lien serait une bonne idée, mais ce nest ‘ pas grand-chose. Vous ne copiez clairement pas simplement sa réponse dans la vôtre.
  • Je ne pensais pas que cétait une plainte; merci pour léloge. Mais vous réalisez sûrement que toute demande dun losange a lair dune main de fer dans un gant de velours. 🙂 P.S. Jai modifié ma réponse conformément à votre suggestion.

Réponse

Vous ne « mentionnez pas ce que » résultat attendu « est. Je suppose que ce sont les fichiers ayant les bits x définis.

Vous ne pouvez pas appliquer cela par défaut ACL (comme umask) empêche simplement les autorisations mais ne les définit pas lui-même. Un nouveau répertoire ou fichier nobtient pas plus dautorisations (pour lutilisateur, le groupe et autre) que open() ou mkdir() qui le crée demande.

Pour les fichiers, seules les autorisations de lecture et décriture sont demandées. Mais si un compilateur crée un fichier binaire, il demande également lautorisation dexécution.

Commentaires

  • Votre réponse est assez chaotique du point de vue anglais. Pouvez-vous la corriger? De plus, je ‘ ne suis pas sûr ce que vous voulez dire. Jetez un œil à mon code. Pour les répertoires, cela fonctionne toujours.Pour les fichiers, cela fonctionne toujours sauf le bit  » x « . De plus, si ‘ nest pas la bonne façon de procéder, quest-ce que cest que de définir un umask à chaque fois quun répertoire est accédé?

Réponse

$ touch file && chmod a+x file

Les explications dans les autres réponses sont superbes. Je veux ajouter quelque chose qui donne réellement une réponse à la question,

Comment cela peut-il être corrigé?

avec un code spécifique. @Scott a indiqué comment faire cela,

vous devez créer le fichier, puis chmod.

Le code de ma réponse montre comment le faire et le met en évidence en le mettant en premier.


Plus dexplications

Pour commencer, pour simplifier, jajoute simplement au touch commande donnée par lOP, spécifiquement touch file devient touch file && chmod a+x file.

someuser@someuser-MS-7816:/opt/lampp/htdocs/project$ touch file && chmod a+x file someuser@someuser-MS-7816:/opt/lampp/htdocs/project$ mkdir dir someuser@someuser-MS-7816:/opt/lampp/htdocs/project$ ls -l total 4 drwxrwsrwx+ 2 someuser webs 4096 paź 31 13:35 dir -rwxrwxrwx 1 someuser webs 0 paź 31 13:35 file 

Ici, je vais configurer la même situation sur ma machine (Cygwin) pour montrer que cela fonctionne, puis faire de même sur une boîte virtuelle Ubuntu pour montrer les différences dans la configuration . (Notez que la commande réelle pour réparer les choses ne change pas, je veux simplement montrer quelques différences qui pourraient apparaître avec setfacl, ainsi que pour vérifier moi-même que cela fonctionne .)

$ uname -a | head -n 1 CYGWIN_NT-10.0 my_machine 2.10.0(0.325/5/3) 2018-02-02 15:16 x86_64 Cygwin $ pwd /home/me $ mkdir user294034 $ setfacl -m u::rwx user294034/ $ setfacl -m d:u::rwx user294034/ $ setfacl -m g::rwX user294034/ setfacl: illegal acl entries $ setfacl -m g::rws user294034/ setfacl: illegal acl entries $ # I guess I don"t know how to get the `flags: -s-` on Cygwin $ setfacl -m g::rwx user294034/ $ setfacl -m d:g::rwx user294034/ $ setfacl -m o::rwx user294034/ $ setfacl -m d:o::rwx user294034/ $ cd user294034 $ getfacl . # file: . # owner: me # group: my_group user::rwx group::rwx other:rwx default:user::rwx default:group::rwx default:other:rwx $ # I admitted that I don"t know how to get `# flags: -s-` $ umask 0022 $ umask 0000 $ touch file $ mkdir dir $ # Here, we"ll see the same problem $ ls -l total 0 drwxrwxrwx+ 1 me my_group 0 Sep 18 20:31 dir -rw-rw-rw- 1 me my_group 0 Sep 18 20:31 file $ # Here, we"ll fix the problem $ rm file $ touch file && chmod a+x file $ ls -l total 0 drwxrwxrwx+ 1 me my_group 0 Sep 18 20:31 dir -rwxrwxrwx 1 me my_group 0 Sep 18 20:32 file 

Réponse

Vous pouvez essayer ce simple script remplace les enregistrements ACL pour chaque fichier et répertoire, en donnant les permissions par défaut spécifiées.

$ cd ~ $ mkdir .config $ cat <<"EOF" >> .config/dacl user::rwx group::rwx other:r-x default:user::rwx default:group::rwx default:other:r-x EOF $ cat <<"EOF" >> .config/facl user::rw- group::rw- other:r-- default:user::rw- default:group::rw- default:other:r-- EOF $ cd / $ find $1 -type d -exec setfacl -f ~/.config/dacl {} \; $ find $1 -type f -exec setfacl -f ~/.config/facl {} \; $ getfacl . # file: . # owner: MyUser # group: Administrators user::rwx group::rwx other::r-x default:user::rwx default:group::rwx default:other::r-x 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *