Pour des raisons évidentes, je dois définir la umask
valeur d'un dossier spécifique. Comment faire ça?
Merci d'avance!
MISE À JOUR 1
La raison pour laquelle j'ai besoin d'utiliser umask pour un dossier spécifique est la suivante. J'ai une application Web et lorsqu'elle crée un fichier, l'autorisation par défaut est 700. Mais j'ai besoin d'au moins 755 autorisations pour ce fichier. Je pense que je pourrais expliquer le problème plus clairement maintenant.
permissions
umask
Bakhtiyor
la source
la source
Réponses:
tu pourrais utiliser
setfacl
Où
name
est le nom du groupePour trouver les groupes auxquels vous ou un utilisateur spécifique appartenez, voir sous Unix / linux comment savoir dans quel groupe se trouve un utilisateur donné via la ligne de commande?
la source
setfacl
a changé. Je reçois une erreur indiquant que ce-m
n'est pas une option valide.setfacl
n'est pas changé. Vous n'avez probablement pas fourni le nom de groupe approprié (après-m
).setfacl
est sûr pour les listes de contrôle d'accès et nonumask
. Une meilleure solution mais pas vraiment ce qui a été demandé, je ne pense pas.sudo setfacl -Rdm ...
(Omettez le R pour la récursivité) devrait fonctionner. @ Wyatt8740 (correct). Pour être certain, exécutez:man setfacl
et tapez/-modify
. Vous devez utilisersudo
.Vous ne pouvez pas définir umask par répertoire, c'est une valeur au niveau du processus. Si vous devez empêcher d'autres personnes de lire des fichiers dans un répertoire, révoquez les bits d'autorisation correspondants.
Par exemple, si vous avez un répertoire
/home/user/directory
avec des fichiers et des répertoires qui peuvent obtenir des autorisations comme 777 à partir d'un processus, définissez les bits d'autorisation de/home/user/directory
quelque chose comme 700. Cela rendra impossible pour les autres utilisateurs (à l'exclusion de la racine du superutilisateur) de descendre dans/home/user/directory
.Je suis paranoïaque et je définis les autorisations sur
/home/user
750, donc seulement je peux lire, écrire et descendre dans mon répertoire personnel. Cela a pour conséquence que les dossiers comme/home/user/Public
ne sont pas accessibles aux autres, mais je peux vivre avec ça.Par mise à jour de votre question: vous ne pouvez toujours pas contrôler que dans le système de fichiers (autre que l'utilisation d'un type de système de fichiers différent comme FAT qui est fortement déconseillé), vous devez le faire dans votre application Web. Si votre webapp est codée en PHP, vous pouvez changer le umask à la volée en utilisant la
umask
fonction:Vous pouvez le mettre dans un fichier de configuration, comme le fichier contenant le mot de passe de connexion à la base de données (en pensant dans des applications comme Wordpress).
N'oubliez pas qu'il s'agit d'une valeur de processus, certains serveurs Web vous permettent de la définir dans leurs fichiers de configuration, sinon vous pouvez modifier les scripts de démarrage pour définir le umask souhaité. N'oubliez pas que les autorisations aiment
755
et644
sont assez dangereuses pour les applications Web, si le code est sensible, tout le monde peut le lire.la source
/home/user/Public
(mount -o bind /home/user/Public /some/other/place
) pour contourner le problème des autorisations du répertoire parent.Pour modifier les autorisations d'un dossier, utilisez chmod. umask est destiné aux fichiers.Réglez umask sur ce dont vous avez besoin
et changez quand vous avez terminé
la source
umask
). Désolé d'avoir ajouté des informations déroutantes.Une autre solution pourrait être de simplement définir l'ID de groupe sur les fichiers créés dans le répertoire, ce qui fait que les nouveaux fichiers appartiennent à l'ID de groupe du répertoire, au lieu de l'ID de groupe de l'utilisateur qui a créé les fichiers. Je pense donc que vous pourriez simplement faire:
chown www-data:www-data /my/folder
chmod 4755 /my/folder
Cela définit l'autorisation de fichier spécial setgid, ce qui entraînerait la
/my/folder
propriété de tous les fichiers créés dans lewww-data
groupe, qui dispose alors de l'autorisation rx (5) en raison du répertoire parent.la source
Fournir une solution d'anthère implémentée avec des crochets de coque et
direnv
. La solution suivante peut être plus compatible au cas où ellesetfacl
ne serait pas disponible sur votre système. (par exemple macOS)Utilisez
.envrc
laexport
commandeumask
valeur pour dir spécifique et leexport
var env é sera déchargé lorsque vous quittez ce répertoire.Définissez un hook pour modifier la
umask
valeur une fois le répertoire de travail modifié.Pour l'instant, l'initialisation du hook direnv pour zsh ne prend pas en charge le
chpwd
hook. Si la demande d'extraction GH-514 n'a pas été fusionnée lorsque vous voyez cette page. S'il vous plaît commentereval "$(direnv hook zsh)"
et accrochez -direnv
lechpwd
manuellement à l' aide du code ci - dessous,Source: dynamic-umask-based-on-cwd.md
la source
Associé, mais peut-être pas applicable dans ce cas, le clip suivant provient de
.zshrc
:Donc, pour une utilisation interactive, quelque chose comme ça fonctionnerait (mais, évidemment, pas pour assurer la sécurité).
la source