Làm thế nào để tôi thực hiện sudo yêu cầu mật khẩu root?


25

Khi tôi chạy sudonhư một người dùng không có đặc quyền bình thường, nó sẽ hỏi mật khẩu của tôi chứ không phải mật khẩu gốc. Điều đó thường thuận tiện, nhưng nó làm giảm lượng thông tin mà ai đó sẽ phải có để chạy các lệnh với quyền root. Vậy làm thế nào tôi có thể sudoyêu cầu mật khẩu root thay vì gọi mật khẩu của người dùng?

Tôi biết nó sẽ được thực hiện với một dòng trong /etc/sudoers, nhưng dường như tôi không bao giờ có thể phân tích chính xác ngữ pháp BNF trong trang hướng dẫn để tìm ra chính xác những gì cần viết.


Tôi khuyên bạn nên hạn chế các lệnh được cho phép là người dùng không root để bạn không cần lo lắng về việc lộ các lệnh tùy ý.
Slartibartfast

@slartibartfast: nhưng điều gì xảy ra khi tôi cần chạy một lệnh với quyền root không có trong danh sách được chấp thuận trước?
David Z

Câu trả lời:


25

Ok, đây là một lần nữa để bạn có thể đặt dấu kiểm.

Trong /etc/sudoers, thêm dòng này:

Defaults rootpw

để bật cờ rootpw, làm sudo yêu cầu mật khẩu root.


7
Bạn nên luôn luôn sử dụng visudolệnh thay vì chỉnh sửa /etc/sudoerstệp theo cách thủ công . visudoxác thực tệp để đảm bảo rằng nó chính xác trước khi lưu, vì vậy bạn không bị khóa sudo nếu bạn mắc lỗi cú pháp ... Askubfox.com/a/81054/166411
Colin D Bennett

5

Bạn cần bật rootpwcờ lên.


Như tôi đã nói, tôi chưa thể làm việc thông qua ký hiệu BNF trong trang man - vậy tôi sẽ chèn dòng nào /etc/sudoersđể bật cờ này?
David Z

2
Mặc định rootpw
Florian Diesch

@Florian: whaddya biết, thật dễ dàng :-) Nếu bạn đăng câu trả lời đó, bạn sẽ đánh dấu.
David Z

3

Tôi biết câu hỏi này đã cũ, nhưng đây là câu hỏi ngắn gọn nhất mà tôi đã tìm thấy cho trường hợp sử dụng này (là một tỷ lệ nhỏ, đúng, nhưng dù sao cũng hợp pháp và hữu ích trong kịch bản đúng).

Sau khi kết hợp tất cả các bước từ nhiều nguồn khác nhau - bao gồm nhiều câu trả lời cho câu hỏi này, các bước này hoạt động trên Ubuntu-Gnome 16.04 LTS:

  1. Đặt mật khẩu cho root
    • Đây là QUAN TRỌNG để làm FIRST ! (Ubuntu tự động không có mật khẩu cho người dùng ROOT do cấu hình bảo mật tiêu chuẩn.
    • Nếu bạn không làm điều này trước tiên, bạn sẽ tự khóa mình khỏi việc truy cập các đặc quyền gốc. Điều này có thể được khắc phục bằng cách khởi động bằng Live Disk, gắn ổ cứng và chỉnh sửa tệp sudoers, nhưng tốt nhất là tránh điều đó.
    • Mở một thiết bị đầu cuối và nhập: sudo passwd
    • Đặt mật khẩu mới của bạn cho người dùng ROOT.
  2. Thay đổi cấu hình SUDO để yêu cầu mật khẩu root
    • SUDO yêu cầu người dùng yêu cầu quyền root
    • Thay vào đó, việc đặt cờ "rootpw" sẽ cho SUDO yêu cầu mật khẩu cho người dùng root.
    • Mở một thiết bị đầu cuối và nhập: sudo visudo
    • Điều này sẽ mở tệp "/ etc / sudoers"
    • Sau dòng "Mặc định" khác, thêm: Defaults rootpw
    • Lưu nó (giả sử bạn ở dạng nano, là mặc định, đây là CTRL + O)
    • Đóng tệp (CTRL + X) và thoát khỏi thiết bị đầu cuối
  3. Bạn đã hoàn tất!

Chỉ là một ghi chú nhanh - tôi cũng muốn đảm bảo rằng người dùng root không thể được sử dụng để đăng nhập từ đăng nhập đồ họa, và vì vậy đã tìm cách để loại trừ. Rõ ràng, người dùng root được loại trừ theo mặc định và không thể được sử dụng để đăng nhập thông qua đăng nhập đồ họa Gnome - đó là một điều rất tốt!


Bạn có thể đề xuất cải tiến để đảo ngược một downvote?
SRDC

Có vẻ như không sai.
Ruslan

1
Có thể vì một cấu hình đơn giản (và đang hoạt động) của: root ALL=(ALL) ALL Defaults targetpw ALL ALL=(ALL) ALL Cho phép root sudo cho mọi người dùng biết mật khẩu gốc. Thay đổi hoàn toàn hai dòng cuối cùng cho giải pháp của bạn Defaults rootpwgây ra khóa sudo. Bạn cũng cần thêm người dùng của mình để sudoersthích: myusername ALL=(ALL) ALLhoặc cung cấp các đặc quyền tương tự cho một nhóm và sau đó thêm myusernamevào nhóm đó.
Paul Parker

1

Một cấu hình phổ biến yêu cầu mật khẩu của mục tiêu (không phải những gì chúng ta muốn):

Defaults targetpw
ALL ALL=(ALL) ALL

Dòng thứ hai sẽ đọc thành tiếng như: "TẤT CẢ người dùng trên TẤT CẢ các máy chủ có thể mạo danh (TẤT CẢ) người dùng khi thực hiện TẤT CẢ các lệnh." và Defaults targetpwcó nghĩa là họ cần biết mật khẩu của người dùng mà họ đang mạo danh để làm như vậy.

Thay đổi cấu hình đơn giản này thành:

Defaults rootpw

sẽ không để bất kỳ người dùng hoặc nhóm nào có đặc quyền chạy các lệnh như một người dùng khác.

Một khả năng làm việc sẽ là:

Defaults rootpw
myuser ALL=(ALL) ALL

Nói một cách dễ hiểu, myusergiờ đây có khả năng chạy TẤT CẢ các lệnh như bất kỳ người dùng nào trên TẤT CẢ các máy chủ, miễn là mật khẩu gốc được biết đến.

Một khả năng làm việc khác sẽ là:

Defaults rootpw
%sudousers ALL=(ALL) ALL

Bất kỳ thành viên nào trong sudousersnhóm sẽ có khả năng chạy TẤT CẢ các lệnh như bất kỳ người dùng nào trên TẤT CẢ các máy chủ, miễn là mật khẩu gốc được biết đến. Để cho phép myuserchạy các lệnh sudo, sudouserscần phải được thêm vào các nhóm thứ cấp của nó.

su
usermod -a -G sudousers myuser
exit

Giải thích tuyệt vời. Chi tiết hơn từng bước tôi đã đăng (hoạt động dựa trên mặc định của Ubuntu).
SRDC

0

Bạn chỉ có thể tắt sudo và sử dụng su -c.


Bất tiện vì tôi phải nhập mật khẩu mỗi lần chạy. Trường hợp sử dụng ở đây là phải chạy nhiều lệnh với quyền root liên tiếp.
David Z

-1

Sử dụng

sudo su

sẽ cho phép bạn chạy nhiều lệnh như bạn muốn liên tiếp.


2
Ý tưởng tốt, nhưng trừ khi tôi thay đổi sudođể nhắc nhập mật khẩu gốc, điều này vẫn sẽ cho phép ai đó có quyền truy cập root bằng cách chỉ hiển thị một mật khẩu (không phải root). Vì vậy, nó không thực sự giải quyết mối quan tâm bảo mật đã đặt câu hỏi của tôi.
David Z

Thay vì sử dụng khả năng của sudo để giới hạn quyền truy cập của người dùng, bạn sẽ tiết lộ mật khẩu gốc của mình cho một số người dùng. Bạn cũng đang loại bỏ khả năng bảo mật máy chủ của mình bằng cách xóa mật khẩu khỏi root.
BillThor
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.