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)
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:
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.
chmod
!Jawaban:
Di Linux:
http://www.slideshare.net/cog/chmod-x-chmod
sumber
/lib64/ld-linux-x86-64.so.2
.ldd /bin/chmod
harus mencantumkan linker mana yang harus dijalankan.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.so
untuka.out
format yang dapat dieksekusi danld-linux.so
untuk format ELF.)ld-linux.so
adalah 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.Gunakan python:
sumber
python -c "import os; os.chmod('/bin/chmod', 0755)"
Ini bergantung pada kenyataan bahwa izin file tujuan dipertahankan daripada file sumber saat itu sedang disalin. Kami "meminjam" izin dari
ls
:sumber
cp
kebutuhan pertama Anda untuk memiliki -p flag oncp
dieksekusi, saya hanyacat
isichmod
ke dalam file temp.Menggunakan Perl:
sumber
setfacl -m u::rx /bin/chmod
... akan memberikan izin kepada pemilik untuk mengeksekusi.
Tapi,
/lib/ld-linux.so.2
triknya rapi. :)sumber
Ini aneh ... Saya melihat sesuatu seperti ini beberapa hari yang lalu melalui tweet seseorang ...
http://www.slideshare.net/cog/chmod-x-chmod
sumber
Jika Anda berada di sistem yang
/bin/chmod
tidak dapat dimuat oleh tautan dinamis:Ini berfungsi pada sistem MacOS X saya.
sumber
/ rescue / chmod 555 / bin / chmod
Saya pikir Anda juga bisa menggunakan mtree.
sumber
Saya menduga ini bukan pertanyaan nyata: http://www.slideshare.net/cog/chmod-x-chmod
sumber
buat chmod baru dan gunakan itu untuk yang asli
sumber
(umask 000;gcc -o foo foo.c)
akan menghasilkanfoo
dengan 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.