Câu hỏi Thực hiện sudo mà không cần mật khẩu?


Lấy cảm hứng từ điều này câu hỏi....

Tôi là người duy nhất sử dụng hệ thống của tôi với 12.04.
Mỗi lần tôi phát hành sudo chỉ huy; hệ thống yêu cầu mật khẩu người dùng (theo cách riêng của nó).
Tuy nhiên tôi đã suy nghĩ; mà không kích hoạt nguồn gốc tài khoản; làm thế nào tôi có thể thực hiện các lệnh sudo mà sẽ không yêu cầu mật khẩu người dùng để xác thực.

LƯU Ý: Tôi muốn thực thi lệnh sudo mà không cần xác thực thông qua mật khẩu; chỉ khi chúng được thực hiện thông qua thiết bị đầu cuối.
Tôi không muốn loại bỏ lớp bảo mật bổ sung này khỏi các chức năng khác như vậy trong khi sử dụng 'trung tâm phần mềm Ubuntu' hoặc thực thi một tập lệnh bash bằng cách kéo tập tin something.sh vào thiết bị đầu cuối.


223
2018-06-06 12:30


gốc


vì vậy bạn chỉ muốn được yêu cầu mật khẩu trong thiết bị đầu cuối và cho những thứ khác không, hoặc cách khác arround ?! theo cả hai cách, tôi nghĩ rằng nó là một vi phạm an ninh cao - Dr_Bunsen
Tôi muốn hệ thống đó không thể hỏi mật khẩu chỉ khi ở trong terminal ... cho bất kỳ mục đích nào khác mà hệ thống phải hỏi mật khẩu. Yêu cầu này chỉ là tạm thời, và được sử dụng trong khi cấu hình n cài đặt máy chủ mới .. trong khi cài đặt máy chủ mới, nó thực sự mất nhiều giờ để cấu hình với lệnh sudo .. cấp mật khẩu mỗi 15 phút. là đau đầu. Tôi không muốn sử dụng tài khoản root. - Z9iT
Bạn cần phải đọc các cuộc thảo luận trong: askubuntu.com/questions/135428/… - david6
Để chắc chắn bạn có thể kéo dài thời gian chờ. Ngoài ra, nếu bạn thường xuyên làm các thiết lập máy chủ mới, bạn nên suy nghĩ về quá trình tự động hóa. Bạn không được trả tiền để nhập, bạn được trả tiền để giải quyết các vấn đề và nhận được sh * t thực hiện. - MauganRa
Liên quan: Làm thế nào để chạy lệnh sudo không có mật khẩu? - Eliah Kagan


Các câu trả lời:


sudo -i là cách để đi nếu bạn không muốn nhập mật khẩu mỗi 10 phút trong khi thực hiện các sửa đổi trong hệ thống của mình (hoặc các hệ thống khác) và bạn không muốn sửa đổi bất kỳ tệp hệ thống nào.

Nó sẽ chuyển bạn thành root bằng cách sử dụng sudo mật khẩu người dùng, khi bạn đóng bảng điều khiển hoặc loại exit bạn trở lại với người dùng bình thường của mình.


64
2018-06-06 13:36



Điều này có đúng là tôi chỉ nhập mật khẩu một lần ... và cho đến khi tôi không thoát; thời tiết 5 giờ. hoặc 15 .... hệ thống sẽ không yêu cầu xác thực bằng mật khẩu khi có lệnh sudo được phát hành. - Z9iT
@ Z9iT cho đến khi bạn nhập exit hoặc cho đến khi bạn đóng cửa sổ trình mô phỏng đầu cuối. - Bruno Pereira
Cảm ơn .. Chấp nhận câu trả lời này bởi vì nó phục vụ mục đích phát hành lệnh sudo mà không cần xác thực mật khẩu cho n-giờ cho đến khi chúng ta không thoát ra .. Không sửa đổi các tệp hệ thống là một dấu cộng. - Z9iT
Điều này không thực sự trả lời câu hỏi, bởi vì bạn vẫn cần phải nhập mật khẩu để trở thành root tại thời điểm đó. - Adam F
Không phải nếu bạn đang chạy một máy ảo trong một môi trường bảo mật và bạn chỉ muốn điều cần làm một cái gì đó ngay lập tức và bạn không muốn đối phó với mật khẩu. Câu trả lời này không trả lời câu hỏi, trong khi đó là thông tin hữu ích. Tôi đồng ý với Adam F - Jonathan Komar


Cách tiếp cận để giải quyết vấn đề của bạn là đưa người dùng của bạn vào tệp sudoers, như bạn có thể thấy.

Mở cửa sổ dòng lệnh và gõ:

sudo visudo

Ở cuối tệp, hãy nhập như sau:

$USER ALL=(ALL) NOPASSWD: ALL

Ở đâu $USER là tên người dùng của bạn trong hệ thống của bạn. Lưu và đóng tệp sudoers (nếu bạn chưa thay đổi trình soạn thảo đầu cuối mặc định của mình (bạn sẽ biết nếu bạn có), nhấn ctl + x để thoát nano (nhưng lưu ý rằng ảnh chụp màn hình bên dưới hiển thị vim) và nó sẽ nhắc bạn lưu).

sudoers file]

Sau đó, bạn có thể, trong cửa sổ dòng lệnh, gõ sudo <Whatever you want>, mà không được nhắc nhập mật khẩu.

Điều này chỉ áp dụng, để sudo lệnh trong cửa sổ đầu cuối. Ví dụ, khi bạn cố gắng cài đặt một gói trong trung tâm phần mềm, bạn sẽ được nhắc chèn mật khẩu của mình, giống như bạn có thể thấy trong Ảnh chụp màn hình tiếp theo.

gui password prompt

Tôi nghĩ rằng đây là những gì bạn muốn.


438
2018-06-06 13:20



Bạn nên sử dụng sudo visudo thay vì chỉnh sửa trực tiếp. Thay đổi quyền của sudoers cũng có thể tự khóa. Khi chỉnh sửa bằng vim, sử dụng :wq! để ghi vào các tệp chỉ đọc và thoát trình soạn thảo. Theo cách đó, các điều khoản 644 là không cần thiết. - Lekensteyn
Đây là một nguy cơ bảo mật nghiêm trọng, bất kỳ ai tiếp quản bất kỳ tài khoản nào có quyền sudo đều có thể kiểm soát toàn bộ hệ thống và khóa thêm bất kỳ quyền truy cập nào vào máy tính này, nghiêm túc không được khuyến nghị. - Bruno Pereira
@ wil93 bạn đang thiếu điểm: tập lệnh yêu cầu sudo install crapware sẽ không yêu cầu mật khẩu trong trường hợp này và có thể làm hỏng mọi thứ bạn có, và bạn không cần phải vật lý bên cạnh máy để phân phối các tập lệnh lần cuối tôi kiểm tra ... Đây chỉ là một ví dụ. - Bruno Pereira
@BrunoPereira Nếu bạn có kế hoạch chạy các tập lệnh không tin cậy thì cái đó là nguy cơ bảo mật (ngay cả khi sudo yêu cầu mật khẩu, một tập lệnh độc hại luôn có thể làm rm -rf ~rối tung một số thứ lên). Nói chung, tôi sẽ không gọi «rủi ro bảo mật nghiêm trọng» việc loại bỏ dấu nhắc mật khẩu đơn giản khỏi sudo. - wil93
Đồng ý với @ wil93. Khi chạy một kịch bản không đáng tin cậy, mật khẩu đầu vào không nhiều hơn một cơ hội để hủy bỏ quá trình, trong khi tôi nghi ngờ nó là vô dụng đối với hầu hết mọi người. Vấn đề là bạn biết kịch bản từ đâu và nó hoạt động như thế nào. - Chad


Gốc sudo timeouts là cách dễ nhất và an toàn nhất để làm điều này. Tôi sẽ trình bày tất cả các ví dụ nhưng được cảnh báo rằng nó rất nguy hiểm theo bất kỳ cách nào bạn làm điều này mặc dù cách này an toàn hơn nhiều:

sudo visudo

Thao tác này sẽ mở một trình soạn thảo và trỏ nó vào tệp sudoers - Ubuntu mặc định là nano, các hệ thống khác sử dụng Vi. Bạn hiện là người dùng siêu chỉnh sửa một trong những tệp quan trọng nhất trên hệ thống của bạn. Không căng thẳng!

(Vi hướng dẫn cụ thể được ghi chú với (vi!). Bỏ qua những điều này nếu bạn đang sử dụng nano.)

Sử dụng các phím mũi tên để di chuyển đến cuối Defaults hàng.

(vi!) nhấn phím A (vốn "a") để di chuyển ở cuối dòng hiện tại và vào chế độ chỉnh sửa (nối thêm sau ký tự cuối cùng trên dòng).

Bây giờ gõ:

,timestamp_timeout=X

trong đó X là hết thời gian chờ trong vài phút. Nếu bạn chỉ định 0, bạn sẽ luôn được hỏi mật khẩu. Nếu bạn chỉ định giá trị âm, thời gian chờ sẽ không bao giờ hết hạn. Ví dụ. Defaults env_reset,timestamp_timeout=5.

(vi!) nhấn Escape để trở về chế độ lệnh. Bây giờ, nếu bạn hài lòng với chỉnh sửa của mình, hãy nhập :w  Đi vào để viết tệp và :q  Đi vào để thoát khỏi vi. Nếu bạn mắc lỗi, có lẽ cách dễ nhất là làm lại từ đầu, để thoát mà không lưu (nhấn Bỏ trốn để vào chế độ lệnh) và sau đó gõ: q! Đi vào.

Đánh Ctrl+X, sau đó Y, sau đó Đi vào để lưu tệp của bạn và thoát khỏi nano.

Bạn có thể muốn đọc các sudoers và vi trang hướng dẫn sử dụng để biết thêm thông tin.

man sudoers
man vi

Đặt lại giá trị thời gian chờ bằng cách sử dụng:

sudo -k

Các hướng dẫn này là xóa dấu nhắc mật khẩu khi sử dụng lệnh sudo. Lệnh sudo sẽ vẫn cần được sử dụng để truy cập root.

Chỉnh sửa tệp sudoers

Mở một cửa sổ Terminal. Gõ vào sudo visudo. Thêm dòng sau vào END của tập tin (nếu không ở cuối nó có thể được vô hiệu hóa bởi các mục sau):

<username> ALL=NOPASSWD: ALL

Thay thế <username> với tên người dùng của bạn (không có <>). Điều này giả định rằng Ubuntu đã tạo một nhóm có cùng tên với tên người dùng của bạn, đó là điển hình. Bạn có thể luân phiên sử dụng nhóm người dùng hoặc bất kỳ nhóm nào khác mà bạn đang tham gia. Chỉ cần đảm bảo bạn ở trong nhóm đó. Điều này có thể được kiểm tra bằng cách vào System -> Administration -> Users and Groups.

Thí dụ:

michael ALL=NOPASSWD: ALL

Nhập ^ X (Ctrl+X) để thoát. Điều này sẽ nhắc một tùy chọn để lưu tệp, nhập Y để lưu.

Đăng xuất, và sau đó đăng nhập trở lại. Điều này sẽ cho phép bạn chạy lệnh sudo mà không bị nhắc nhập mật khẩu.

Tài khoản gốc

Bật tài khoản gốc

Việc kích hoạt tài khoản gốc là hiếm khi cần thiết. Hầu hết mọi thứ bạn cần làm với tư cách là quản trị viên của một hệ thống Ubuntu có thể được thực hiện thông qua sudo hoặc gksudo. Nếu bạn thực sự cần đăng nhập root liên tục, cách tốt nhất là mô phỏng một shell đăng nhập root bằng cách sử dụng lệnh sau đây:

sudo -i

Tuy nhiên, nếu bạn phải cho phép đăng nhập root, bạn có thể làm như sau:

sudo passwd root

Đang vô hiệu hóa tài khoản gốc của bạn

Nếu vì lý do nào đó bạn đã kích hoạt tài khoản root của bạn và muốn vô hiệu hóa nó một lần nữa, hãy sử dụng lệnh sau trong terminal:

sudo passwd -dl root

Nhóm sudo toàn hệ thống

root$ echo "%sudo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

Đăng xuất và sau đó quay lại.

Đặt lại thời gian chờ của sudo

Bạn có thể đảm bảo rằng sudo yêu cầu mật khẩu lần sau bằng cách chạy:

sudo -k

30
2017-10-30 01:15



Tôi đã đăng bài này trước khi tôi thêm vào, cho một hệ thống rộng rãi để làm điều này và những người khác đọc ở đây: - user209328
Đây là một câu trả lời muộn, nhưng là toàn diện nhất về các tùy chọn nó mang lại cho bạn. - jenming


Cách ưu tiên để cấp quyền cá nhân (hoặc nhóm) sẽ là thêm tệp dưới /etc/sudoers.d

Điều này ngăn cách các thay đổi cục bộ từ chính sách mặc định và tiết kiệm thời gian trong trường hợp thay đổi tệp sudoers phân phối.

Ví dụ:

sudo echo "username ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/username

Sẽ làm cho nó rất rõ ràng mà người dùng được cấp phép.

Tương tự, có thể sử dụng một tệp để quản lý nhiều chỉ thị:

sudo echo "username ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers.d/local

Xin vui lòng xem /etc/sudoers.d/README  để biết thêm thông tin.


10
2018-02-01 15:54



lệnh echo thất bại, mặc dù tôi là root. nhưng, tôi đã thêm tập tin và chỉnh sửa nó trực tiếp và điều này làm việc trên ubuntu mới nhất (trong khi thêm người dùng vào sudoers trực tiếp không!) - scape
Cách đúng là làm điều đó với tee chỉ huy. - woto


Đẹp một lớp lót để loại bỏ sudo nhắc nhở cho người dùng hiện tại

sudo bash -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" | (EDITOR="tee -a" visudo)'

5
2018-06-27 17:50



Tôi nghĩ bạn có thể làm: echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo env EDITOR="tee -a" visudo, chỉ có visudo nhu cầu sudo sau khi tất cả (và thậm chí env sẽ không cần thiết trong cấu hình mặc định, IIRC). - muru
có rất nhiều điều có thể xảy ra ở đây (tất cả các lỗi do người dùng, tất nhiên), được ưu tiên, theo ý kiến ​​rất khiêm tốn của tôi, để chỉnh sửa trực tiếp tệp sudoer (sudo visudo), trong khi kiểm tra kết quả (với trình chỉnh sửa vẫn mở), đối với những người dùng mới có thể bị cám dỗ để thử "một lớp lót" này. - michael
Cảm ơn vì bạn đã phản hồi! Tôi đã nhanh chóng cố gắng để script-ify việc loại bỏ các dấu nhắc mật khẩu sudo trong máy ảo thử nghiệm dễ bay hơi của tôi. Hãy đề xuất cải tiến :) - Eric Landry


Tất nhiên những gì bạn muốn làm không được khuyến khích. Sau một thời gian, mặc dù nhập sudo trở nên tự động đến mức độ hữu dụng của nó giảm đi.

Một cách tiếp cận khác là để lại tệp sudoers của bạn và, trong khi làm điều gì đó phức tạp với hàng trăm máy chủ của bạn, hãy nhập sudo bash. Điều đó sẽ cung cấp cho bạn một trình bao sẽ được xác thực là root cho đến khi bạn thoát khỏi nó.


4
2018-06-06 13:27



sudo -s hoặc là sudo -i có lẽ là cả hai ý tưởng tốt hơn sudo bash, bởi vì họ đảm bảo môi trường là lành mạnh và mọi thứ. - Darael
"sane và mọi thứ" không phải là thường trong lĩnh vực "ý tưởng tốt hơn", ai đó có thể đưa ra một lời giải thích kỹ thuật về lý do tại sao sudo -s hoặc sudo -i là tốt hơn so với sudo bash? (Chỉnh sửa: Đây là câu hỏi liên quan askubuntu.com/questions/376199/… ) - Nuzzolilo
một số sudo lệnh (đặc biệt là suy nghĩ của sudo pip ...) yêu cầu sudo -H (đặt HOME) để lệnh chạy đúng cách. Trong các trường hợp khác, sudo -E (bảo vệ env) có thể được yêu cầu. Đang chạy sudo bash có lẽ sẽ làm việc trong hầu hết các trường hợp, nhưng không phải trong tất cả, và khi nó không, nó sẽ không được rõ ràng là tại sao. - michael
sudo su là cách truyền thống để chuyển đổi vai trò và bắt đầu hành động quản trị viên của sys. - user1656671


Từ Siêu người dùng đến một câu trả lời hay:

Sử dụng nút chuyển đổi -S đọc mật khẩu từ STDIN:

echo <password> | sudo -S <command>

Thay thế <password> với mật khẩu của bạn.


1
2018-05-17 00:12