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.
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:
user1:~$ cd /tmp
user1:/tmp$ echo "hostname" > testfile.sh
user1:/tmp$ chmod +x testfile.sh
user1:/tmp$ ./testfile.sh
server.example.com
user1:/tmp$ chmod 733 testfile.sh
user1:/tmp$ ls -l testfile.sh
-rwx-wx-wx 1 user1 user1 9 Jan 19 21:09 testfile.sh
user1:/tmp$ sudo su - user2
user2:~$ cd /tmp
user2:/tmp$ ./testfile.sh
./testfile.sh: Permission denied
user2:/tmp$ cat testfile.sh
cat: testfile.sh: Permission denied
user2:/tmp$ echo 'echo hello' >> testfile.sh
user2:/tmp$ ./testfile.sh
./testfile.sh: Permission denied
user2:/tmp$ logout
user1:/tmp$ ./testfile.sh
server.example.com
hello
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.
chmod
| chown
a été jouée