Trang chủ » làm thế nào để » Sự khác biệt giữa Sudo và Su trong Linux là gì?

    Sự khác biệt giữa Sudo và Su trong Linux là gì?

    Nếu bạn là người dùng Linux, có lẽ bạn đã thấy các tài liệu tham khảo cho cả sudo và su. Các bài viết ở đây về How-To Geek và các nơi khác hướng dẫn người dùng Ubuntu sử dụng sudo và người dùng phân phối Linux khác để sử dụng su, nhưng sự khác biệt là gì?

    Sudo và su là hai cách khác nhau để có được quyền root. Mỗi chức năng theo một cách khác nhau và các bản phân phối Linux khác nhau sử dụng các cấu hình khác nhau theo mặc định.

    Người dùng root

    Cả su và sudo đều được sử dụng để chạy các lệnh có quyền root. Người dùng root về cơ bản tương đương với người dùng quản trị viên trên Windows - người dùng root có quyền tối đa và có thể làm bất cứ điều gì với hệ thống. Người dùng bình thường trên Linux chạy với quyền bị giảm - ví dụ: họ không thể cài đặt phần mềm hoặc ghi vào thư mục hệ thống.

    Để làm điều gì đó yêu cầu các quyền này, bạn sẽ phải có được chúng bằng su hoặc sudo.

    Su vs Sudo

    Lệnh su chuyển sang siêu người dùng - hoặc người dùng root - khi bạn thực thi nó mà không có tùy chọn bổ sung. Bạn sẽ phải nhập mật khẩu của tài khoản root. Tuy nhiên, đây không phải là tất cả các lệnh su - bạn có thể sử dụng nó để chuyển sang bất kỳ tài khoản người dùng nào. Nếu bạn thực hiện su bob lệnh, bạn sẽ được nhắc nhập mật khẩu của Bob và trình bao sẽ chuyển sang tài khoản người dùng của Bob.

    Khi bạn đã chạy xong các lệnh trong shell root, bạn nên gõ lối thoát hiểm rời khỏi vỏ gốc và quay lại chế độ đặc quyền giới hạn.

    Sudo chạy một lệnh duy nhất với quyền root. Khi bạn thực thi lệnh sudo, hệ thống nhắc bạn nhập mật khẩu tài khoản người dùng hiện tại của bạn trước khi chạy chỉ huy là người dùng root. Theo mặc định, Ubuntu nhớ mật khẩu trong mười lăm phút và sẽ không yêu cầu nhập lại mật khẩu cho đến khi hết mười lăm phút.

    Đây là một sự khác biệt chính giữa su và sudo. Su chuyển bạn đến tài khoản người dùng root và yêu cầu mật khẩu của tài khoản root. Sudo chạy một lệnh duy nhất với quyền root - nó không chuyển sang người dùng root hoặc yêu cầu mật khẩu người dùng root riêng.

    Ubuntu so với các bản phân phối Linux khác

    Lệnh su là cách truyền thống để có được quyền root trên Linux. Lệnh sudo đã tồn tại trong một thời gian dài, nhưng Ubuntu là bản phân phối Linux phổ biến đầu tiên chỉ sử dụng sudo theo mặc định. Khi bạn cài đặt Ubuntu, tài khoản root chuẩn được tạo, nhưng không có mật khẩu nào được gán cho nó. Bạn không thể đăng nhập bằng root cho đến khi bạn gán mật khẩu cho tài khoản root.

    Có một số lợi thế khi sử dụng sudo thay vì su theo mặc định. Người dùng Ubuntu chỉ phải cung cấp và ghi nhớ một mật khẩu duy nhất, trong khi Fedora và các bản phân phối khác yêu cầu bạn tạo mật khẩu tài khoản người dùng và tài khoản gốc riêng biệt trong khi cài đặt.

    Một ưu điểm khác là nó không khuyến khích người dùng đăng nhập với tư cách là người dùng root - hoặc sử dụng su để lấy shell root - và giữ cho shell root mở để thực hiện công việc bình thường của họ. Chạy ít lệnh hơn khi root tăng bảo mật và ngăn ngừa các thay đổi toàn hệ thống tình cờ.

    Các bản phân phối dựa trên Ubuntu, bao gồm cả Linux Mint, cũng sử dụng sudo thay vì su theo mặc định.

    Một vài thủ thuật

    Linux rất linh hoạt, do đó, sẽ không mất nhiều công sức để làm cho su hoạt động tương tự như sudo - hoặc ngược lại.

    Để chạy một lệnh đơn với tư cách người dùng root bằng su, hãy chạy lệnh sau:

    su -c 'lệnh'

    Điều này tương tự như chạy một lệnh với sudo, nhưng bạn sẽ cần mật khẩu của tài khoản gốc thay vì mật khẩu của tài khoản người dùng hiện tại của bạn.

    Để có được một vỏ gốc tương tác đầy đủ với sudo, hãy chạy sudo -i.

    Bạn sẽ phải cung cấp mật khẩu của tài khoản người dùng hiện tại thay vì mật khẩu của tài khoản gốc.

    Kích hoạt người dùng root trong Ubuntu

    Để kích hoạt tài khoản người dùng root trên Ubuntu, hãy sử dụng lệnh sau để đặt mật khẩu cho nó. Hãy nhớ rằng Ubuntu khuyên bạn nên chống lại điều này.

    gốc sudo passwd

    Sudo sẽ nhắc bạn nhập mật khẩu tài khoản người dùng hiện tại của bạn trước khi bạn có thể đặt mật khẩu mới. Sử dụng mật khẩu mới của bạn để đăng nhập bằng root từ dấu nhắc đăng nhập đầu cuối hoặc bằng lệnh su. Bạn không bao giờ nên chạy một môi trường đồ họa đầy đủ với tư cách là người dùng root - đây là một thực tiễn bảo mật rất kém và nhiều chương trình sẽ từ chối hoạt động.

    Thêm người dùng vào tệp Sudoers

    Chỉ các tài khoản loại quản trị viên trong Ubuntu mới có thể chạy các lệnh bằng sudo. Bạn có thể thay đổi loại tài khoản người dùng từ cửa sổ cấu hình Tài khoản người dùng.

    Ubuntu tự động chỉ định tài khoản người dùng được tạo trong khi cài đặt làm tài khoản quản trị viên.

    Nếu bạn đang sử dụng một bản phân phối Linux khác, bạn có thể cấp quyền cho người dùng sử dụng sudo bằng cách chạy thị giác lệnh với quyền root (vì vậy hãy chạy su đầu tiên hoặc sử dụng su -c).

    Thêm dòng sau vào tập tin, thay thế người dùng với tên tài khoản người dùng:

    người dùng TẤT CẢ = (TẤT CẢ: TẤT CẢ) TẤT CẢ

    nhấn Ctrl-X và sau đó Y để lưu tập tin. Bạn cũng có thể thêm người dùng vào một nhóm được chỉ định trong tệp. Người dùng trong các nhóm được chỉ định trong tệp sẽ tự động có các đặc quyền sudo.

    Phiên bản đồ họa của Su

    Linux cũng hỗ trợ các phiên bản đồ họa của su, yêu cầu mật khẩu của bạn trong môi trường đồ họa. Ví dụ: bạn có thể chạy lệnh sau để nhận lời nhắc mật khẩu đồ họa và chạy trình duyệt tệp Nautilus với quyền root. nhấn Alt-F2 để chạy lệnh từ hộp thoại chạy đồ họa mà không khởi chạy thiết bị đầu cuối.

    gksu nautilus

    Lệnh gksu cũng có một vài thủ thuật khác - nó bảo toàn các cài đặt máy tính để bàn hiện tại của bạn, vì vậy các chương trình đồ họa sẽ không phù hợp khi bạn khởi chạy chúng như một người dùng khác. Các chương trình như gksu là cách ưa thích để khởi chạy các ứng dụng đồ họa với quyền root.

    Gksu sử dụng phụ trợ dựa trên su hoặc sudo, tùy thuộc vào bản phân phối Linux bạn đang sử dụng.


    Bây giờ bạn nên chuẩn bị để gặp cả su và sudo! Bạn sẽ gặp cả hai nếu bạn sử dụng các bản phân phối Linux khác nhau.