Lorsque j'utilise 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 d'exécution ("x").
[email protected]:/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
[email protected]:/opt/lampp/htdocs/project$ touch file
[email protected]:/opt/lampp/htdocs/project$ mkdir dir
[email protected]:/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 quelque chose ne me manque.
Comment résoudre ce problème ?
Réponse acceptée :
La réponse de Hauke Laging essaie de dire :
cp
et les programmes associés (par exemple,cpio
,tar
, etc.)
qui copient ou recréent un fichier,
qui (tentera de) définir le nouveau fichier sur le même mode
que le fichier d'origine.- Les compilateurs, qui créent des fichiers exécutables binaires, spécifient un mode de 777
(au moins, si la compilation réussit),
afin que l'utilisateur puisse réellement exécuter le programme qu'il vient de compiler.
Tout programme qui crée un fichier ou un répertoire spécifie le mode (autorisations)
qu'il veut que ce fichier ait.
Ceci est presque toujours codé en dur dans le programme C
(ou quel que soit le langage utilisé)
et n'est presque jamais directement accessible à l'utilisateur.
Puis le umask
et l'ACL par défaut peuvent désactiver les bits d'autorisation,
mais pas les ajouter.
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 le touch
, le shell
(pour la redirection d'E/S ; par exemple, program > file
),
les éditeurs (vi
, vim
, emacs
, etc…), dd
, split
, etc.
Par conséquent, vous n'obtiendrez pas les autorisations de rwxrwxrwx
sur un fichier ordinaire
immédiatement après sa création (par l'un de ces programmes),
quoi que vous fassiez avec les ACL ;
vous devez créer le fichier puis chmod
il.
Il existe quelques exceptions à cette règle :