Làm thế nào để chạy một ứng dụng bằng sudo mà không cần mật khẩu?


40

... nhưng vẫn được yêu cầu cho các ứng dụng cần đặc quyền quản trị viên?

Để cho phép sau đây:

$ apache2ctl restart
httpd not running, trying to start
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

$ sudo !!
sudo apache2ctl restart             #no password asked
$                                   #works!

Để tham khảo Tôi đã thấy thiết lập này trên các phiên bản e3 của amazon

Ý tưởng nào không?


Đây là một hướng dẫn tuyệt vời trên các diễn đàn chi tiết tạo một tệp riêng để chỉ định các chương trình mà bạn thường sử dụng. Và là một ý tưởng tốt cho lý do bảo mật.
Todd Partridge 'Gen2ly'

Câu trả lời:


51

Bạn cần chỉnh sửa tập tin sudoers. Hãy lưu ý rằng thành công mang đến cho bạn một hệ thống kém an toàn hơn và thất bại có thể phá vỡ sudo. LUÔN LUÔN chỉnh sửa tệp sudoers với sudo visudo, vì visudo sẽ kiểm tra lỗi và sẽ không lưu tệp nếu có bất kỳ tệp nào được tìm thấy.

Đó là một ý tưởng tồi để cung cấp mọi thứ cho phép chạy bằng root mà không cần mật khẩu, vì vậy chỉ cần thông qua một lệnh thực thi mà bạn cần (apache2ctl); nối phần sau vào phần dưới cùng của tệp:

YOURNAME ALL = NOPASSWD: /usr/bin/apache2ctl

Bạn có thể thay thế đường dẫn đến một tệp thực thi bằng "TẤT CẢ" nếu bạn chọn, cung cấp cho bạn sudo hoàn toàn không có mật khẩu.

Thay thế tên của bạn bằng tên người dùng của bạn và nhấn Ctrl+ Xđể lưu và thoát. Nếu xảy ra lỗi, nó sẽ đề nghị hoàn nguyên, chỉnh sửa hoặc lưu lại.

Hãy chắc chắn rằng bạn sử dụng đường dẫn đầy đủ để thực thi:
tức là. /usr/bin/apache2ctlthay vì chỉ apache2ctl. Điều này rất quan trọng vì không nêu rõ đường dẫn sudo sẽ cho phép bất kỳ chương trình nào có tên apachectl trên đường dẫn hiện tại của người dùng chạy dưới quyền root.


3
Lưu ý rằng %YOURNAMEsẽ cấp quyền cho nhóm có tên như người dùng của bạn, điều này thường không phải là vấn đề vì mọi người dùng bình thường đều có một nhóm giống như trên các hệ thống Ubuntu. Để cấp quyền cho người dùng của bạn, chỉ định YOURNAMEkhông có%.
Daniel Werner

Có cách nào để được phục hồi hơn? (một số chức năng chỉ có thể thực thi)
3pic

1
Bài đăng cũ, nhưng tôi chắc chắn sẽ hoàn thành câu trả lời đó bằng cách hạn chế mục nhập của sudoers vào một tên máy chủ cụ thể (nếu có thể) và đưa ra các đối số o không có đối số nào (như sau apache2ctl), như vậy : YOURNAME YOUR-HOSTNAME = NOPASSWD: /usr/bin/apache2ctl <specific arg | "">. --- Trong mọi trường hợp man 5 sudoerslà tài liệu tham khảo để đi đến.
Cbhihe

25

Câu trả lời thực sự cho câu hỏi này có thể phức tạp vì sudo rất mạnh và có thể được cấu hình để làm những việc hay ho. Điều này được giải thích kỹ lưỡng trong tài liệu .

Câu trả lời ngắn được chạy sudo visudotrong một thiết bị đầu cuối. Nếu đây là lần đầu tiên bạn chạy visudo, nó sẽ hỏi bạn thích trình soạn thảo nào. nano thường được cho là dễ sử dụng nhất, nhưng hãy chọn trình chỉnh sửa mà bạn thấy thoải mái / quen thuộc nhất. Bạn sẽ cần phải quyết định người mà bạn muốn cấp quyền truy cập; nó có thể ALLdành cho tất cả mọi người (một ý tưởng rất tệ) , người dùng hoặc nhóm hệ thống. Các nhóm được tiền tố với một dấu%. Ví dụ: nếu bạn muốn cung cấp cho mọi người trong các steroid_usersđặc quyền gốc của nhóm mà không cần mật khẩu cho tất cả các lệnh bạn sẽ thêm:

%steroid_users ALL=(ALL) NOPASSWD: ALL

đến cuối tập tin, thoát và lưu tập tin. Nếu mọi việc suôn sẻ, và bạn là thành viên của nhóm steroid_users, bạn sẽ có thể phát hành sudo *some-command*mà không cần phải nhập mật khẩu.

Hãy nhớ rằng bất kỳ ai có quyền truy cập vào thiết bị đầu cuối của bạn khi bạn đăng nhập - hoặc nếu bạn đã thiết lập ssh cho auth dựa trên khóa hoặc (thậm chí tệ hơn) đã bật đăng nhập phiên miễn phí mật khẩu - truy cập đầy đủ và không bị chặn vào toàn bộ hệ thống. Nếu bạn có nhiều người dùng trên hệ thống của mình hoặc nếu đây là máy chủ tệp, tất cả các tệp người dùng có thể gặp rủi ro vì root có thể làm bất cứ điều gì!

Ngoài ra, nếu bạn mắc lỗi, visudo sẽ xuất và thông báo lỗi và không lưu các thay đổi vào tệp. Điều này sẽ giúp ngăn chặn sudo hoàn toàn. Bạn thực sự nên đọc tài liệu . Sudo được thiết kế để cung cấp cho người dùng quyền truy cập vừa đủ để thực hiện công việc của họ mà không cần phải phơi bày toàn bộ hệ thống của bạn. Có thể thuận lợi khi chỉ cấp mật khẩu truy cập miễn phí cho một số lệnh nhất định.

Tôi hi vọng cái này giúp được.


Điều đó đã làm việc, tôi đã lấy cái này và sau đó tôi đã sử dụng "sudo service sudo restart" từ askubfox.com/questions/192050/ và tôi đã có thể sử dụng tất cả những thứ này trong phiên Ubuntu hoạt động của mình. Tuyệt vời!
Patrick

5

Bạn sẽ cần chỉnh sửa tệp '/ etc / sudoers' (có lệnh 'visudo' cho điều đó.) Để thêm NOPASSWD trước danh sách các lệnh được phép cho người dùng hoặc nhóm của bạn. Nếu người dùng của bạn thuộc nhóm 'quản trị viên' - Bạn cần theo dõi:

%admin ALL=(ALL) NOPASSWD: ALL

Kiểm tra https://help.ubfox.com/community/Sudoers , btw.


3

Bạn COULD thêm cờ nopasswd vào danh sách người dùng nhưng điều đó không loại bỏ tất cả các câu hỏi được hỏi về mật khẩu. Chỉ người đầu tiên sẽ được hỏi.

  1. Chỉnh sửa sudoers: sudo visudo(Bạn phải sử dụng sudo. Đây là tệp quản trị.)
  2. Thêm người dùng của bạn bằng cờ nopasswd sau Dòng quản trị (ở cuối). Ví dụ:
    cyrex ALL = NOPASSWD: ALLhoặccyrex ALL = (ALL) NOPASSWD: ALL

2
sudo visudo
%<GROUP> ALL = NOPASSWD: apache2ctl

hoặc là

sudo visudo
%<GROUP> ALL = NOPASSWD: /etc/init.d/apache2

Tôi đoán điều này sẽ làm điều đó.

Nhưng hãy cẩn thận với việc xóa mật khẩu cho sudo.


2
Bạn nên chỉ định đường dẫn tuyệt đối trong ví dụ đầu tiên, vì lý do bảo mật - một người dùng vô đạo đức có thể thay đổi $ PATH và đánh cắp quyền truy cập root bằng tên lệnh không đủ tiêu chuẩn.
bgvaughan

0

Bây giờ cho câu trả lời đơn giản! Không có cách nào có thể làm hỏng bất cứ điều gì hoặc làm hỏng cài đặt của bạn.

Chỉ cần nhập mật khẩu của bạn một vài lần và sau đó bạn sẽ không bao giờ phải nhập lại mật khẩu! Điều này sẽ cho phép bạn thêm tài khoản quản trị viên cục bộ vào nhóm "root" mà sau đó không được nhận xét từ một mẫu sẽ cho phép toàn bộ đặc quyền siêu người dùng "root" của nhóm. Bạn có thể đọc mối quan tâm / giải pháp bảo mật của tôi cho thủ tục này ở phần sau của bài viết này.

% tên người dùng & là biến toàn cục cho tên người dùng của bạn (thay thế bằng tên người dùng mong muốn)

Bước 1: Mở một cửa sổ đầu cuối và sau đó gõ " sudo usermod -a -G root %username%"

Bước 2: Sau đó sao chép / dán này ...

sudo sed -i 's/# auth       sufficient pam_wheel.so trust/auth       sufficient pam_wheel.so trust/g' /etc/pam.d/su`

Bước 2 HOẶC loại

sudo nano /etc/pam.d/su`

Goto dòng 19 và xóa "#" trước đó # auth sufficient pam_wheel.so trust(có thể là một số dòng khác nhau đối với một số)

* Lệnh đầu tiên thêm% username% của bạn vào nhóm "root"

Các lệnh thứ hai / thứ ba cho phép tất cả các thành viên của nhóm "root" trở thành siêu người dùng mà không cần mật khẩu, thay vì chỉ cho phép người dùng "root" su đặc quyền để xác thực.


Lưu ý:

Đừng loay hoay với /etc/sudoers... Có rất nhiều kiểm tra / số dư mà xác thực 'su' phải trải qua. Xác thực Superuser sử dụng quy trình pam.d giống như tất cả các xác thực đăng nhập khác. "/etc/security/access.conf" có bố cục để kiểm soát truy cập thông qua giao tiếp tcp / ip (192.168.0.1) và thông qua các dịch vụ telnet (tty1 & tty2 & tty3 ... vv) Điều này cho phép lọc chính xác hơn cho mỗi ứng dụng qua giao thức truyền tải. Nếu sự an toàn là mối quan tâm của bạn, thì mối quan tâm của bạn nên được hướng đến các mối đe dọa từ xa / mã so với ai đó thực sự chạm vào máy tính của bạn khi bạn rời khỏi phòng !!!

Thực phẩm cho bệnh hoang tưởng (không gõ cái này chỉ để xem lại):

sudo sed -i 's/#-:ALL EXCEPT (wheel) shutdown sync:LOCAL/-:ALL EXCEPT (wheel) shutdown sync:LOCAL/g' /etc/security/access.conf

^ Điều này chặn quyền truy cập vào bảng điều khiển cho bất kỳ ai không phải là thành viên của hệ thống hoặc root. Đôi khi các chương trình cài đặt tên người dùng / nhóm được khai thác!


2
Không phải là một chuyên gia bảo mật nhưng nó có vẻ hơi phản cảm. Bạn đang vô hiệu hóa mật khẩu cho toàn bộ nhóm để cho phép một người dùng chạy một ứng dụng cụ thể mà không cần mật khẩu để tránh "sự phức tạp" của việc tinh chỉnh sudo cho một ứng dụng cụ thể, phải không? Và tất cả điều này trên một máy chủ công cộng? Có phải kịch bản vô hiệu hóa bản năng sinh tồn cơ bản của bạn? Bảo mật là COMPLEX THEO THIẾT KẾ. Hãy nhớ rằng, nó giống như một củ hành tây. Nó có các lớp và nó làm bạn khóc ... Mất dữ liệu trên các máy chủ bị xâm nhập chỉ là một phần của phương trình. Một cuộc tấn công lên máy bay của hacker từ hệ thống của bạn cũng nghiêm trọng không kém nhưng thường bị bỏ qua
hmayag

2
Đó là phản biện trực quan và phản cảm thông thường: Mở toàn bộ lọ cookie cho người dùng chỉ cần một cookie là khá vô trách nhiệm. Bạn sẽ thêm người dùng vào danh sách sudoers và loại bỏ nhu cầu nhập mật khẩu thay vì chỉnh sửa tệp / tệp sudoers. "Nếu một khẩu súng ngắn không an toàn cho trẻ em, đừng cho chúng dùng canon." -me
John
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.