2014-12-29 12 views
7

Tôi đã thêm một người sử dụng như thế này:sudoers NOPASSWD: sudo: không tty hiện tại và không có chương trình askpass định

$ adduser --system --home /no/home --no-create-home --group --disabled-password --disabled-login testuser 

thêm một người dùng vào nhóm:

$ adduser testuser testgroup 

thêm dòng để sudoers (visudo):

testuser ALL=(ALL) NOPASSWD: ALL 
%testgroup   ALL=(ALL:ALL) NOPASSWD: ALL 

Khi tôi cố gắng để chạy các script bash với nội dung sau:

#!/bin/sh 
sudo -u testuser /usr/bin/php /usr/local/bin/script.php 

Nhưng khi tôi chạy kịch bản này, tôi nhận được lỗi trong nhật ký:

sudo: no tty present and no askpass program specified 

Edit: requiretty không có trong file sudoers.

+1

Không phải là quyền 'sudo' về người dùng/nhóm mà bạn đang thay đổi * từ * không phải người dùng bạn đang thay đổi * thành *? Vì vậy, không phải là những dòng cho phép người dùng 'testuser' và nhóm' testgroup' chạy bất kỳ lệnh nào (như bất kỳ ai) mà không có mật khẩu? Bạn không cần phải cho phép người dùng chạy tập lệnh để chạy các lệnh * như * 'testuser' cho những gì bạn muốn? Giả sử đó là những gì bạn có nghĩa là để cho phép? –

+0

@EtanReisner Tôi đã thử nó quá, nhưng vẫn nhận được lỗi tương tự. –

+0

Bạn đã thử * những gì * quá? Chạy 'sudo' làm trình kiểm tra? Cụ thể bạn đã chạy/thử? Người dùng nào đang chạy tập lệnh gốc? –

Trả lời

7

sudo quyền là về người dùng/nhóm bạn đang thay đổi từ không phải là người dùng mà bạn đang thay đổi -.

Vì vậy, các đường quyền đó cho phép người dùng testuser và nhóm testgroup chạy bất kỳ lệnh nào (như bất kỳ ai) mà không có mật khẩu.

Bạn cần phải cho phép - người dùng chạy các script để chạy các lệnh như người dùng testuser cho những gì bạn muốn.

Giả sử đó là ý của bạn để cho phép điều đó xảy ra.

3

Lỗi này xảy ra khi tệp sudoers của bạn chỉ định requiretty. Từ sudoers manpage:

requiretty  If set, sudo will only run when the user is 
        logged in to a real tty. When this flag is set, 
        sudo can only be run from a login session and not 
        via other means such as cron(8) or cgi-bin scripts. 
        This flag is off by default. 

Để khắc phục lỗi của bạn, loại bỏ requiretty từ sudoers file của bạn.

+0

Cảm ơn bạn, nhưng nó không giúp ích gì. requiretty không có trong tập tin sudoers. Tôi đã cập nhật câu hỏi của mình. –

Các vấn đề liên quan