Điểm:1

CENTOS apache ALL=(root) NOPASSWD: /path/to/shell.sh không hoạt động

lá cờ jp

Đang cố gắng thực hiện quản lý IPtables giao diện web.

Đã tạo một tệp kiểm tra.php

$output = shell_exec('sudo bash /usr/bin/iptables.sh 2>&1');
tiếng vang $ đầu ra;

Đã cung cấp /usr/bin/iptables.sh NOPASSWD để tôi có thể thực thi tệp bằng sudo thông qua apache mà không cần sử dụng mật khẩu

Sudo iptables -L

tập tin sudoer:

apache TẤT CẢ=(root) NOPASSWD: /usr/bin/iptables.sh

Nhưng tôi vẫn nhận được lỗi

Chúng tôi tin rằng bạn đã nhận được bài giảng thông thường từ Hệ thống địa phương Người quản lý. Nó thường tập trung vào ba điều sau: #1) Tôn trọng sự riêng tư của người khác. #2) Suy nghĩ trước khi gõ. #3) Với sức mạnh lớn đến trách nhiệm lớn. sudo: một thiết bị đầu cuối là bắt buộc để đọc mật khẩu; hoặc sử dụng tùy chọn -S để đọc từ tiêu chuẩn nhập hoặc định cấu hình trình trợ giúp yêu cầu{"mode":"full","isActive":false}

Tuy nhiên, nếu tôi sử dụng

apache TẤT CẢ=(root) NOPASSWD: TẤT CẢ

Mọi thứ đều hoạt động tốt.

Tôi đã kiểm tra lại thư mục của mình và tôi đã sử dụng đường dẫn chính xác

[root@CentOS bin]# liên kết đọc -f iptables.sh
/usr/bin/iptables.sh

Siêu không biết gì ở đây, bất cứ ai có thể giúp tôi với một hướng đi? :'(

Điểm:1
lá cờ cz

Lệnh bạn gọi với sudo phải phù hợp với những gì có trong sudoers file, nhưng trong trường hợp của bạn, chúng không khớp.

Bạn đã cố chạy bash /usr/bin/iptables.sh, nhưng sudoers chỉ cho phép bạn chạy /usr/bin/iptables.sh.

alvan avatar
lá cờ jp
Tôi bối rối, làm cách nào để thực thi tập lệnh trong trường hợp này? Tôi có phải thêm bash vào sudoers không?
Michael Hampton avatar
lá cờ cz
@alvan Tại sao bạn lại có `bash` trong đó? Nó là dư thừa. Bạn có thể làm những gì mình muốn nhưng điều quan trọng là **chúng phải khớp chính xác**.
alvan avatar
lá cờ jp
Ôi trời ơi. $output = shell_exec("sudo /usr/bin/iptables.sh 2>&1'"); Điều này thực sự hiệu quả
alvan avatar
lá cờ jp
Cảm ơn Michael rất nhiều!!
Điểm:0
lá cờ us

Hãy thử với Sudo, vì /usr/bin/iptables.sh tham chiếu đến thư mục gốc của thư mục gốc.

$output = shell_exec("sudo -u root sh -c 'bash /usr/bin/iptables.sh 2>&1'");
tiếng vang $ đầu ra;
alvan avatar
lá cờ jp
Không may mắn, php không xuất ra bất cứ thứ gì trong trường hợp này. Nhưng khi tôi thay đổi tệp sudoers thành TẤT CẢ, điều này sẽ hoạt động
Ajay Singh avatar
lá cờ us
@alvan bạn đã thử đoạn mã trên mà không có mật khẩu trong sudoers như -> apache ALL=(root) /usr/bin/iptables.sh ; đầu ra của là gì
alvan avatar
lá cờ jp
nó là apache 15 ký tự

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.