J'ai un dossier dans lequel les nouveaux sous-dossiers et fichiers seront créés automatiquement, par un script.
Je souhaite conserver les autorisations d'utilisateur et de groupe de manière récursive pour tous les nouveaux dossiers et fichiers placés dans le répertoire parent. Je sais que cela implique de définir un problème persistant, mais je n'arrive pas à trouver une commande qui montre exactement ce dont j'ai besoin.
Voici ce que j'ai fait jusqu'à présent:
Sudo mkdir -p /path/to/parent
Sudo chmod -R 660 myself:somegroup /path/to/parent
Par la suite, je souhaite que les autorisations 660 soient définies de manière récursive sur tous les dossiers et fichiers placés dans /path/to/parent
.
Cependant, tout ce que j'ai essayé jusqu'à présent a échoué. Quelqu'un peut aider s'il vous plaît?
En réalité, le drapeau octal 660 n’est probablement même pas correct. Les autorisations que je veux sont:
/path/to/parent
sont exécutables par les utilisateurs ayant des autorisations./path/to/parent
ne sont PAS lisibles par tout le monde.Je cours sur Ubuntu 10.0.4 LTS.
Quelqu'un peut aider s'il vous plaît?
Grawity donne une excellente réponse, mais je suppose que la question modifiée a peut-être légèrement modifié les choses.
Je suggère de laisser le répertoire appartenant à l'utilisateur/au groupe Apache. Ce sera probablement Apache ou httpd en fonction de votre distribution.
par exemple.
chown -R Apache:apache /path/to/parent
Vous pouvez ensuite faire quelque chose comme https://serverfault.com/questions/164078/is-adding-users-to-the-group-www-data-safe-on-debian ou même vous ajouter à Apache groupe pour vous assurer que vous avez un accès de groupe au répertoire. (Quelque chose comme usermod -aG Apache username
)
Je ne voudrais pas chmod -R
tout le répertoire parce que vous ne voulez pas de scripts HTML, jpg ou autres choses aléatoires exécutables. Vous devez modifier les autorisations si nécessaire. (Bien que le ramener à 660 ne soit pas la pire des idées.)
Quelque chose que vous pouvez aimer essayer est:
chmod o+w file
Le «o» signifie «autre» et «w» signifie «écrire». Vous pouvez également avoir "u" pour "utilisateur" et "g" pour "groupe", ainsi que "r" et "x" qui, espérons-le, vont de soi. Vous pouvez supprimer les autorisations en utilisant '-' plutôt que '+'.
Les autorisations que vous recherchez sont 0770 et 0660.
rw-
permissions → 110
binaire → 6
octalLe propriété du groupe peut être hérité par les nouveaux fichiers et dossiers créés dans votre dossier/chemin/vers/parent en définissant le bit setgid en utilisant chmod g+s
comme ceci:
chmod g+s /path/to/parent
Maintenant, tous les nouveaux fichiers et dossiers créés sous/chemin/vers/parent se verront attribuer le même groupe que celui défini sur/chemin/vers/parent.
Les autorisations de fichiers POSIX sont not inherited; elles sont données par le processus de création et combinées avec sa valeur umask actuelle.
Cependant, vous pouvez utiliser POSIX ACL pour y parvenir. Définissez la ACL par défaut sur un répertoire:
setfacl -d -m u::rwX,g::rwX,o::- /path/to/parent
Ceci appliquera setfacl
au répertoire/chemin/à/parent, -m
odifiant le-d
efault ACLs - ceux qui seront appliqués aux éléments nouvellement créés. (X
majuscule signifie que seuls les répertoires recevront le bit +x
.)
(Si nécessaire, vous pouvez ajouter un u:someuser:rwX
ou un g:someuser:rwX
- de préférence un groupe - aux ACL.)
Remarque: Sur les systèmes plus anciens utilisant ext3/ext4, vous deviez monter le système de fichiers avec l'option acl
. Sinon, tous les ACL seraient ignorés et les nouveaux réglages ne seraient pas autorisés.
mount -o remount,acl /
Pour le définir de manière permanente, utilisez tune2fs -o acl <device>
ou éditez /etc/fstab
.
Je pense que vous compliquez exagérément la question. Si le répertoire de niveau supérieur n'est pas accessible aux autres, ceux-ci ne pourront pas créer de fichiers dans l'arborescence. L'accès en écriture au groupe n'est pas requis si seul Apache est en train d'écrire.
Ces étapes doivent faire ce que vous voulez (remplacez le répertoire dans les commandes par le répertoire que vous souhaitez utiliser):
umask 027
au script par défaut Apache /etc/default/Apache
. Cela empêchera d’autres d’accéder aux fichiers ou répertoires créés par Apache.chown www-data:www-data directory
sur le répertoire dans lequel Apache doit pouvoir écrire.chmod 750 directory
sur le répertoire dans lequel Apache doit pouvoir écrire.Autoriser Apache à écrire dans un répertoire ouvre la possibilité d'injecter toutes sortes de malwares dans le contenu que vous diffusez. Surveillez le contenu de cette arborescence de répertoires de manière appropriée.