Difference Between su and sudo and How to Configure sudo in Linux
Bài đăng này đã không được cập nhật trong 6 năm
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.
NOTE - Bài viết này phù hợp với các phiên bản của
Ubuntu
, tuy nhiên nó cũng có thể áp dụng với hầu hết các phiên bảnLinux
phổ biến khác
Key differences between sudo
and 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.
Ở 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
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.
What is ‘sudo’?
sudo
là 1 bộ nhịn phân setuid ở thư mục root, nó thực hiện các lệnh root thay cho người dùng được ủy quyền và người dùng cần phải nhập mật khẩu của họ để thực hiện lệnh hệ thống bằng sudo
Who can execute ‘sudo’?
Chúng ta có thể chạy lệnh /usr/sbin/visudo
để thêm/xóa danh sách người dùng có thể sử dụng sudo
$ sudo /usr/sbin/visudo
Nội dung của file /usr/sbin/visudo
sẽ trông giống như hình ảnh sau:
Mặc định, danh sách người dùng được sử dụng sudo
sẽ như sau:
root ALL=(ALL) ALL
Granting sudo Access
Trong nhiều trường hợp, System Administrator đặc biệt là người chưa có kinh nghiệm sử dụng chuỗi root ALL = (ALL) ALL
như một khuôn mẫu và cấp phép truy cập không hạn chế cho user có thể gây hại rất lớn.
Chỉnh sửa file /usr/sbin/visudo
giống như hình dưới đây thực sự rất nguy hiểm, trừ khi bạn rất tin tưởng những người dùng được liệt kê.
root ALL=(ALL) ALL
adam ALL=(ALL) ALL
tom ALL=(ALL) ALL
mark ALL=(ALL) ALL
Parameters of sudo
Một sudo
được cấu hình đúng cách rất linh hoạt và số lượng các lệnh cần được chạy có thể được cấu hình chính xác.
Cú pháp của dòng sudo
được cấu hình là:
User_name Machine_name=(Effective_user) command
Cú pháp trên bao gồm:
- User_name: Tên người dùng
- Machine_name: Tên máy chủ, trong đó lệnh
sudo
là hợp lệ. Nó rất hữu ích khi bạn có nhiều máy chủ. - (Effective_user): Là người được phép thực thi các lệnh. Cột này cho phép bạn cho phép người dùng thực thi các lệnh hệ thống
- Command: Lệnh hoặc tập lệnh mà người dùng có thể chạy
Reference
All rights reserved