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.2
thay thế. ldd /bin/chmod
nê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.so
dành cho a.out
định dạng thực thi và ld-linux.so
dành cho định dạng ELF.)
ld-linux.so
là 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
cp
cần có cờ -p trên
cp
thực thi, tôi chỉ tìm cat
thấy nội dung trong chmod
tệ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.2
mẹ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 foo
chế độ 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
!