Làm thế nào để sudo quyết định có yêu cầu mật khẩu hay không, khi được cung cấp một lệnh không thực sự cần `sudo`?


10

Khi áp dụng sudomột lệnh không thực sự cần sudo,

  • đôi khi nó không hỏi tôi mật khẩu. Ví dụ dưới của tôi $HOME, sudo ls.

  • Nhưng tôi nhớ rằng nó thực hiện cho một số lệnh khác, mặc dù tôi quên cái nào.

Vì vậy, tôi đã tự hỏi làm thế nào sudoquyết định có nên yêu cầu mật khẩu hay không, khi được đưa ra một lệnh không thực sự cần sudo? Có một số quy tắc trong /etc/sudoersviệc chỉ định rằng?

Vấn đề thực sự của tôi là khi tôi sử dụng du, đôi khi nó hiển thị "quyền bị từ chối" đối với một số thư mục, và đôi khi không, có lẽ vì tôi không có quyền trên một số thư mục? Tôi áp dụng sudocho dubất kể, và nghĩ rằng tôi sẽ được yêu cầu nhập mật khẩu bất kể, nhưng thực tế không phải trên các thư mục của riêng tôi.


15
Quyết định xem một chương trình sẽ cố gắng làm điều gì đó mà chỉ root mới có thể làm hay truy cập vào tệp mà người dùng yêu cầu bị cấm truy cập, mà không thực sự chạy chương trình, là vấn đề Ngừng ngụy trang. Vì vậy, bạn có thể chắc chắn rằng đó không phải là những gì sudo đang làm.
zwol

2
+1 vì mặc dù câu hỏi dựa trên một quan niệm sai lầm, các triệu chứng được giải thích rõ ràng và nó có một câu trả lời rõ ràng.
dcorking

Câu trả lời:


22

Trong một cấu hình điển hình, lệnh không liên quan. Bạn cần nhập mật khẩu của bạn lần đầu tiên bạn sử dụng sudo và bạn không cần mật khẩu của mình trong vỏ cụ thể đó trong 15 phút tiếp theo.

Từ góc nhìn của máy tính, không có lệnh nào giống như lệnh mà cần sudo. Bất kỳ người dùng có thể cố gắng để chạy bất kỳ lệnh. Kết quả có thể không có gì ngoài một thông báo lỗi, chẳng hạn như Perm Perm Perm bị từ chối, hoặc Không có tập tin hoặc thư mục nào như vậy, nhưng luôn có thể chạy lệnh.

Ví dụ: nếu bạn chạy dutrên cây thư mục có nội dung mà bạn không có quyền truy cập, bạn sẽ gặp lỗi về quyền. Đó là những gì mà sự cho phép của người Viking đã từ chối. Nếu bạn chạy sudo du, sudo chạy dudưới quyền root, do đó bạn không gặp phải lỗi cấp phép (đó là điểm của tài khoản root: root¹ luôn có quyền). Khi bạn chạy sudo du, duchạy như root và hoàn toàn sudokhông liên quan sau khi duđã bắt đầu. Việc du có gặp phải lỗi cấp phép hay không hoàn toàn không liên quan đến cách thức hoạt động của sudo.

Có những lệnh cần sudo để làm một cái gì đó hữu ích . Hữu ích là một khái niệm của con người. Bạn cần sử dụng sudo (hoặc một số phương thức khác để chạy lệnh dưới dạng root) nếu lệnh thực hiện điều gì đó hữu ích khi chạy bằng root chứ không phải khi chạy dưới tài khoản của bạn.

Cho dù sudo yêu cầu mật khẩu của bạn phụ thuộc vào hai điều.

  1. Dựa trên cấu hình, sudo quyết định xem bạn có cần xác thực hay không. Theo mặc định, sudo yêu cầu mật khẩu. Điều này có thể được tắt theo nhiều cách, bao gồm đặt authenticatetùy chọn thành false và có quy tắc áp dụng với NOPASSWDthẻ.
  2. Nếu sudo yêu cầu mật khẩu của bạn, nó có thể là nội dung để sử dụng một giá trị được lưu trữ. Điều đó ổn vì lý do sudo cần mật khẩu của bạn không phải là để xác thực người gọi nó (sudo biết người dùng đã gọi nó là gì), nhưng để xác nhận rằng đó vẫn là bạn trong các lệnh chứ không phải ai đó kiểm soát bàn phím của bạn. Theo mặc định, sudo sẵn sàng tin rằng bạn vẫn ở trong các lệnh nếu bạn đã nhập mật khẩu của mình dưới 15 phút trước (điều này có thể được thay đổi với timeouttùy chọn). Bạn cần phải nhập mật khẩu trong cùng một thiết bị đầu cuối (để nếu bạn vẫn đăng nhập trên một thiết bị đầu cuối thì hãy để thiết bị đầu cuối đó không giám sát và sau đó sử dụng thiết bị đầu cuối khác, ai đó có thể 'tty_tickets

¹ gần, nhưng điều đó vượt ra ngoài phạm vi của chủ đề này.


Có thể có các tệp có bit thực thi được đặt chỉ dành cho root chứ không phải cho các tệp khác. Điều này có thể là unter "cần root để thực thi". (Chỉ cần nitpicking.)
Paŭlo Ebermann

@ PaŭloEbermann Tôi đã viết bất kỳ người dùng nào cũng có thể cố gắng chạy bất kỳ lệnh nào để tránh nitpicking về trường hợp (hiếm) đó. Luôn có một nitpicker :(
Gilles 'SO- ngừng trở nên xấu xa'

45

sudokhông biết lệnh mà nó yêu cầu chạy có cần chạy như một số người dùng khác (thường là root) hay không, tất cả những gì nó biết là cấu hình của nó. Điều đó xác định người dùng nào được phép chạy sudo, với những gì người dùng nhắm vào mục tiêu và các lệnh nào; nó cũng xác định xem có cần mật khẩu hay không, mật khẩu nào và có giữ mã thông báo xác thực không.

Nếu bạn đang sử dụng cấu hình Debian mặc định, thì cái sau rất có thể là những gì liên quan ở đây: sudosẽ hỏi bạn mật khẩu của bạn lần đầu tiên bạn sử dụng nó trong bất kỳ thiết bị đầu cuối nào, sau đó nó sẽ giữ mã thông báo xác thực trong một khoảng thời gian nhất định. Nếu bạn sử dụng lại sudotrong cùng một thiết bị đầu cuối trong khung thời gian đó, nó sẽ không nhắc bạn nhập mật khẩu.


Cảm ơn. Bạn có nghĩa là sudo du /path/to/some/dirnên luôn luôn cần mật khẩu của tôi, hoặc không bao giờ, bất kể /path/to/some/dir?
Tim

12
Đúng. Nó sẽ luôn cần mật khẩu của bạn (hoặc không). Rõ ràng, nếu nó cần mật khẩu của bạn nhưng đã lưu nó vào bộ đệm, nó sẽ không nhắc bạn nhập nó.
dr_

5
Nói đúng ra nó có thể phụ thuộc vào đường dẫn, bởi vì /etc/sudoerscó thể chỉ định các lệnh và đối số của chúng. Tuy nhiên, nếu bạn chưa thêm bất cứ thứ gì như vậy vào sudoers(và nếu bạn có, tôi hy vọng bạn sẽ biết về nó), các đối số sẽ không thành vấn đề (cũng sẽ không có lệnh nếu bạn có quyền truy cập chung vào root thông qua sudo ).
Stephen Kitt

19
sudokhông lưu trữ mật khẩu của bạn trong bộ đệm, chỉ thông tin rằng danh tính của bạn đã được xác minh một lần bằng kiểm tra mật khẩu. Vì sudolà một chương trình gốc setuid, nó đã có tất cả các quyền mà nó cần để chạy mọi thứ như bất kỳ ai - nhưng nó được tin tưởng chỉ cho phép người dùng sử dụng chính xác như được chỉ định trong sudoerstệp và từ chối tất cả các nỗ lực khác để sử dụng nó . Đó là lý do tại sao điều quan trọng sudolà một chương trình nhỏ và được nghiên cứu rất kỹ.
telcoM

6

một lệnh không thực sự cần sudo

Nó không phải là một lệnh cần hoặc không cần sudo. Khi bạn chạy

sudo -u user command

hệ thống thực thi commandnhư là user.

Việc gọi có thành công hay không và liệu mật khẩu có được hỏi hay không, tùy thuộc vào chính sách bảo mật sudoers(thường được cấu hình trong /etc/sudoers).

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.