bindbn, j'étais sur le point de poster le même lien :-) mais je me lisais car je suis nouveau dans les trucs unix / linux !!!
rihatum
2
Sur une distribution 64 bits, vous devrez peut-être utiliser à la /lib64/ld-linux-x86-64.so.2place. ldd /bin/chmoddevrait répertorier exactement l'éditeur de liens à exécuter.
goldPseudo
J'écrirais un programme minimal qui utilise chmod (2), mais c'est plus cool
adamo
1
@Stefan: De man ld-linux.so: "ld.so [et ld-linux.so] charge les bibliothèques partagées nécessaires à un programme, prépare le programme à s'exécuter, puis l'exécute." ( ld.soconcerne les a.outexécutables au format et le ld-linux.soformat ELF.)
pause jusqu'à nouvel ordre.
1
@Stefan: Le noyau ne sait pas vraiment comment charger et exécuter des exécutables liés dynamiquement, car il est très complexe et suit la glibc, pas le noyau. ld-linux.soest une sorte d'exécutable / bibliothèque hybride, une sorte de lien statique, s'exécute dans l'espace utilisateur et est chargé de charger les exécutables liés dynamiquement et toutes leurs dépendances, puis de les exécuter.
Juliano
18
Utilisez python:
# python
Python> import os
Python> os.chmod("/bin/chmod",0755)
Et, en une seule ligne:python -c "import os; os.chmod('/bin/chmod', 0755)"
Thanatos
18
Cela repose sur le fait que les autorisations d'un fichier de destination sont préservées plutôt que sur le fichier source lors de sa copie. Nous «empruntons» les autorisations de ls:
Je pense que votre premier cpbesoin d'avoir le drapeau -p
Riking
@Riking: Ce n'est pas nécessaire à cette fin.
pause jusqu'à nouvel ordre.
Ceci était similaire à la solution que j'ai trouvée, mais après avoir cpexécuté l'exécutable, je venais juste catd'en retrouver le contenu chmoddans le fichier temporaire.
La définition d'un umask de 000 ne donnera pas la permission d'exécuter un fichier lors de sa création. Il obtiendra au mieux les autorisations rw-rw-rw-.
Barry Brown
2
@Barry: Cela dépend en fait du mode passé à creat (2) / open (2) / mkdir (2) / etc. Si umask == 0 et l'appel système qui crée le fichier reçoit 0777 pour le mode, alors le fichier aura les bits d'exécution activés. Par exemple, les éditeurs de liens / compilateurs passent 0777 lors de l'écriture d'un «fichier exécutable» (par exemple (umask 000;gcc -o foo foo.c), produira un fooavec le mode 777). Cependant, de nombreux shells (la plupart?) Passent 0666 lorsqu'ils ouvrent / créent des fichiers pour la redirection, ce qui signifie que cette réponse ne fonctionnera pas sous de nombreux shells.
chmod
!Réponses:
Sous Linux:
http://www.slideshare.net/cog/chmod-x-chmod
la source
/lib64/ld-linux-x86-64.so.2
place.ldd /bin/chmod
devrait répertorier exactement l'éditeur de liens à exécuter.man ld-linux.so
: "ld.so [et ld-linux.so] charge les bibliothèques partagées nécessaires à un programme, prépare le programme à s'exécuter, puis l'exécute." (ld.so
concerne lesa.out
exécutables au format et leld-linux.so
format ELF.)ld-linux.so
est une sorte d'exécutable / bibliothèque hybride, une sorte de lien statique, s'exécute dans l'espace utilisateur et est chargé de charger les exécutables liés dynamiquement et toutes leurs dépendances, puis de les exécuter.Utilisez python:
la source
python -c "import os; os.chmod('/bin/chmod', 0755)"
Cela repose sur le fait que les autorisations d'un fichier de destination sont préservées plutôt que sur le fichier source lors de sa copie. Nous «empruntons» les autorisations de
ls
:la source
cp
besoin d'avoir le drapeau -pcp
exécuté l'exécutable, je venais justecat
d'en retrouver le contenuchmod
dans le fichier temporaire.Utilisation de Perl:
la source
setfacl -m u::rx /bin/chmod
... accordera au propriétaire des autorisations d'exécution.
Mais, l'
/lib/ld-linux.so.2
astuce est soignée. :)la source
C'est bizarre ... J'ai vu quelque chose comme ça il y a quelques jours via le tweet de quelqu'un ...
http://www.slideshare.net/cog/chmod-x-chmod
la source
Si vous êtes sur un système où
/bin/chmod
ne peut pas être chargé par l'éditeur de liens dynamique:Cela fonctionne sur mon système MacOS X.
la source
/ sauvetage / chmod 555 / poubelle / chmod
Je pense que vous pouvez également utiliser mtree.
la source
Je soupçonne que ce n'est pas une vraie question: http://www.slideshare.net/cog/chmod-x-chmod
la source
créer un nouveau chmod et l'utiliser pour l'original
la source
(umask 000;gcc -o foo foo.c)
, produira unfoo
avec le mode 777). Cependant, de nombreux shells (la plupart?) Passent 0666 lorsqu'ils ouvrent / créent des fichiers pour la redirection, ce qui signifie que cette réponse ne fonctionnera pas sous de nombreux shells.