Tôi cần sudo mà không cần mật khẩu nhắc, cho các kịch bản. Tôi đã đi sai ở đâu?


9

Tôi thuộc nhóm sudo được rồi:

$ id
uid=1002(molot) gid=1002(molot) groups=1002(molot),27(sudo),33(www-data)

Trong sudores của tôi, tôi dường như có thiết lập phù hợp:

sudo    ALL=(ALL:ALL) NOPASSWD: ALL

và nó là dòng chưa hoàn thành cuối cùng ở đó.

Nhưng khi tôi cố gắng git pull, tôi đã gõ lại mật khẩu của mình:

$ sudo -u www-data git --git-dir /var/www/.git --work-tree /var/www pull "origin" master
[sudo] password for molot:

Nó không phải là một vấn đề khi tôi đăng nhập vào giao diện điều khiển, nhưng nó không được chấp nhận trong các tập lệnh. Vậy làm thế nào tôi có thể cho phép bất cứ ai trong nhóm sudo git pull dưới dạng dữ liệu www mà không cần gõ lại mật khẩu?

Khi tôi đặt tên trực tiếp:

molot ALL=(ALL) NOPASSWD: ALL

nó làm việc cho tôi Nhưng, rõ ràng, không dành cho marian hoặc người dùng khác từ nhóm sudo. Theo như tôi hiểu thì thủ công , cả tên người dùng và tên nhóm sẽ hoạt động trong tệp đầu tiên.


Có thể bạn không sudo -u www-data ./your_script.sh? Mục đích của kịch bản là gì?
jimbobmcgee

@jimbobmcgee đó là một cái móc git, vì vậy không, tôi không thể trả trước bất cứ điều gì cho nó. Nó được gọi bởi người dùng đã thúc đẩy thay đổi git và tôi không tìm thấy cách nào thực sự xung quanh nó.
Mołot

Trường đầu tiên (nếu hiểu nhanh về sudoersđịnh dạng tệp của tôi là chính xác) là tên người dùng của người dùng đang gọi. Bạn đã thử thay thế nó bằng ký tự đại diện *, hoặc bất kỳ người dùng nào git hook chạy như là?
một CVn

@ MichaelKjorling như đã nêu ở đây , có thể viết cả người dùng và nhóm trong trường đầu tiên. *không hoạt động. Đặt tên của tôi trực tiếp làm việc cho tôi ... nhưng rõ ràng không phải cho người dùng khác trong nhóm sudo.
Mołot

@ MichaelKjorling cảm ơn bạn, bình luận của bạn đã khiến tôi tìm kiếm những ký tự đặc biệt và cho phép tôi tìm câu trả lời: D Chỉnh sửa: xóa câu trả lời tự xóa và chấp nhận câu trả lời của bên thứ 3 từ cùng một lúc.
Mołot

Câu trả lời:


19

Có vẻ như bạn đã có dòng liên quan trong sudoers của bạn thiếu một ký tự:

sudo ALL = (ALL: ALL) NOPASSWD: ALL

phù hợp với người dùng có tên 'sudo'. Đối với 'tất cả người dùng trong nhóm sudo' thì phải là:

% sudo ALL = (ALL: ALL) NOPASSWD: ALL

(lưu ý ký hiệu% ở đầu).


1
Ah để của những gì %trong %wheelnghĩa.
nikhil

1

sudo visudo

Sau đó, giả sử molotlà tên người dùng của bạn, đi đến cuối tệp và:

molot ALL=(ALL) NOPASSWD: ALL

Điều này sẽ làm việc, nhưng nếu nó không, giữ cho chúng tôi được đăng.


Những công việc này. Cho tôi. Nhưng, rõ ràng, không dành cho marian hoặc bất kỳ người dùng nào khác trong nhóm sudo.
Mołot

Sau đó tạo bí danh người dùng ( User_Alias) và cho phép chạy các lệnh cụ thể dưới dạng root ( Runas_Alias). Tôi không biết làm thế nào nhóm của bạn được thiết lập, bạn có thể kiểm tra wiki sudoers help.ubuntu.com/community/Sudoers Nó thực sự súc tích. Kiểm tra phần "Thông số người dùng", điều này sẽ giúp.
Jugurtha Hadjar
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.