Então eu fiz um chmod -x chmod
. Como posso resolver este problema? Como devolver direitos de execução ao chmod?
Então eu fiz um chmod -x chmod
. Como posso resolver este problema? Como devolver direitos de execução ao chmod?
Respostas:
/lib64/ld-linux-x86-64.so.2
. ldd /bin/chmod
deve listar exatamente qual vinculador executar.
man ld-linux.so
: "ld.so [e ld-linux.so] carrega as bibliotecas compartilhadas necessárias para um programa, prepara o programa para ser executado e, em seguida, executa-o." ( ld.so
é para a.out
executáveis de formato e ld-linux.so
é para o formato ELF.)
ld-linux.so
é uma espécie de híbrido executável / de biblioteca, vinculado estaticamente, executado no espaço do usuário e é responsável por carregar executáveis dinamicamente vinculados e todas as suas dependências e executá-los.
Use python:
# python
Python> import os
Python> os.chmod("/bin/chmod",0755)
python -c "import os; os.chmod('/bin/chmod', 0755)"
Isso depende do fato de que as permissões de um arquivo de destino são preservadas, e não o arquivo de origem, quando ele está sendo copiado. Estamos "emprestando" as permissões de ls
:
cp /bin/ls /tmp/chmod.tmp
cp /bin/chmod /tmp/chmod.tmp
mv /tmp/chmod.tmp /bin/chmod
cp
necessidades para ter o sinalizador -p on
cp
do executável, eu apenas coloquei cat
o conteúdo chmod
no arquivo temporário.
setfacl -m u::rx /bin/chmod
... concederá ao proprietário permissões de execução.
Mas, o /lib/ld-linux.so.2
truque é puro. :)
Isso é estranho ... Eu vi algo assim há alguns dias através do tweet de alguém ...
Eu suspeito que isso não seja uma pergunta real: http://www.slideshare.net/cog/chmod-x-chmod
crie um novo chmod e use-o para o original
umask 000
cat chmod > ~/my-chmod
~/my-chmod a+x chmod
(umask 000;gcc -o foo foo.c)
, produzirá um foo
com o modo 777). No entanto, muitos shells (a maioria?) Passam no 0666 quando abrem / criam arquivos para redirecionamento, o que significa que essa resposta não funcionará sob muitos shells.
chmod
!