2009-03-11 7 views
6

Parfois, je souhaite autoriser les utilisateurs à télécharger des fichiers via Apache. Il y a deux façons différentes de définir les permissions afin qu'Apache puisse écrire les fichiers téléchargés dans le répertoire.Quelles sont les meilleures pratiques pour les autorisations sur les répertoires Apache-writable?

  1. Je peux faire l'utilisateur Apache est en cours d'exécution en tant que propriétaire du répertoire afin qu'il ressemble à ceci:

    drwxr-xr-x 2 www admin 68 Sep 24 2007 uploadedfiles

  2. Je donne la permission d'écriture à « autres » où Apache est l'un des autres:

    drwxr-xrwx 35 egbert admin 1190 Mar 9 13:17 uploadedfiles

L'un d'entre eux est-il plus sûr que l'autre?

+1

Cette question semble être hors sujet car il ne s'agit pas de programmation ou de développement. Voir [Quels sujets puis-je poser à ce sujet?] (Http://stackoverflow.com/help/on-topic) dans le centre d'aide. Peut-être [Super User] (http://superuser.com/) ou [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/) serait un meilleur endroit à demander. Voir aussi [Où poser des questions sur Dev Ops?] (Http://meta.stackexchange.com/q/134306). – jww

Répondre

2

Il y a 2 questions à poser ici - d'abord, qui d'autre (si quelqu'un) a besoin d'accéder à ces fichiers? S'il y a d'autres processus qui agissent sur ces fichiers, qui sont-ils en cours d'exécution et comment cela interagira-t-il avec la solution choisie? S'il n'y a pas d'autres processus ou utilisateurs accédant aux fichiers, je ferais de l'utilisateur Apache le propriétaire, car c'est tout ce qui est nécessaire, et il suit l'un des principes les plus anciens en matière de sécurité - seulement les ont besoin de l'accès à quelque chose l'avoir.

1

Si le système est utilisé à d'autres fins, vous devriez probablement éviter de donner des permissions via les 'autres'. Autoriser des autorisations ici signifierait essentiellement que tout ce qui fonctionne sur cet ordinateur, ou avec l'accès à cet ordinateur, aurait des droits sur ces fichiers.

De même, vous pouvez créer un groupe supplémentaire, et faire de Apache un membre du groupe, et quiconque est dans l'admin, et changer la propriété du groupe pour ce groupe, et donner des autorisations à ce groupe. Si vous utilisez un groupe, vous aurez probablement besoin de définir le bit 'setgid' sur le répertoire. Lorsque le bit setgid est défini, tous les fichiers créés obtiendront la même appartenance au groupe du répertoire parent.

1

La règle générale avec la sécurité est celle du moindre privilège. Vous souhaitez utiliser des autorisations minimales comme possible. Dans ce cas, la première option (inscriptible par Apache) signifie que le répertoire ne peut être écrit que si votre système est compromis via l'utilisateur Apache, alors qu'avec l'option deux (accessible à tous), n'importe quel compte peut être compromis et écrire dessus. annuaire. Dans ce cas, je voudrais aller avec option:

drwxr-xr-x 2 www admin 68 24 sept 2007 Uploadedfiles

4

L'accès le plus restrictif, dans ce cas, un accès exclusif à www/admin avec la permission 0750, est toujours le plus sûr. Notez que, dans le masque d'autorisation ci-dessus, les utilisateurs qui ne sont ni www ni les membres de admin ne sont pas autorisés à accéder au contenu du répertoire; C'est afin réduire la possibilité qu'une partie non autorisée connecté dans le système accéder à des informations potentiellement confidentielles téléchargés par les utilisateurs.

Ne pas oublier que la plupart des plates-formes * nix vous avez également une troisième option extrêmement flexible, à savoir, la mise en ACLs utilisant setfacl. Les ACL sont un sur-ensemble de ce qui peut être réalisé avec les bits d'autorisation et les méthodes de propriété.Les ACL sont l'option de choix face à des configurations de sécurité complexes (y compris les autorisations par utilisateur, propriété par défaut, etc.). Vous devez d'abord ajouter acl à /etc/fstab dans les options de montage du volume hébergeant votre répertoire, voir man mount. Vous pouvez choisir d'utiliser des ACL si deux utilisateurs ou plus ont besoin d'accéder au répertoire en question sans être membres du groupe admin, par exemple.

1

L'accès en lecture aux autres est également un risque pour la sécurité. Wordpress par exemple, a un fichier contenant le nom d'utilisateur et le mot de passe de la base de données. Stack Overflow est un site de questions de programmation et de développement.

Questions connexes