Chạy một nhị phân thuộc sở hữu của root mà không cần sudo


12

Tôi đã có một câu hỏi về một cuộc phỏng vấn việc làm:

Làm thế nào bạn có thể thực thi (chạy) chương trình với người dùng user1mà không có sudođặc quyền và không có quyền truy cập vào roottài khoản:

$ whoami
user1
$ ls -l ~/binary_program
-rw-r--r-- 1 root root 126160 Jan 17 18:57 /home/user1/binary_program

Câu trả lời:


17

Vì bạn đã cho phép đọc:

$ cp ~/binary_program my_binary
$ chmod +x my_binary
$ ./my_binary

Tất nhiên, điều này sẽ không tự động cấp cho bạn các đặc quyền leo thang. Bạn vẫn sẽ thực hiện nhị phân đó như một người dùng thông thường.


4
@ user2555595 Tôi sợ bạn sai. Hãy thử loại bỏ bit thực thi trên một tệp bạn sở hữu và thực thi nó. Ngay cả root cũng bị "từ chối quyền" khi thực thi một tệp mà không có tập lệnh thực thi.
Joseph R.

bạn đã đúng, cảm ơn bạn về thông tin
user2555595

5
@ user2555595 Điều đó chỉ áp dụng cho các tập lệnh , không phải nhị phân. Cụ thể hơn là bashcác tập lệnh shell POSIX nếu bashđược gọi làm trình thông dịch.
Thomas Nyman

Cảm ơn thông tin của bạn, mọi người! Chúc một ngày tốt lành!
inivanoff1

2
@ inivanoff1 Xin đừng quên đánh dấu một trong những câu trả lời "Được chấp nhận" để mọi người biết câu hỏi này đã được giải quyết.
Joseph R.

20

Bạn có thể sử dụng trực tiếp trình liên kết / trình tải động Linux để chạy các tệp thực thi ELF mà bạn đã đọc, nhưng không thực thi các quyền:

$ /lib/ld-linux.so.* /home/user1/binary_program

Khi một thực thi ELF được thực thi thông thường, trình liên kết động được lưu trữ trong .interp phần của mã chương trình được sử dụng. Lý do gọi trực tiếp trình liên kết động (phỏng vấn công việc bên ngoài) bao gồm chuyển qua tùy chọn dòng lệnh để sửa đổi hành vi của nó.

Lưu ý rằng vị trí thực tế của trình liên kết động có thể rất phụ thuộc vào môi trường, ví dụ như trong Ubuntu 64 bit, trình liên kết đang ở /lib64/ld-linux-x86-64.so.2.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.