Qui sont les «autres» dans les autorisations Linux et que signifie «exécuter»?

13

Je n'ai pas pu trouver les réponses à ces trois questions:

  • 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/wwwchested apache, et que nous le saisissons , chmod 700cela devrait fonctionner, non?

  • Quelle est la différence entre "exécuter" et "lire"?

  • Quelles sont les autorisations de fichiers par défaut pour l'ensemble du système après une nouvelle installation (par exemple dans Ubuntu)?

randomKek
la source

Réponses:

16

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/wwwchested apache, et que nous le saisissons , chmod 700cela 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 -let 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 chmodun 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 600autorisations. 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 apacheposséder le /var/wwwré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-usersgroupe, 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 /binpour 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.

slhck
la source
Merci, vous m'avez vraiment beaucoup aidé! Je ne vous remercierai jamais assez, encore une question, où est la ligne entre "fichier" et "exécutable" par exemple les fichiers PHP sont-ils exécutés ou lus par Apache? Encore merci beaucoup!
randomKek
.phples fichiers ne sont normalement pas exécutables. Ils sont, pour parler simplement, uniquement lus par Apache lorsque vous pointez votre navigateur vers par exemple http://example.com/file.phpAvant 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 notre testfichier, mais cela est rarement utilisé.
slhck
5

Je veux juste ajouter que l'autorisation d'exécution a différentes significations efficaces pour les répertoires:

Pour les fichiers :

  • Lire: si le contenu du fichier peut être lu
  • Écriture: si l'utilisateur ou le processus peut écrire dans le fichier (modifier son contenu)
  • Exécuter: si le fichier peut être exécuté

Pour les dossiers :

  • Lire: Si la liste des répertoires peut être obtenue
  • Écrire: si l'utilisateur ou le processus peut modifier le contenu du répertoire d'une manière ou d'une autre: créez de nouveaux fichiers ou supprimez des fichiers existants dans le répertoire ou renommez les fichiers.
  • Exécuter: si l'utilisateur ou le processus peut accéder au répertoire, c'est-à-dire y accéder (en faire le répertoire de travail actuel)

Non, il n'y a pas d'autorisation de suppression distincte pour les répertoires.

(Vous avez cette information ici .)

LawrenceC
la source
0

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.

Mike L.
la source
0

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:

+--------------------------------------------------+
| Execute Yes (./file.sh) | Read Yes (vim file.sh) |
|--------------------------------------------------|
| Execute Yes (./file.sh) | Read No (ERROR)        |
|--------------------------------------------------|
| Execute No (ERROR)      | Read Yes (vim file.sh) |
|--------------------------------------------------|
| Execute No (ERROR)      | Read No (ERROR)        |
+--------------------------------------------------+

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.

nouveau123456
la source
0

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.

conspiritech
la source