Saya baru saja melakukan chmod -x chmod


Jawaban:


43

Di Linux:

/lib/ld-linux.so.2 /bin/chmod +x /bin/chmod

http://www.slideshare.net/cog/chmod-x-chmod


bindbn, saya akan memposting tautan yang sama :-) tapi saya membaca sendiri karena saya baru di unix / linux !!!
— rihatum

2
Pada distro 64-bit, Anda mungkin harus menggunakannya /lib64/ld-linux-x86-64.so.2. ldd /bin/chmodharus mencantumkan linker mana yang harus dijalankan.
— goldPseudo

Saya akan menulis program minimal yang menggunakan chmod (2), tapi ini lebih keren
— adamo

1
@Stefan: Dari man ld-linux.so: "ld.so [dan ld-linux.so] memuat pustaka bersama yang diperlukan oleh suatu program, menyiapkan program untuk dijalankan, dan kemudian menjalankannya." ( ld.sountuk a.outformat yang dapat dieksekusi dan ld-linux.sountuk format ELF.)
— Dijeda sampai pemberitahuan lebih lanjut.

1
@Stefan: Kernel tidak benar-benar tahu cara memuat dan mengeksekusi executable yang terkait secara dinamis, karena sangat kompleks dan mengikuti glibc, bukan kernel. ld-linux.soadalah semacam-executable / library hybrid, semacam-terkait secara statis, berjalan di userspace, dan bertanggung jawab untuk memuat executable yang terkait secara dinamis dan semua dependensinya, kemudian menjalankannya.
— Juliano

18

Gunakan python:

# python
Python> import os
Python> os.chmod("/bin/chmod",0755)

4
Dan, sebagai satu-liner:python -c "import os; os.chmod('/bin/chmod', 0755)"
— Thanatos

18

Ini bergantung pada kenyataan bahwa izin file tujuan dipertahankan daripada file sumber saat itu sedang disalin. Kami "meminjam" izin dari ls:

cp /bin/ls /tmp/chmod.tmp
cp /bin/chmod /tmp/chmod.tmp
mv /tmp/chmod.tmp /bin/chmod

Saya pikir cpkebutuhan pertama Anda untuk memiliki -p flag on
— Riking

@Riking: Tidak perlu untuk tujuan ini.
— Dijeda sampai pemberitahuan lebih lanjut.

Ini mirip dengan solusi yang saya buat, tapi setelah cpdieksekusi, saya hanya catisi chmodke dalam file temp.
— SpellingD

9

Menggunakan Perl:

% perl -e 'chmod 0755, qw[/bin/chmod]'

7

setfacl -m u::rx /bin/chmod

... akan memberikan izin kepada pemilik untuk mengeksekusi.

Tapi, /lib/ld-linux.so.2triknya rapi. :)


5

Ini aneh ... Saya melihat sesuatu seperti ini beberapa hari yang lalu melalui tweet seseorang ...

http://www.slideshare.net/cog/chmod-x-chmod


Tautan ke situs lain tidak membantu karena tautan akan rusak di beberapa titik. Ini seperti memberi tahu seseorang kepada google jawabannya.
— Phil Hannent

@ Philip Hannent: Saya sudah melihat slideshow itu juga, hanya tiga hari yang lalu, jadi itu adalah pikiran pertama saya, jika OP adalah salah satu pelamar di sana.
— Boldewyn

Sama, baru melihat ini di Reddit beberapa hari yang lalu ...
— Dentrasi

4

Jika Anda berada di sistem yang /bin/chmodtidak dapat dimuat oleh tautan dinamis:

# /bin/mv /bin/chmod /bin/chmod.tmp
# install -p -m 755 /bin/chmod.tmp /bin/chmod

Ini berfungsi pada sistem MacOS X saya.


2

/ rescue / chmod 555 / bin / chmod

Saya pikir Anda juga bisa menggunakan mtree.


Ini akan menjadi solusi favorit saya. Sayangnya, itu tidak bekerja dengan linux.


1

buat chmod baru dan gunakan itu untuk yang asli

umask 000
cat chmod > ~/my-chmod
~/my-chmod a+x chmod

Mengatur umask dari 000 tidak akan memberikan izin eksekusi file ketika itu dibuat. Ini akan, paling-paling, mendapatkan izin rw-rw-rw-.
— Barry Brown

2
@ Larry: Ini sebenarnya tergantung pada mode yang dilewatkan ke creat (2) / open (2) / mkdir (2) / etc. Jika umask == 0 dan syscall yang membuat file diberikan 0777 untuk mode, maka file tersebut akan mengeksekusi bit eksekusi. Sebagai contoh, penghubung / kompiler lulus 0777 ketika menulis "file yang dapat dieksekusi" (misalnya (umask 000;gcc -o foo foo.c)akan menghasilkan foodengan mode 777). Namun, banyak (kebanyakan?) Shell melewati 0666 ketika mereka membuka / membuat file untuk pengalihan, yang berarti bahwa jawaban ini tidak akan berfungsi di bawah banyak shell.
— Chris Johnsen
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.