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.