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
!