Tóm tắt nội dung
Hẳn là có rất nhiều người vẫn đang sử dụng sudo và su trên terminal hàng ngày để thực thi các task khác nhau. Trong khi sudo chạy câu lệnh với quyền quản trị (root) thì su chạy một cửa sổ shell mới của root. Cả sudo và su đều được sử dụng để chạy bằng quyền root, nhưng theo các cách khác nhau.
Người dùng linux nhìn thấy sudo và su trên terminal khá nhiều mỗi ngày. Nếu bạn là một newbie của giáo phái linux, bạn có thể sẽ bị mê hoặc bởi những gì bạn làm được với sudo và su. Như đã nói ở trên, sudo và su tiếp cận quyền root theo 2 cách khác nhau. Tuy nhiên chúng khác nhau như thế nào? Để hiểu được sự khác nhau này, trước tiên chúng ta cần tìm hiểu về quyền root và người dùng root. Nói ngắn gọn, root là quyền hạn tối đa bạn có thể đạt được, cho phép bạn làm bất cứ điều gì với hệ thống. Bên cạnh việc người dùng root có thể cài đặt/ xóa một số package, quyền root còn hoạt động như một lớp bảo mật bổ sung.
Lưu ý:
Những câu lệnh sử dụng trong bài viết sẽ hơi khác nhau trên các nền linux khác nhau. Cụ thể hơn, các ví dụ trong bài viết này là trên các distro nền Ubuntu.
Điểm khác biệt then chốt giữa sudo và su
Câu lệnh su đại diện cho quyền hạn cao nhất của người dùng (root user). Nó được thực thi trên hệ thống linux mà không cần bất cứ option nào. Người dùng chỉ cần đơn giản thêm password của tài khoản root. Trên cửa sổ terminal, su cho phép truy cập vào các tài khoản người dùng khác, sử dụng password được yêu cầu. Đó là lý do tại sao su cũng đại diện cho các người dùng thay thế hay người dùng switch. Chỉ đơn giản gõ su, tiếp đó nhập tên tài khoản và password là bạn đã có toàn quyền.
sudo account
[Password for account] []
Xong việc, gõ exit để thoát.
exit
Tóm lại, su sẽ khởi động một cửa sổ shell mới của quyền root.
Ở một cách tiếp cận khác, sudo chạy dòng lệnh sau khi được root cho phép. Khi người dùng chạy dòng lệnh sudo, người dùng phải nhập tài khoản và password hiện tại để chạy câu lệnh như là một người dùng root.
sudo command
Sudo sử dụng một file config (/etc/sudoers) để xác định quyền của các người dùng khác nhau. Để chi tiết hơn, bạn có thể xem ở bài viết của Devin, Sudo in Linux.
Sau khi so sánh, ta thấy sudo để người dùng sử dụng tài khoản của họ để chạy câu lệnh hệ thống. Su thì bắt buộc người dùng chia sẻ root password với các người dùng khác. Đó chính là lý do tại sao sudo không khởi động bất kì một cửa sổ shell mới nào.
Sử dụng sudo và su trong các distro linux
Ubuntu là bản phân phối đầu tiên của Linux sử dụng mặc định sudo. Khi người dùng cài Ubuntu, tài khoản root được tạo tự động không có password, do đó người dùng phải tạo một password mới để có thể login vào root. Trên Ubuntu và các Distro nền Debian khác, người dùng cần phải ghi nhớ password. Theo cách đó, Ubuntu khuyến khích người dùng tránh login vào root. Trên nền Fedora, người dùng cần tạo password khác nhau cho root và tài khoản người dùng.
Có một cách kết hợp thú vị của sudo su mà người dùng Linux có thể thích thú. Đầu tiên, sudo sẽ hỏi password, và sau khi nhập password, nó sẽ chạy câu lệnh tiếp theo như một người dùng root. Với su, để chạy câu lệnh đơn với quyền root, sử dụng cú pháp:
su -c "command"
Bình luận