Qui est "autres", si nous donnons à tous les services sur notre serveur un utilisateur, "les autres" n'existent pas non? Par exemple, si nous mettons Apache à un utilisateur, et que nous le définissons comme /var/www
chested apache
, et que nous le saisissons , chmod 700
cela devrait fonctionner, non?
Voici comment les autorisations fonctionnent, expliquées de manière très brève:
Le premier chiffre est pour le propriétaire réel d'un fichier (vérifiez à qui appartient un fichier ls -l
et modifiez-le avec chown
)
Le deuxième chiffre est pour le groupe du fichier (bien que le propriétaire d'un fichier ne doit pas nécessairement être dans le même groupe qui possède le fichier)
Le troisième chiffre est toute autre personne, c'est-à-dire pas le propriétaire du fichier et tout le monde ne faisant pas partie du groupe.
Donc, si vous possédez chmod
un fichier à 700 et qu'il appartient à apache
, même votre utilisateur "normal" ne pourra pas le lire, l'écrire ou l'exécuter. Ceci est très restrictif et n'est nécessaire que dans de rares occasions - par exemple, lorsque vous souhaitez sécuriser votre clé privée SSH, il obtient des 600
autorisations. Pour Apache, cela pourrait même entraîner d'autres problèmes, à part le fait qu'avec votre compte d'utilisateur normal, vous ne pourrez plus modifier aucun fichier /var/www
.
Donc, en règle générale, vous ne devriez pas avoir besoin de supprimer les autorisations de lecture ( x00
) pour les autres.
Vous pouvez laisser apache
posséder le /var/www
répertoire, mais avec 644
(en lecture seule pour les autres) peut-être. Une autre approche que je souvent l' utilisation ajoute votre propre utilisateur et l'utilisateur Apache à un nouveau www-users
groupe, puis les fichiers chmodding dans /var/www
à 775
. De cette façon, vous et Apache pouvez écrire dans les fichiers. Voir ici pour plus d'informations: autorisations de groupe pour apache
Quelle est la différence entre "exécuter" et "lire"?
Les fichiers exécutables peuvent être exécutés directement par un utilisateur - directement à partir du shell. Pour le démontrer, écrivons un court fichier et appelons-le "test". Ajoutez le contenu suivant:
echo "I am executable"
Enregistrez le fichier. Maintenant, dans votre shell, essayez d'entrer ./test
. Vous obtiendrez une erreur " -bash: ./test: Autorisation refusée ". En effet, par défaut, les fichiers nouvellement créés ne comportent pas d'autorisations d'exécution. Si vous ajoutez l'autorisation d'exécution, cela fonctionnera.
$ chmod +x test
$ ./test
I am executable
Maintenant, ce n'était qu'un script de test, mais généralement, tous les fichiers binaires (comme les programmes compilés) ont également besoin du jeu d'autorisations d'exécution, vous pouvez donc réellement exécuter et faire quelque chose avec eux, et pas seulement lire.
Ce sont par exemple les programmes système que l'on trouve principalement dans /bin
. Exécutez ls -l /bin
pour inspecter leurs autorisations. Comme vous pouvez le voir, ils appartiennent à root
, et vous ne pouvez pas les modifier, mais vous pouvez toujours les exécuter.
Il s'agit donc également d'une fonction de sécurité, car vous pouvez restreindre l'exécution de certains scripts et binaires pour certains utilisateurs.
Pour en savoir plus sur les autorisations Unix, lisez l'article Wikipedia . Les autorisations de base que vous appelez "lecture-écriture-exécution" existent depuis longtemps, mais ne font que partie de ce que vous appelez les listes de contrôle d'accès - qui offrent beaucoup plus de fonctionnalités que cela.
Quelles sont les autorisations de fichiers par défaut pour l'ensemble du système après une nouvelle installation (par exemple dans Ubuntu)?
Ils varient selon le répertoire et le propriétaire. Certains fichiers et répertoires sont réservés au système et appartiennent à root
. Dans la plupart des cas, vous pourrez néanmoins les lire avec votre compte d'utilisateur normal.
D'autres répertoires comme votre dossier personnel appartiennent évidemment à votre utilisateur. Il pourrait être judicieux de refuser les autorisations de lecture à d'autres utilisateurs sur une machine si elle est partagée entre plusieurs personnes - après tout, vous ne voulez pas que vos informations privées soient exposées.
Enfin, certains fichiers sont exécutables par défaut (par exemple dans /bin
), mais d'autres ne le sont pas (par exemple, les fichiers de configuration dans /etc
).
La norme de hiérarchie du système de fichiers spécifie l'utilisation prévue des répertoires trouvés dans les systèmes Linux. Vous pouvez presque "deviner" quelles devraient être les autorisations en fonction de ce que vous voulez faire avec un répertoire.
.php
les fichiers ne sont normalement pas exécutables. Ils sont, pour parler simplement, uniquement lus par Apache lorsque vous pointez votre navigateur vers par exemplehttp://example.com/file.php
Avant qu'Apache puisse afficher la sortie, ils doivent être interprétés par votre installation PHP, mais Apache s'en charge. Vous pouvez théoriquement rendre un fichier PHP exécutable et l'exécuter comme un script - dans la même veine que nous l'avons fait avec notretest
fichier, mais cela est rarement utilisé.Je veux juste ajouter que l'autorisation d'exécution a différentes significations efficaces pour les répertoires:
Pour les fichiers :
Pour les dossiers :
Non, il n'y a pas d'autorisation de suppression distincte pour les répertoires.
(Vous avez cette information ici .)
la source
Je ne suis pas un expert Linux, mais j'essaie quand même de répondre.
Chaque entrée du système de fichiers a un utilisateur et un groupe associés. Les autorisations de l'utilisateur sont gérées par les drapeaux "utilisateur". Les autorisations utilisateur des utilisateurs qui font partie du même groupe sont gérées par les indicateurs "groupe". Tous les autres utilisateurs sont traités par les drapeaux "autres".
"lire" signifie ce qu'il dit. "exécuter" signifie que vous pouvez lancer le fichier (par exemple une commande) ou que vous pouvez lister le répertoire.
Concernant l'autorisation par défaut, je ne suis pas sûr. Je suppose qu'il peut être configuré d'une manière ou d'une autre et peut donc être différent pour chaque utilisateur.
la source
Pour vous donner une réponse décente à la question 2, au moins, voici un tableau récapitulatif montrant ce que vous pouvez / ne pouvez pas faire:
Ce qui est important à retenir, c'est que ce n'est pas le fichier de lecture de l'utilisateur en mémoire pour l'exécuter, c'est le KERNEL qui le fait au nom de l'utilisateur.
la source
Cela peut être délicat si vous souhaitez exclure tous les autres. Regardez cette liste dans mon fichier / etc / passwd (autorisations et autres éléments supprimés pour plus de clarté):
root daemon bin sys sync games man lp mail news uucp proxy www-data backup list irc gnats libuuid syslog messagebus usbmux haldaemon personne
un {c'est moi, et ci-dessous voici des choses que j'ai installées, surtout avec le système}
avahi mysql pulse rtkit saned timidity didiwiki
Ainsi, par exemple, supprimez les autorisations de lp ou uucp et vous interromprez l'impression. supprimez l'autorisation de bin, sys ou daemon et probablement beaucoup de choses se briseront. irc, les jeux, le courrier, les actualités et la sauvegarde pourraient probablement être supprimés en toute sécurité (sauf si vous les utilisez via le système, pas avec un navigateur). le reste je laisse à vos compétences de moteur de recherche.
Il s'agit cependant d'ubuntu / bodhi linux, et d'autres systèmes peuvent avoir moins d'extras. tous ces autres sont cependant pour éviter d'avoir à tout exécuter en tant que root. j'imagine qu'il est possible de créer un système où chaque fichier peut être lu / écrit / exécuté par un seul des utilisateurs du système (barre racine) mais je ne suis pas sûr qu'il ait été essayé.
Exécuter est autorisé à exécuter du code. La lecture est la permission de regarder (et de copier?) Seulement.
la source