chmod -x chmodดังนั้นผมจึงได้ ฉันจะแก้ไขปัญหานี้ได้อย่างไร ฉันจะให้สิทธิผู้ดำเนินการกลับไปที่ chmod ได้อย่างไร
chmod -x chmodดังนั้นผมจึงได้ ฉันจะแก้ไขปัญหานี้ได้อย่างไร ฉันจะให้สิทธิผู้ดำเนินการกลับไปที่ chmod ได้อย่างไร
คำตอบ:
/lib64/ld-linux-x86-64.so.2แทน ldd /bin/chmodควรแสดงรายการลิงเกอร์ที่จะเรียกใช้
man ld-linux.so: "ld.so [และ ld-linux.so] จะโหลดไลบรารีที่ใช้ร่วมกันที่โปรแกรมต้องการเตรียมโปรแกรมให้ทำงานแล้วจึงเรียกใช้" ( ld.soสำหรับa.outฟอร์แมต executables และld-linux.soสำหรับฟอร์แมตเอลฟ์)
ld-linux.soคือ sort-of executable / library hybrid, sort-of statically linked, รันใน userspace และรับผิดชอบในการโหลด executables ที่เชื่อมโยงแบบไดนามิกและการพึ่งพาทั้งหมดของพวกเขาจากนั้นเรียกใช้มัน
ใช้หลาม:
# python
Python> import os
Python> os.chmod("/bin/chmod",0755)
python -c "import os; os.chmod('/bin/chmod', 0755)"
สิ่งนี้ขึ้นอยู่กับข้อเท็จจริงที่ว่าสิทธิ์ของไฟล์ปลายทางถูกสงวนไว้แทนที่จะเป็นไฟล์ต้นฉบับเมื่อทำการคัดลอก พวกเรา "ยืม" สิทธิ์ของls:
cp /bin/ls /tmp/chmod.tmp
cp /bin/chmod /tmp/chmod.tmp
mv /tmp/chmod.tmp /bin/chmod
cpต้องมีคือการ
cpไอเท็มที่เรียกใช้งานได้ฉันก็แค่catเนื้อหาของchmodไฟล์เทมเพลต
ใช้ Perl:
% perl -e 'chmod 0755, qw[/bin/chmod]'
setfacl -m u::rx /bin/chmod
... จะให้สิทธิ์เจ้าของดำเนินการ
แต่/lib/ld-linux.so.2เคล็ดลับนั้นเรียบร้อย :)
นี่มันแปลก ๆ ... ฉันเห็นบางสิ่งเช่นนี้เมื่อไม่กี่วันก่อนผ่านทวีตของใครบางคน ...
หากคุณอยู่ในระบบที่/bin/chmodไม่สามารถโหลดได้โดยตัวเชื่อมโยงแบบไดนามิก:
# /bin/mv /bin/chmod /bin/chmod.tmp
# install -p -m 755 /bin/chmod.tmp /bin/chmod
สิ่งนี้ใช้ได้กับระบบ MacOS X ของฉัน
/ ช่วยเหลือ / chmod 555 / bin / chmod
ฉันคิดว่าคุณสามารถใช้ mtree ได้เช่นกัน
ฉันสงสัยว่านี่ไม่ใช่คำถามจริง: http://www.slideshare.net/cog/chmod-x-chmod
สร้าง chmod ใหม่และใช้สิ่งนั้นสำหรับต้นฉบับ
umask 000
cat chmod > ~/my-chmod
~/my-chmod a+x chmod
(umask 000;gcc -o foo foo.c)จะสร้าง a fooด้วยโหมด 777) อย่างไรก็ตามเชลล์จำนวนมาก (มากที่สุด) ผ่าน 0666 เมื่อพวกเขาเปิด / สร้างไฟล์เพื่อเปลี่ยนเส้นทางซึ่งหมายความว่าคำตอบนี้จะไม่ทำงานภายใต้เชลล์จำนวนมาก
chmod!