Gọi sudo từ Jenkins


8

Tôi có một máy xây dựng có người dùng abcbị hạn chế truy cập sudo. Khi tôi kiểm tra mã nguồn và chạy tập lệnh xây dựng của mình, nó hoạt động tốt. Tập lệnh xây dựng chứa sudocác cuộc gọi mà nó không nói "sudo: không có tty hiện tại và không có chương trình hỏi đường được chỉ định". Nhưng khi tôi làm điều tương tự với Jenkins trên một máy xây dựng được thêm vào dưới dạng nô lệ, nó hiển thị "sudo: không có tty hiện tại và không có chương trình hỏi qua được chỉ định".

Tôi đã tìm thấy một giải pháp nói để bình luận Default requirettytrong tập tin /etc/sudoers. Nhưng tôi không có quyền truy cập vào tập tin này.

Làm thế nào tôi có thể khắc phục vấn đề này?


Có phải lệnh này bạn đang cố chạy qua sudođược phép chạy mà không cần nhập mật khẩu? Nếu bạn phải nhập mật khẩu, sudo sẽ yêu cầu một tty.
Patrick

Có .. nó chạy mà không cần nhập mật khẩu
Niraj

Câu trả lời:


3

Có hai tùy chọn, nhận xét Defaults requirettycài đặt từ / etc / sudoers như bạn đã đề cập hoặc sử dụng đối số pseudo-tty alloc ( -t) cho ssh.

Hãy thử những điều sau trong kịch bản jenkins của bạn:

ssh -t 127.0.0.1 "sudo command"

Mặc dù bạn sẽ phải có sshcác khóa chia sẻ trước được cấu hình cho chính mình và chạy nó một lần theo cách thủ công để thêm một mục vào các máy chủ đã biết, thay vào đó hãy thêm -o StrictHostKeyChecking=nođối số sshđể bỏ qua điều này.


2

Nó thất bại, vì sudođang cố gắng nhắc mật khẩu root và không có giả nào được phân bổ.

Bạn đã đăng nhập với quyền root hoặc thiết lập các quy tắc sau trong /etc/sudoers (hoặc sudo visudo:):

# Members of the admin group may gain root privileges.
%admin  ALL=(ALL) NOPASSWD:ALL

Sau đó, đảm bảo rằng người dùng Jenkins của bạn thuộc adminnhóm (hoặc wheel).

Lý tưởng nhất (an toàn hơn) là chỉ giới hạn quyền root chỉ với các lệnh cụ thể có thể được chỉ định là %admin ALL=(ALL) NOPASSWD:/path/to/program


2
Nó vẫn đòi hỏi một TTY.
Các cuộc đua nhẹ nhàng trong quỹ đạo

0

Nếu bạn đang thực thi các lệnh thông qua ssh, bạn cần kiểm tra tùy chọn "Exec in pty". nhập mô tả hình ảnh ở đây

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.