Vì vậy, tôi đã làm một chmod -x chmod. Làm thế nào tôi có thể khắc phục vấn đề này? Làm thế nào để tôi cung cấp quyền thực thi trở lại cho chmod?
Vì vậy, tôi đã làm một chmod -x chmod. Làm thế nào tôi có thể khắc phục vấn đề này? Làm thế nào để tôi cung cấp quyền thực thi trở lại cho chmod?
Câu trả lời:
Trong Linux:
/lib/ld-linux.so.2 /bin/chmod +x /bin/chmod
/lib64/ld-linux-x86-64.so.2thay thế. ldd /bin/chmodnên liệt kê chính xác liên kết nào để chạy.
man ld-linux.so: "ld.so [và ld-linux.so] tải các thư viện chia sẻ cần thiết cho một chương trình, chuẩn bị chương trình để chạy và sau đó chạy nó." ( ld.sodành cho a.outđịnh dạng thực thi và ld-linux.sodành cho định dạng ELF.)
ld-linux.solà loại hỗn hợp thực thi / thư viện, sắp xếp liên kết tĩnh, chạy trong không gian người dùng và chịu trách nhiệm tải các tệp thực thi được liên kết động và tất cả các phụ thuộc của chúng, sau đó chạy chúng.
Sử dụng trăn:
# python
Python> import os
Python> os.chmod("/bin/chmod",0755)
python -c "import os; os.chmod('/bin/chmod', 0755)"
Điều này phụ thuộc vào thực tế là các quyền của tệp đích được bảo toàn hơn là tệp nguồn khi nó được sao chép. Chúng tôi đang "mượn" các quyền của ls:
cp /bin/ls /tmp/chmod.tmp
cp /bin/chmod /tmp/chmod.tmp
mv /tmp/chmod.tmp /bin/chmod
cpcần có cờ -p trên
cpthực thi, tôi chỉ tìm catthấy nội dung trong chmodtệp tạm thời.
setfacl -m u::rx /bin/chmod
... sẽ cấp cho chủ sở hữu quyền thực thi.
Nhưng, /lib/ld-linux.so.2mẹo là gọn gàng. :)
Điều này thật kỳ lạ ... Tôi đã thấy một cái gì đó như thế này vài ngày trước thông qua tweet của ai đó ...
Tôi nghi ngờ đây không phải là một câu hỏi thực sự: http://www.sl slideshoware.net/cog/chmod-x-chmod
tạo một chmod mới và sử dụng nó cho bản gốc
umask 000
cat chmod > ~/my-chmod
~/my-chmod a+x chmod
(umask 000;gcc -o foo foo.c)sẽ tạo ra một foochế độ 777). Tuy nhiên, nhiều shell (hầu hết?) Vượt qua 0666 khi chúng mở / tạo tệp để chuyển hướng, điều đó có nghĩa là câu trả lời này sẽ không hoạt động dưới nhiều shell.
chmod!