Pour autant que je sache, cela est codé en dur dans les utilitaires standard. Je strace
souhaitais à la fois touch
créer un nouveau fichier et mkdir
créer un nouveau répertoire.
La touch
trace a produit ceci:
open("newfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
tandis que la mkdir
trace a produit ceci:
mkdir("newdir", 0777) = 0
À moins de coder le processus de création de fichier / répertoire en C, je ne vois pas de moyen de modifier les autorisations par défaut. Il me semble cependant que ne pas rendre les fichiers exécutables par défaut est logique: vous ne voulez pas qu'un texte aléatoire soit mal interprété par erreur comme des commandes shell.
Mise à jour
Pour vous donner un exemple de la façon dont les bits d'autorisation sont codés en dur dans les utilitaires standard. Voici quelques lignes pertinentes de deux fichiers du coreutils
package qui contiennent le code source pour les deux touch(1)
et mkdir(1)
, entre autres:
mkdir.c
:
if (specified_mode)
{
struct mode_change *change = mode_compile (specified_mode);
if (!change)
error (EXIT_FAILURE, 0, _("invalid mode %s"),
quote (specified_mode));
options.mode = mode_adjust (S_IRWXUGO, true, umask_value, change,
&options.mode_bits);
free (change);
}
else
options.mode = S_IRWXUGO & ~umask_value;
}
En d'autres termes, si le mode n'est pas spécifié, réglez-le sur S_IRWXUGO
(lire: 0777) modifié par le umask_value
.
touch.c
est encore plus clair:
int default_permissions =
S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
Autrement dit, donnez des autorisations de lecture et d'écriture à tout le monde (lire: 0666), qui seront umask
bien sûr modifiées par le processus de création de fichiers.
Vous pouvez peut-être contourner ce problème uniquement par programme: c'est-à-dire lors de la création de fichiers à partir d'un programme C, où vous effectuez les appels système directement ou à partir d'un langage qui vous permet de faire un appel système de bas niveau (voir par exemple Perl sysopen
sous perldoc -f sysopen
).
umask
j'ai rencontré était toujours 0022, créant l'autorisation par défaut 644.