Si un fichier dispose d'autorisations, -rwx-wx-wx
peut-il être lu par d'autres utilisateurs et des utilisateurs du groupe, ou peut-il uniquement être exécuté et écrit? Existe-t-il un moyen de lire un fichier exécutable en l'exécutant?
9
Réponses:
Un fichier avec des
-rwx-wx-wx
autorisations a des autorisations de lecture / écriture / exécution pour le propriétaire et des autorisations d'écriture / exécution (mais pas de lecture) pour tout le monde.S'il s'agit d'un script (généralement un fichier texte avec un
#!
sur la première ligne), il ne peut pas être exécuté par d'autres, car l'exécution d'un script exécute vraiment l'interpréteur, qui doit pouvoir lire le script. (L'interpréteur doit être un binaire, pas un autre script.) (En fait, ce n'est pas vrai pour tous les systèmes; Ubuntu, avec un noyau Linux 3.2.0, permet à l'interpréteur lui-même d'être un script interprété. Il semble y avoir une limite de environ 4 niveaux. Ce n'est probablement pas pertinent pour cette question.)S'il s'agit d'un exécutable binaire, il peut être exécuté directement, mais son contenu ne peut pas être lu. Cela signifie, par exemple, qu'une personne autre que le propriétaire peut l'exécuter en tant que commande, mais ne peut pas récupérer une copie de l'exécutable.
Bien sûr, l'exécution nécessite une lecture, mais elle est lue par le noyau, pas par l'utilisateur. Vous pourrez peut-être obtenir des informations sur le contenu de l'exécutable en examinant la mémoire du processus en cours d'exécution, mais je doute que vous puissiez reconstruire le fichier exécutable binaire. Et si l'exécutable est setuid, vous ne pouvez pas examiner la mémoire du processus (sauf si vous avez accès au compte sous lequel il s'exécute).
Soit dit en passant,
-rwx-wx-wx
est un ensemble très étrange d'autorisations; il protège le fichier contre toute lecture autre que le propriétaire, mais permet à quiconque de le modifier. Je ne peux pas penser à un cas où cela aurait du sens.la source
chmod 111 hello ; gdb ./hello
dit./hello: Permission denied.
;r
ditNo executable file specified.
Avec ces autorisations, seul le propriétaire du fichier peut l'exécuter.
D'autres utilisateurs peuvent y écrire, mais pas l'exécuter (car l'exécution dans ce cas implique de pouvoir le lire) mais ils peuvent l'écrire comme une sorte de boîte noire:
la source
La réponse simple est non : seul
exec
syscall peut lire un fichier sans avoir besoin d'un accès en lecture (bien qu'il soit obligatoire d' exécuter l' accès). Unopen
avecO_RDONLY
ouO_RDWR
échouera.la source
Bien sûr, n'importe quel fichier peut être lu par l'utilisateur root.
De plus, le chargeur du système, la gestion de la mémoire, le swapper, etc .... liront un fichier avec l'autorisation 'x', sinon il ne pourra pas être exécuté.
Les trous possibles dans la divulgation du contenu exécutable pourraient être le fichier / proc du processus, les fichiers principaux ou l'utilisation d'un débogueur.
la source
chmod
|chown
a été jouée