Comment définir les autorisations de fichiers pour que les nouveaux fichiers héritent des mêmes autorisations? [dupliquer]

35

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

Ensuite, 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:

  1. Les répertoires placés sous /path/to/parentsont exécutables par les utilisateurs ayant des autorisations.
  2. les fichiers sont lisibles / inscriptibles par l'utilisateur et les membres de somegroup
  3. Les fichiers et les dossiers /path/to/parentne sont PAS lisibles par tout le monde

Je cours sur Ubuntu 10.0.4 LTS.

Quelqu'un peut aider s'il vous plaît?

oompahloompah
la source

Réponses:

10

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 / groupe apache. Ce sera probablement soit 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 au groupe apache pour vous assurer avoir un accès de groupe au répertoire. (Quelque chose comme usermod -aG apache username)

Je ne voudrais pas chmod -Rtout 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 '+'.

Cher
la source
La solution la plus simple, à mon avis, est de s’ajouter au groupe d’utilisateurs Apache. Merci de suggérer cela. Je ne sais pas pourquoi je n'y ai pas pensé moi-même!
Oompahloompah
1
Est-ce o+wun bon choix ici? Les changements ne devraient-ils pas être limités à uet g? Sinon, quel est l'intérêt d'essayer de maintenir la sécurité sur le répertoire et les sous-répertoires?
jww
61

Les autorisations que vous recherchez sont 0770 et 0660.

  • rw-permissions → 110binaire → 6octal

La propriété du groupe peut être héritée par les nouveaux fichiers et dossiers créés dans votre dossier / chemin / vers / parent en définissant le bit setgid de la manière chmod g+ssuivante:

chmod g+s /path/to/parent

Maintenant, tous les nouveaux fichiers et dossiers créés sous / chemin / vers / parent auront le même groupe attribué tel que défini sur / chemin / vers / parent.


Les autorisations de fichiers POSIX ne sont pas héritées. elles sont données par le processus de création et combinées avec sa valeur umask actuelle.

Cependant, vous pouvez utiliser les listes de contrôle d' accès POSIX pour y parvenir. Définissez la liste de contrôle d' accès par défaut sur un répertoire:

setfacl -d -m u::rwX,g::rwX,o::- /path/to/parent

Ceci s’appliquera setfaclau répertoire / path / to / parent, en -mprécisant les ACL par -ddéfaut , celles qui seront appliquées aux éléments nouvellement créés. (Majuscule Xsignifie que seuls les répertoires recevront le +xbit.)

(Si nécessaire, vous pouvez ajouter un u:someuser:rwXou g:someuser:rwX- de préférence un groupe - aux ACL.)


Remarque: Sur les systèmes plus anciens utilisant ext3 / ext4, vous aviez l'habitude de monter le système de fichiers avec l' acloption, sinon il ignorerait toutes les listes de contrôle d'accès et interdirait d'en définir de nouvelles.

mount -o remount,acl /

Pour le définir de manière permanente, utilisez tune2fs -o acl <device>ou modifiez /etc/fstab.

Grawity
la source
5
Merci d'avoir pris le temps de répondre. Malheureusement, je suis tout à fait nouveau dans tout cela, et ce que vous avez écrit est indiscernable du grec à mes yeux (pardon à tous les SO grecs!). Je n'ai pas compris la plupart de ce que vous avez écrit. J'ai un processus Web et je veux donner à Apache la possibilité de créer des dossiers et des fichiers dans un dossier parent où seuls Apache (le propriétaire) et moi (le groupe) avons la possibilité de lire et de modifier des fichiers dans des répertoires. Tout le monde est interdit. c'est tout ce que j'essaie de faire. Apache doit pouvoir créer des sous-dossiers et y stocker des fichiers.
Oompahloompah
Cela ne fonctionne pas avec unzip?
datasn.io
2

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 écrit.

Ces étapes doivent faire ce que vous voulez (remplacez le répertoire dans les commandes par le répertoire que vous souhaitez utiliser):

  • ajouter umask 027au script par défaut d'Apache /etc/default/apache. Cela empêchera d’autres d’accéder aux fichiers ou au répertoire créés par apache.
  • exécutez chown www-data:www-data directoryle répertoire sur lequel vous voulez qu'apache puisse écrire.
  • exécutez chmod 750 directoryle répertoire sur lequel vous voulez qu'apache puisse é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.

BillThor
la source