sudo - mạo danh người dùng


8

Tôi đang cố gắng sử dụng lệnh sudo và tệp sudoers một cách chính xác để tôi có thể chạy một lệnh như một người dùng khác.

Tôi có tập tin sudoers của tôi được thiết lập như sau:

beans ALL = (root,apache) NOPASSWD: /opt/renovations/var/script-*.sh

gốc, apache, và đậu là một phần của nhóm đậu.
Ngoài ra / opt có 755 quyền, trong khi thư mục / opt / đổi mới và thư mục con của nó được sở hữu bởi người dùng và nhóm bean.

Lệnh tôi đang cố chạy như đậu là:

sudo -n -u apache -i /opt/renovations/var/script-test.sh  

-n: là vì vậy tôi không được nhắc nhập mật khẩu, vì điều này sẽ được điều hành bởi một cron
-u: là để tôi có thể mạo danh người dùng apache
-i: để tôi mô phỏng thông tin đăng nhập và .profile của tôi Nó đã nạp đầy. Tôi cần điều này để tôi truy cập các biến môi trường trong .profile.

Vấn đề là khi tôi chạy lệnh sudo, tôi nhận được thông báo sau:

sudo: xin lỗi, mật khẩu là bắt buộc để chạy sudo

Tôi đã thử chạy cả hai trên AIX và Ubuntu, nhưng vấn đề là ở cả hai hệ thống. Điều này hoạt động nếu tôi chạy:

sudo -n -u apache /opt/renovations/var/script-test.sh

Nhưng không có -i, môi trường của tôi không chứa tất cả các biến môi trường mà tôi cần ở đó.

Có điều gì tôi cần cập nhật trong tập tin sudoers của mình để điều này là có thể không?


Điều gì visudo -ctrả về (kiểm tra sudoers cho lỗi). Ngoài ra, bạn có thể xác nhận phiên bản đầy đủ của AIX ( oslevel -s) và phiên bản sudo được cài đặt không?
EightBitTony

1
Ngoài ra, nó có hoạt động không nếu bạn liệt kê tên tập lệnh một cách rõ ràng bằng sudo chứ không phải ký tự đại diện (và tên tệp có phải là một liên kết tượng trưng không?).
EightBitTony

Cảm ơn @EightBitTone. Vì vậy, tôi đã tìm thấy giải pháp cho vấn đề cấu hình sudoers này: khi chuyển đổi -i đang được sử dụng thì lệnh thực sự là beans ALL = (root,apache) NOPASSWD: /usr/bin/ksh -c /opt/renovations/var/script-*.shbeans ALL = (root,apache) NOPASSWD: /usr/bin/bash -c /opt/renovations/var/script-*.shNhưng bây giờ tôi gặp lỗi mới, ví dụ:ksh: /opt/renovations/var/script-test.sh: cannot execute
krzyszto

Phân tích tệp nhật ký / var / log / sudolog rất hữu ích để gỡ lỗi vấn đề trên (trên AIX).
krzyszto

Câu trả lời:


4

Vì vậy, như bạn đã nói @krzysto, giải pháp là thêm phần sau vào tệp sudoers

beans ALL = (root,apache) NOPASSWD: /usr/bin/ksh -c /opt/renovations/var/script-*.sh 
beans ALL = (root,apache) NOPASSWD: /usr/bin/bash -c /opt/renovations/var/script-*.sh

Phần tiếp theo bị thiếu là đảm bảo rằng nhóm đã thực thi quyền trên các tập lệnh, để bạn có thể thực thi chúng.


vâng, đó là giải pháp chính xác. Lỗi ksh chỉ xảy ra trên môi trường thử nghiệm được tạo để điều tra vấn đề mạo danh; trong thực tế, sản xuất tất cả hoạt động chính xác
krzyszto
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.