Dịch vụ sudo làm gì?


17

Theo như tôi biết và dường như những người khác có cùng quan điểm sudo là một lệnh thực thi một cái gì đó với các đặc quyền hành chính.

Tuy nhiên khi tôi chạy rcconftôi có thể thấy dòng này:

[*] sudo    Provide limited super user privileges to specific users

Vậy điểm nào với dịch vụ này? Hay đây thậm chí là một dịch vụ?


Đây là những gì tôi tìm thấy khi tìm kiếm google-> Sudo
adi

"Đây là nơi sudo xuất hiện - nó cho phép người dùng được ủy quyền (thường là người dùng" Quản trị "; để biết thêm thông tin, vui lòng tham khảo AddUsersHowto) để chạy một số chương trình dưới dạng Root mà không cần phải biết mật khẩu gốc." - Đó chính xác là những gì tôi nói trong câu hỏi của tôi.
s3v3n

3
Câu hỏi là về dịch vụ, không phải lệnh
s3v3n

Câu trả lời:


22

Câu trả lời ngắn

Để thu hồi các hành động xác thực 'được lưu trong bộ nhớ cache của người dùng khi khởi động lại. Đó không phải là một daemon, chỉ là một kịch bản chạy vào lúc khởi động.


Câu trả lời mở rộng

Bằng cách kiểm tra tệp init /etc/init.d/sudo'khởi động dịch vụ', bạn có thể dễ dàng thấy những gì nó đang làm:

case "$1" in
  start)
        # make sure privileges don't persist across reboots
        if [ -d /var/lib/sudo ]
        then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
        fi
        ;;
  stop|reload|restart|force-reload)
        ;;
  *)
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

Vì vậy, về cơ bản, nó chỉ cần chạm vào một số tệp /var/lib/sudokhi khởi động hệ thống để có dấu thời gian sửa đổi rất cũ. Do đó, các hành động xác thực được cấp 'lưu trữ' được thu hồi khi bắt đầu dịch vụ (xảy ra khi khởi động).

Một số chi tiết về /var/lib/sudothư mục và những dấu thời gian, xin vui lòng? Vâng, từ bản đồ của sudo(8):

[...]
Once a user has been authenticated, a time stamp is updated and the
user may then use sudo without a password for a short period of time
(15 minutes unless overridden in sudoers).
[...]
Since time stamp files live in the file system, they can outlive a
user's login session.  As a result, a user may be able to login, run a
command with sudo after authenticating, logout, login again, and run
sudo without authenticating so long as the time stamp file's
modification time is within 15 minutes (or whatever the timeout is set
to in sudoers).
[...]
/var/lib/sudo           Directory containing time stamps

Câu trả lời hoàn hảo :)
s3v3n

12

Tệp sudodịch vụ tồn tại để đảm bảo rằng các đặc quyền được gọi là không ở lại sau khi khởi động lại. Về cơ bản, nó đảm bảo rằng sau khi khởi động lại, người dùng bình thường được gọi là quyền root sẽ vẫn là người dùng bình thường.


Một lời giải thích chi tiết về sudo

Tất cả các giải thích dưới đây là để có được tất cả thông tin cho mọi người đọc câu hỏi này và sau đó giải thích những gì tập tin sudo trong thư mục dịch vụ đang làm ở đó.

Khi bạn cài đặt Ubuntu hoặc bất kỳ bản phân phối nào khác sử dụng sudosự khác biệt giữa việc là root và là người dùng sử dụng sudođể đạt được các đặc quyền "root like" (Đặc quyền quản trị hoặc siêu người dùng) là như sau:

Là gốc

  • Bạn không được yêu cầu nhập mật khẩu cho mỗi hoặc tất cả các lệnh bạn chạy trên một phiên
  • Không phải tất cả các lệnh bạn thực hiện sẽ được ghi lại theo mặc định
  • Hệ thống giả định rằng bạn biết bạn đang làm gì (Lý do tại sao nó không yêu cầu mật khẩu mỗi khi bạn thực thi lệnh)
  • Không có cơ hội thứ hai hoặc tùy chọn vào phút cuối nếu bạn mắc lỗi

Như sudo

  • Bạn được yêu cầu nhập mật khẩu cho mỗi hoặc tất cả các lệnh bạn chạy trên một phiên. Ví dụ: nếu bạn mở một thiết bị đầu cuối và thực thi một lệnh cần đặc quyền quản trị, nó sẽ hỏi mật khẩu một lần cho phiên đó cho đến khi bạn đóng thiết bị đầu cuối hoặc đăng xuất. Điều này thay đổi tùy thuộc vào lệnh bạn sử dụng và ở đâu. Nó có thể hỏi một lần hoặc nhiều lần.
  • Tất cả các lệnh bạn thực hiện sẽ được ghi lại vì bạn thực sự đang xin phép sử dụng lệnh siêu đặc quyền người dùng.
  • Hệ thống giả định rằng bạn đang xin phép tạm thời và quyền quản trị sẽ được cho mượn tạm thời (Cho đến khi bạn đăng xuất, đóng thiết bị đầu cuối, v.v.)
  • Bạn có một tùy chọn phút cuối để sửa chữa bất kỳ sai lầm. Điều này được thực hiện trong thời điểm bạn nhận được yêu cầu nhập mật khẩu.

Tại sao SUDO được tạo ra

Việc tạo SUDO đã được thực hiện bởi vì trong quá khứ, việc sử dụng root đã tạo ra nhiều vấn đề hơn các giải pháp. Người dùng đã có tất cả các quyền, điều này có nghĩa rằng nếu họ đã làm một số dọn dẹp mùa xuân và theo nghĩa đen xóa /usr, /lib/binthư mục (vì họ nghĩ rằng họ không cần thiết cho họ) .. đoán những gì sẽ xảy ra. Nhiều vấn đề trong quá khứ là do người dùng không biết sức mạnh họ có khi sử dụng root. Về cơ bản họ đã root nhưng không hiểu Linux, hệ thống phân cấp hệ thống tệp, tập tin nào là quan trọng, v.v. (Một cái gì đó giống như có ferrari và không biết lái xe ... trên đường cao tốc!)

SUDO cũng được sử dụng bởi các ứng dụng GUI (Giống như Trình quản lý cập nhật) khi chúng cần các đặc quyền quản trị tạm thời để làm một cái gì đó. Họ chỉ cần nó cho một số lượng lệnh cụ thể (Thông thường là 1) và sau đó họ quay lại đặc quyền cấp độ người dùng. Điều này là để tránh có quyền root mọi lúc và để tránh mắc lỗi nếu người dùng quyết định loại bỏ một phần quan trọng của hệ thống.

Ngoài ra, nó cung cấp bảo mật tốt hơn vì người dùng root bị tắt theo mặc định.

Cuối cùng, nếu bạn có Máy tính để bàn hoặc Máy chủ, bạn thực sự không muốn mọi người đều root, cũng không có tất cả các đặc quyền của quản trị viên. Ý tưởng rất tệ nếu em gái hoặc em trai của bạn bắt đầu tự hỏi điều gì sẽ xảy ra nếu /bootgặp DELchìa khóa. Đây là nơi sudođến để giảm cơ hội điều gì đó xấu xảy ra.

Cung cấp đặc quyền siêu người dùng giới hạn cho người dùng cụ thể nghĩa là gì?

Người dùng sudo hoặc sudoers thực sự có một tệp cấu hình cho họ biết mức độ giới hạn hoặc mở lệnh sudo cho một người dùng cụ thể. Tệp /etc/sudoerscó tất cả thông tin để giới hạn hoặc cấp quyền truy cập cho người dùng sudo. Theo mặc định, nó đi kèm với quyền truy cập vào mọi thứ, nhưng bạn có thể định cấu hình hoặc giới hạn điều này theo ý muốn.

Để biết thông tin về cách sử dụng loại tệp sudoers man sudoerstrong một thiết bị đầu cuối. Ví dụ, định dạng thông thường là:

NGƯỜI DÙNG HOST = THÔNG TIN

Ví dụ cyrex server1 = /bin/lssẽ cung cấp cho người dùng cyrex trong máy chủ truy cập1 để chạy lệnh ls.

Ví dụ cyrex server1 (root) = /bin/lssẽ cung cấp cho người dùng cyrex trong máy chủ truy cập1 để chạy lệnh ls với quyền root.

Ví dụ cyrex ALL = /bin/lssẽ cung cấp cho người dùng cyrex trong tất cả các máy chủ truy cập để chạy lệnh ls.

Ví dụ cyrex ALL = ALLsẽ cung cấp cho người dùng cyrex trong tất cả các máy chủ truy cập để chạy tất cả các lệnh.

Ví dụ luis ALL=(root) NOPASSWD: /bin/kill, /usr/bin/killallsẽ cho phép tôi chạy sudo cho killkillallcác lệnh dưới dạng root mà không yêu cầu mật khẩu.

nhập mô tả hình ảnh ở đây


2
Anh ta biết về những gì lệnh sudo làm. Câu hỏi là về một dịch vụ hệ thống cho sudo.
gertvdijk

1
@gertvdijk - Trước tiên tôi phải giải thích những điều cơ bản, vì không chỉ anh ấy sẽ xem xét câu hỏi này. Phần cuối cùng bao gồm lý do duy nhất tôi thấy cho tệp sudo trong thư mục dịch vụ.
Luis Alvarado

Cảm ơn Luis Alvarado - Người sói vì một thông tin phong phú như vậy và cảm ơn vì xkcd đã sửa đổi vui nhộn tham chiếu !!toán tử bang bang, nhưng dịch vụ (KHÔNG phải lệnh) sudolàm gì? Sẽ thật tuyệt nếu bạn có thể cập nhật câu trả lời của mình để thực sự trả lời câu hỏi.
s3v3n

1
Một chút quá mức cần thiết giải thích tất cả những điều đó chỉ cho một cụm từ cuối cùng, nhưng nó trả lời câu hỏi của tôi;)
s3v3n

1
@ LuisAlvarado-TheWolverine Haha, quyền của bạn. Thật tốt khi bạn trả lời tôi có, tôi đã làm .. Cảm ơn
Lucio
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.