Sadece bir chmod yaptım - x chmod


Yanıtlar:


43

Linux'ta:

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

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


bindbn, aynı bağlantıyı göndermek üzereydim :-) ama unix / linux sayfalarında yeniyken kendimi okuyordum !!!
rihatum

2
64 bitlik bir dağıtımda, /lib64/ld-linux-x86-64.so.2bunun yerine kullanmak zorunda kalabilirsiniz . ldd /bin/chmodtam olarak hangi bağlayıcıyı çalıştıracağınızı listelemelidir.
goldPseudo 11:10

Chmod (2) kullanan minimal bir program yazardım, ama bu daha serin
adamo

1
@Stefan: From man ld-linux.so: "ld.so [ve ld-linux.so], bir program için gereken paylaşılan kütüphaneleri yükler, programı çalıştırmaya hazırlar ve sonra çalıştırır." ( ld.soİçindir a.outbiçim yürütülebilir ve ld-linux.soELF formatında içindir.)
bir sonraki duyuruya kadar durdurulmuş.

1
@Stefan: Çekirdek, dinamik olarak bağlantılı çalıştırılabilir dosyaları nasıl yükleyeceğinizi ve çalıştıracağını gerçekten bilmiyor, çünkü oldukça karmaşık ve çekirdeği değil, glibc'yi takip ediyor. ld-linux.soçalıştırılabilir / kitaplık melezi türüdür, statik olarak sınıflandırılmış, kullanıcı alanında çalışır ve dinamik olarak bağlı çalıştırılabilir dosyaları ve tüm bağımlılıklarını yüklemek ve ardından bunları çalıştırmaktan sorumludur.
Juliano

18

Python kullan:

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

4
Ve tek gömlek olarak:python -c "import os; os.chmod('/bin/chmod', 0755)"
Thanatos,

18

Bu, kopyalandığında kaynak dosya yerine bir hedef dosyanın izinlerinin korunmasına dayanır. Aşağıdakilerin izinlerini "ödünç alıyoruz" ls:

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

Sanırım cp
ilkinizin

@Riking: Bu amaç için gerekli değildir.
sonraki duyuruya kadar duraklatıldı.

Bu benim çözdüğüm çözüme benziyordu, ancak cpçalıştırılabilir dosyayı açtıktan sonra sadece temp dosyasının catiçeriğini buldum chmod.
SpellingD

9

Perl kullanımı:

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

7

setfacl -m u::rx /bin/chmod

... sahibine yürütme izni verir.

Ancak, /lib/ld-linux.so.2hile temiz. :)


5

Bu çok garip ... Birkaç gün önce birinin tweetiyle böyle bir şey gördüm.

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


Diğer sitelere olan bağlantılar, bağlantı bir noktada kırılacağı için yardımcı olmaz. Bu, birine cevabı google'a bildirmek gibidir.
Phil Hannent

@Phil Hannent: Sadece üç gün önce bu slayt gösterisini de gördüm, bu yüzden OP'nin başvuranlardan biri olması ilk düşüncemdi.
Boldewyn

Aynı, birkaç gün önce
Reddit'te

4

/bin/chmodDinamik linker tarafından yüklenemeyen bir sistemde olmalısınız :

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

Bu MacOS X sistemimde çalışıyor.


2

/ kurtarma / chmod 555 / bin / chmod

Sanırım mtree kullanabilirsin.


Bu benim favori çözümüm olur. Ne yazık ki linux ile çalışmıyor.


1

yeni bir chmod oluşturun ve bunu orijinal için kullanın

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

000 umask ayarlamak, bir dosya oluşturulduğunda yürütme izni vermez. En iyi ihtimalle, rw-rw-rw- izinlerini alacaktır.
Barry Brown

2
@Barry: Aslında, creat (2) / open (2) / mkdir (2) / etc öğesine geçirilen moda bağlıdır. Eğer umask == 0 ise ve dosyayı oluşturan sisteme mod için 0777 verilirse, dosya çalıştırma bitlerini açacaktır. Örneğin, bir "çalıştırılabilir dosya" yazarken, bağlayıcılar / derleyiciler 0777'yi geçerler (örneğin (umask 000;gcc -o foo foo.c), foo777 ile bir mod üretecektir ). Ancak, çoğu (çoğu?) Mermi, yönlendirme için dosyaları açıp / oluştururken 0666'yı geçer, bu, bu cevabın pek çok mermi altında çalışmayacağı anlamına gelir.
Chris Johnsen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.